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 하나가 나올것이고 버튼을 누르면 새로운 차트 항목이 추가된다
'JavaFX > 01.Node 추가' 카테고리의 다른 글
| [JAVA FX]01-14.Media Player (0) | 2018.09.11 |
|---|---|
| [JAVA FX]01-13.BarChart (0) | 2018.09.11 |
| [JAVA FX]01-11.PieChart (0) | 2018.09.11 |
| [JAVA FX]01-10.Progress Bar, Progress Indicator, Thread (0) | 2018.09.11 |
| [JAVA FX]01-09.속성 감시, 속성 바인딩 (0) | 2018.09.10 |