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 |