본문 바로가기
자바

자바 자바fx 바챠트 BarChart [북붙따라하기]

by 세상 모든 것 들은 그 자신을 위해 존재한다. 2021. 1. 9.

 BarChart 

사용 예제 ) 코드를 복붙 하여 실행해 보시기 바랍니다.

설명은  주석과 코드 아랫부분에  있습니다.

1. 메인 파일 예제입니다.(title 만 다르고 내용이 거의 변하지 않습니다.)

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;

public class AppMain extends Application {
	@Override
	public void start(Stage primaryStage) throws Exception {
		Parent root = (Parent)FXMLLoader.load(getClass().getResource("main.fxml"));
		Scene scene = new Scene(root);
		
		primaryStage.setTitle("bar 챠트  예제 입니다.");
		primaryStage.setScene(scene);
		primaryStage.show();
		primaryStage.setAlwaysOnTop(true);
	}
	
	public static void main(String[] args) {
		launch(args);
	}
}

 

2. main.fxml  파일 예제입니다.

그대로 복붙 하여 테스트해보시면 됩니다.

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.geometry.Insets?>
<?import javafx.scene.chart.BarChart?>
<?import javafx.scene.chart.CategoryAxis?>
<?import javafx.scene.chart.NumberAxis?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.layout.HBox?>

<HBox alignment="CENTER" prefHeight="250.0" prefWidth="579.0" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/8.0.171" fx:controller="MainHandler">
   <children>
      <Button fx:id="b" mnemonicParsing="false" onAction="#selB" prefHeight="37.0" prefWidth="129.0" text="barChart">
         <HBox.margin>
            <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
         </HBox.margin>
      </Button>
      <BarChart fx:id="barChart" prefHeight="250.0" prefWidth="322.0" style="-fx-border-color: black;">
        <xAxis>
          <CategoryAxis side="BOTTOM" />
        </xAxis>
        <yAxis>
          <NumberAxis side="LEFT" />
        </yAxis>
      </BarChart>
   </children>
</HBox>

 

3. MainHandler.java 핸들러 파일입니다.

그대로 복붙 하여 테스트하시길 바랍니다.


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

import javafx.collections.FXCollections;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.chart.BarChart;
import javafx.scene.chart.XYChart;
import javafx.scene.control.Button;

public class MainHandler implements Initializable {
//--------------바차트 ---------------
	@FXML 
	private BarChart barChart;
	
	@FXML 
	private Button b;
	
	
//선택시 챠트가 생성되게 하는부분
	//시작시 한번만 실행 할것 같으면 이부분의 핸들러는 필요 없고
	//initialize 에다 사용하는 밑의 예제만 사용하면 됩니다.
	//이부분은 통째로 없어도 됩니다.
@FXML void selB(ActionEvent event) {

	//막대그래프라 막대기 하나를 나타냅니다.
	//정형화된 표현입니다. 그대로 사용하시면 됩니다.
	XYChart.Series case1 = new XYChart.Series();
	case1.setName("댕댕이");       //막대그래프 항목의 이름입니다.
	case1.setData(FXCollections.observableArrayList(
		//일년을 4분기로 나누어서 실적을 나타낼때 사용
		//하기위해서 4개를 선택했습니다.
		//상,하반기 2개로 나물려면 2줄을 지우면 되겠습니다.
		new XYChart.Data("1분기", 10),
		new XYChart.Data("2분기", 20),
		new XYChart.Data("3분기", 30),
		new XYChart.Data("4분기", 40)
	));  
	
	//두번째 항목 입니다.
	XYChart.Series case2 = new XYChart.Series();
	case2.setName("냥이");       
	case2.setData(FXCollections.observableArrayList(
			new XYChart.Data("1분기", 10),
			new XYChart.Data("2분기", 20),
			new XYChart.Data("3분기", 30),
			new XYChart.Data("4분기", 40)
	));
	
	//세번째 항목입니다.항목은 무한정 추가가 가능합니다.
	//case숫자를 늘려 가면서 추가 하시면 됩니다.
	XYChart.Series case3 = new XYChart.Series();
	case3.setName("오리");       
	case3.setData(FXCollections.observableArrayList(
			new XYChart.Data("1분기", 10),
			new XYChart.Data("2분기", 20),
			new XYChart.Data("3분기", 30),
			new XYChart.Data("4분기", 40)
	));  
	
	//네번째 막대의 부분읩니다.
	XYChart.Series case4 = new XYChart.Series();
	case4.setName("닭");       
	case4.setData(FXCollections.observableArrayList(
			new XYChart.Data("1분기", 10),
			new XYChart.Data("2분기", 20),
			new XYChart.Data("3분기", 30),
			new XYChart.Data("4분기", 40)
	));
	
	//그래트에 위의 데이터를 입력해서 나타나게 하는 부분
	barChart.getData().add(case1);
	barChart.getData().add(case2);
	barChart.getData().add(case3);
	barChart.getData().add(case4);


}
	
	
	@Override
	public void initialize(URL location, ResourceBundle resources) {
//----------------시작시 한번만 실행하게 하는 예제 입니다.
		//버튼을 클릭시 나타나는 예제는 위의 예제를 사용하시고 
		//그렇게 되면 이부분은 통째로 없어도 됩니다.
		XYChart.Series case1 = new XYChart.Series();
		case1.setName("댕댕이");       
		case1.setData(FXCollections.observableArrayList(
			new XYChart.Data("1분기", 10),
			new XYChart.Data("2분기", 20),
			new XYChart.Data("3분기", 30),
			new XYChart.Data("4분기", 40)
		));  
		XYChart.Series case2 = new XYChart.Series();
		case2.setName("냥이");       
		case2.setData(FXCollections.observableArrayList(
				new XYChart.Data("1분기", 10),
				new XYChart.Data("2분기", 20),
				new XYChart.Data("3분기", 30),
				new XYChart.Data("4분기", 40)
		));
		XYChart.Series case3 = new XYChart.Series();
		case3.setName("오리");       
		case3.setData(FXCollections.observableArrayList(
				new XYChart.Data("1분기", 10),
				new XYChart.Data("2분기", 20),
				new XYChart.Data("3분기", 30),
				new XYChart.Data("4분기", 40)
		));  
		XYChart.Series case4 = new XYChart.Series();
		case4.setName("닭");       
		case4.setData(FXCollections.observableArrayList(
				new XYChart.Data("1분기", 10),
				new XYChart.Data("2분기", 20),
				new XYChart.Data("3분기", 30),
				new XYChart.Data("4분기", 40)
		));
		barChart.getData().add(case1);
		barChart.getData().add(case2);
		barChart.getData().add(case3);
		barChart.getData().add(case4);
	}
}







 

 

바 차트는 자주 사용하지 않는 것이 지만 프로그램의 품질을 올려주는 효과가 있습니다.

필요하실 때 예제를 이용하셔서 사용하시면 되겠습니다.

 

아래는 실행 화면 입니다.

 

세상 모든 것들은 그 자신을 위해 존재한다.

728x90
반응형

댓글