반응형

자바를 통해 그래프를 그려주기 위해서는 그래프를 나타낼 수 있는 라이브러리를 불러오는 과정이 필요하다.

라이브러리는 https://knowm.org/open-source/xchart/ 링크를 통해 다운받을 수 있고 해당 라이브러리를 다운받으면

압축파일 형식의 파일을 다운받게 되는데 이에 대한 압축을 풀어주자.

 

압축을 풀면 위와 같이 .jar 형식의 파일이 존재하는데 이를 프로젝트에 불러올 수 있도록 셋팅해주자.

 

 

그리고 프로젝트 경로에 'buildpath' 폴더를 하나 생성해준 후 해당 경로에 .jar파일을 넣어주자.

 

 

그리고 java 프로젝트의 설정을 진행한다.

우선 1. 에 표시된 것과 같이 프로젝트명을 우클릭하고 Properties 항목을 클릭하면 창이 나타난다.

 

그럼 2~5의 과정을 진행해주고 6의 과정에서 앞에서 buildpath에 지정한 .jar형태의 라이브러리를 불러준다.

 

 

위와 같이 xchart-3.8.1.jar 라이브러리가 링크된 것을 확인할 수 있다.

 

그럼 이제 코드를 입력해보자.

import java.util.function.IntPredicate;
import org.knowm.xchart.QuickChart;
import org.knowm.xchart.SwingWrapper;
import org.knowm.xchart.XYChart;

public class graph {
	
	public static void main(String[] args) {
		double[] xData = new double[] {0.0, 1.0, 2.0};
		double[] yData = new double[] {2.0, 1.0, 0.0}; 
		
		XYChart chart = QuickChart.getChart("Sample Chart", "X", "Y", "y(x)", xData, yData);
		new SwingWrapper(chart).displayChart();
	}



}

결과는 아래와 같다.

 

 

그럼 이제 하나의 창에 여러개의 그래프를 그려보자.

 

import java.util.ArrayList;
import java.util.List;

import org.knowm.xchart.SwingWrapper;
import org.knowm.xchart.XYChart;
import org.knowm.xchart.XYChartBuilder;
import org.knowm.xchart.XYSeries;
import org.knowm.xchart.style.markers.SeriesMarkers;

public class multiple_graph {
	public static void main(String[] args) {
		int numCharts = 4;
		List charts = new ArrayList();
		for(int i=0; i<numCharts; i++) {
			XYChart chart = new XYChartBuilder().xAxisTitle("X").yAxisTitle("Y").width(600).height(400).build();
			chart.getStyler().setYAxisMin(-10.0);
			chart.getStyler().setYAxisMax(10.0);
			XYSeries series = chart.addSeries(""+i,  null, getRandomWalk(200));
			series.setMarker(SeriesMarkers.NONE);
			charts.add(chart);
		}
		new SwingWrapper(charts).displayChartMatrix();
	}
	
	private static double[] getRandomWalk(int numPoints) {
		double[] y = new double[numPoints];
		y[0] = 0;
		for(int i=1; i<y.length; i++) {
			y[i] = y[i-1]+Math.random()-.5;
		}
		return y;
	}

}

반응형
반응형

자바에서 사용할 수 있는 GUI 객체는 AWT(Abstract Windows Toolkit)과 스윙(Swing)으로 구분됩니다.

 

AWT는 운영 체제가 제공하는 자원을 이용하여 컴포넌트를 생성하게 되는데 예를들어 윈도우 환경에서 개발을 진행하고 있으면 GUI는 윈도우 기반의 자원을 사용하여 윈도우에 사용되는 아이콘의 모형이나 프레임을 사용할 수 있게 됩니다.

따라서, 여러 플랫폼에서 쉽게 컴포넌트를 제공할 수 있는 장점이 있지만 컴포넌트가 플랫폼에 종속적이므로 실행되는 플랫폼에 따라 컴포넌트의 모습이 달라질 수 있습니다.

 

스윙은 컴포넌트가 자바로 작성되어 있기 때문에 어떤 플랫폼에서도 일관된 화면을 보여줄 수 있게 됩니다.

 

그럼 스윙 기반으로 내용을 시작해보도록 하겠습니다.

import javax.swing.*;
public class FrameTest {
	public static void main(String[] args) {
		JFrame f = new JFrame("Frame Test");
		f.setSize(300, 200);
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		f.setVisible(true);
	}

}

우선 클래스를 생성한 후 위의 소스코드를 입력하면 다음과 같이 프레임을 출력하는 결과를 확인할 수 있습니다.

그럼 이제 코드 내용을 자세히 살펴보겠습니다.

 

import javax.swing.*;

스윙 클래스들은 javax.swing 패키지 안에 들어있습니다. 여기서 javax는 자바 확장 패키지(Java Extension Package)를 의미하고 따라서 스윙을 사용하려면 반드시 javax.swing 패키지를 포함해야 합니다.

 

JFrame f = new JFrame("Frame Test");

메인문 안에서 new연산자를 이용해 JFrame 객체를 생성합니다. JFrame 클래스 생성자의 매개변수는 프레임의 제목입니다(Frame Test). 결과적으로 참조변수 f가 생성된 객체를 가리키게 됩니다.

 

f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

사용자가 프레임의 오른쪽 상단에 있는 close 버튼을 눌렀을 경우에 어떠한 동작을 취할지 설정합니다. 기본 설정은 close 버튼을 누를 경우 현재 프레임만 닫히고 프로그램을 종료하지는 않습니다. 우리는 close버튼을 누를 경우 전체 프로그램을 종료하도록 설정하였습니다.

 

f.setVisible(true);

마지막 문장은 setvisible(true)을 호출합니다. 이것은 프레임을 화면에 나타내게 만듭니다. 만약 이 문장이 없다면 프레임은 생성되지만 사용사는 볼 수 없습니다. 이렇게 하는 이유는 화면에 프레임이 나타나지 않은 상태에서 다른 컴포넌트를 추가하기 위함입니다.

 

 

반응형
반응형

JAVA에 대한 예제들을 보며 공부를 하다가 다음과 같은 코드를 보게 되었습니다.

 

long형 변수 2개를 선언해주고 각각의 값을 지정해준 후 이를 출력해주는 간단한 코드입니다.

 

그런데 line8의 distance 값을 할당해주는 부분에서 365L을 곱해주는 부분이 있습니다.

 

수를 곱해주는 것이 아닌 수 뒤에 'L'은 무엇을 나타낼까요?

 

 

기본적으로 자바는 모든 정수를 int형으로 나타냅니다.

예를들어

int a = 1000000000000;

위의 코드는 컴파일이 되지 않습니다. int로 표현할 수 있는 범위를 벗어난 것이지요.

 

그럼 자료형의 범위를 넓혀봅시다.

long a = 1000000000000;

long 형 변수의 범위에는 포함되나 위의 코드 역시 에러를 발생시키게 됩니다.

 

자바는 수를 변수에 저장하기 전에 메모리에 저장하게 되는데 이때, 메모리에 저장하는 형태가 int형 입니다.

그리고 이러한 경우에 long 변수에 int범위 밖의 변수를 할당해주기 위해 값 뒤에 'L'을 붙여주게 됩니다.

 

long a = 1000000000000L;

 

그러면 자바에서 이 수를 int형이 아닌 long 형으로 나타내라고 지시를 하게 됩니다.

그리고 이 때, L을 접미사라고 표현합니다.

 

그럼 자바에서 사용되는 접미사는 'L'밖에 없을까요?

 

 

앞의 과정에서 정수가 처리되는 과정을 살펴봤으니 이제 실수가 처리되는 과정을 봅시다.

 

자바에서는 기본적으로 실수를 double형으로 나타냅니다.

따라서

float a = 1.2;

위의 코드를 살펴보면 자바에서는 먼저 1.2를 double형으로 나타내는데 이를 float변수에 저장할 경우 제대로 값을 저장하지 못한다는 문제가 발생합니다.(double형: 8바이트, float형: 4바이트)

 

그렇기에 float형 변수에 실수를 저장할 때에는 접미사 F를 붙여주게 됩니다.

 

즉, 위의 코드는

float a = 1.2F;

위와 같이 표현될 수 있고 JAVA에서는 기본적으로 실수를 double형으로 저장하기 때문에 기본적으로 실수 변수를 double로 선언하는 것이 좋습니다.

반응형
반응형

우선 자바를 다루기 위해 '자바 개발 도구(JDK: Java Development Kit)를 다운받아 설치합니다.

그리고 자바 프로그램 개발 환경을 갖출 수 있도록 통합 개발환경(IDE)인 Eclipse를 설치합니다.

 

설치방법은 이미 많은 분들이 업로드해놓은 내용이 있으므로 생략하도록 하겠습니다.

 

 

이클립스 설치를 진행하면 위의 이미지에 나타낸 것과 같이 보라색 동그라미 형태의 아이콘이 생성되고 이를 실행시키면 작업공간의 경로를 지정할 수 있는 창이 나타납니다. 이를 통해 작업공간을 지정해줍니다.

 

 

이클립스 IDE가 실행되면 'File'탭의 'New' 항목으로 이동한 후 'Java Project'를 통해 새로운 프로젝트를 생성합니다.

 

위와 같이 프로젝트 설정을 위한 창이 나타나면 동일하게 셋팅을 진행한 후 아래의 'Finish'를 눌러 마무리합니다.

 

그럼 위와 같이 프로젝트가 생성된 것을 확인할 수 있습니다.

이제 본격적으로 코드 작업을 진행해봅시다.

 

'File' -> 'New' -> 'Class' 순서로 입력하면 아래와 같은 창이 나타납니다.

 

'Name' 에는 생성할 클래스의 이름을 지정하여주고 하단의 "public static void main(Stringp[] args)" 를 체크하여

클래스를 생성할때 자동으로 메인문이 생성될 수 있도록 지정해줍시다.

 

 

그럼 이제 메인문 안에 코드를 입력하여주고 좌측 상단의 재생버튼같이 생긴 아이콘을 눌러 실행합니다.

 

반응형

+ Recent posts