Main은 터치 하지 않고 FXML
BoderPane Center위에 Pane(400, 400) 추가
BarChart - Code : fx:id - chart
상황에 따라서 Properties에서 Animate를 끄면 더 자연스러울 수 있음
BarChart의 + 버튼을 눌러 펼치면 나오는 CategoryAxis - Code : fx:id - Xaxis
Button - Code : fx:id - style1
Button - Code : fx:id - style2
package app; import java.net.URL; import java.util.Arrays; import java.util.Random; import java.util.ResourceBundle; import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.fxml.FXML; import javafx.fxml.Initializable; import javafx.scene.chart.BarChart; import javafx.scene.chart.CategoryAxis; import javafx.scene.chart.XYChart; public class MainController implements Initializable{ // Number은 다른 숫자형의 최상위, Integer, Long, Float, Double 다 사용가능, 다형성 @FXML private BarChart<String, Number> chart; // 제네릭은 X, Y축 @FXML private CategoryAxis Xaxis; // X축 // 카테고리의 레이블을 담을 자료 구조 String[] cates = {"속도", "평점", "주행거리", "안정성"}; // 시리즈를 담을 자료 구조 XYChart.Series<String, Number> series = null; // 그래프의 값을 담을 series 변수 private ObservableList<String> xLables = FXCollections.observableArrayList(); // 카테고리를 만들 xLables 배열 변수 @Override public void initialize(URL location, ResourceBundle resources) { System.out.println("FXML 완"); xLables.addAll(Arrays.asList(cates)); // 한번에 다 넣기, add로 하나씩 넣어도 됨 Xaxis.setCategories(xLables); } public void style1() { // 바 하나짜리 차트 // 바 추가 series = new XYChart.Series<String, Number>(); // 기존 차트 초기화 chart.getData().clear(); // 바의 이름 설정 series.setName("자동차"); // 데이터 생성 for(int i = 0; i < cates.length; i++) { series.getData().add(new XYChart.Data<String, Number>(xLables.get(i), random())); } // 차트에 추가 chart.getData().add(series); } // 여러개의 바 추가 public void style2() { // 시리즈를 여러개(4개) 생성 chart.getData().clear(); // 차트 초기화, 안하면 바가 계속 추가됨 String[] names = {"코인", "떡락", "열차", "뿜붐"}; for(int i = 0; i < names.length; i++) { // 시리즈를 여러개(4개) 생성 series = new XYChart.Series<String, Number>(); // 시리즈의 이름(4개) 생성 series.setName(names[i]); // 시리즈별 데이터 생성(4개) for(int j = 0; j < cates.length; j++) { series.getData().add(new XYChart.Data<String, Number>(xLables.get(j), random())); } // 차트에 추가 chart.getData().add(series); } } // 임의의 값을 추출 public int random() { Random rand = new Random(); return rand.nextInt(9) + 1; // 1~100의 랜덤값 } }
스타일 1을 누를 경우 각 카테고리에 바가 1가지 생성되며
스타일 2를 누르면 4개씩 생성된다.
'JavaFX > 01.Node 추가' 카테고리의 다른 글
[JAVA FX]01-15.AudioPlayer (0) | 2018.09.12 |
---|---|
[JAVA FX]01-14.Media Player (0) | 2018.09.11 |
[JAVA FX]01-12.Line Chart, Random (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 |