Main에는 따로 터치없이 Scene Builder




BorderPane의 Center 위에 Pane(400, 400)을 하나 배치


그 위에


LineChart - Code : fx:id - linechart


Button - code : On Action - multiChart


Controller class 설정 후 코딩



package app;

import java.net.URL;
import java.util.Random;
import java.util.ResourceBundle;

import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.chart.LineChart;
import javafx.scene.chart.XYChart;

public class MainController implements Initializable{

	@FXML LineChart<String, Integer> lineChart; // Generic은 차트의 X축과 Y축을 의미 
	XYChart.Series<String, Integer> series = null;

	
	@Override
	public void initialize(URL location, ResourceBundle resources) {
		System.out.println("FXML 완");
		drawChart();
	}
	
	// 차트 그리기
	public void drawChart() {
		series = new XYChart.Series<String, Integer>();
		series.getData().add(new XYChart.Data<String, Integer>("1차", 30)); // 특징으로 무엇을 할 때마다 getData
		series.getData().add(new XYChart.Data<String, Integer>("2차", 50));
		series.getData().add(new XYChart.Data<String, Integer>("3차", 20));
		series.getData().add(new XYChart.Data<String, Integer>("4차", 70));
		series.setName("Month Pay");
		// 라인차트에 시리즈 추가
		lineChart.getData().add(series); // 다른 라인을 추가하고 싶으면 다른 series 만들면 된다.
		
		series = new XYChart.Series<String, Integer>();
		series.getData().add(new XYChart.Data<String, Integer>("1차", 150)); // 특징으로 무엇을 할 때마다 getData
		series.getData().add(new XYChart.Data<String, Integer>("2차", 120));
		series.getData().add(new XYChart.Data<String, Integer>("3차", 140));
		series.getData().add(new XYChart.Data<String, Integer>("4차", 180));
		series.setName("Year Pay");
		// 라인차트에 시리즈 추가
		lineChart.getData().add(series); // 다른 라인을 추가하고 싶으면 다른 series 만들면 된다.
		
		
	}
	
	public void multiChart() {
		 // 기존 라인 제거
		lineChart.getData().clear();
		series = null;
		for(int i = 0; i < 4; i++) {
			// 새로운 시리즈 만들기
			series = new XYChart.Series<String, Integer>();
			// 새로운 데이터 추가(5개)
			for(int j = 1; j < 6; j++) {
				series.getData().add(new XYChart.Data<String, Integer>(j + "차", 30 + random()));
			}
			series.setName("pay " + i);
			// 라인 차트에 추가
			lineChart.getData().add(series);
		}
	}
	
	// 임의의 값을 추출
	public int random() {
		Random rand = new Random();
		return rand.nextInt(100); // 1~100의 랜덤값
	}
}


랜덤 값을 얻을때엔 Random을 객체화하여 nextInt(범위) 메소드를 사용


결과는 LineChart 하나가 나올것이고 버튼을 누르면 새로운 차트 항목이 추가된다

+ Recent posts