22.05.24~22.11.16/Project

5월 project <메인 윈도우 만들기>

10월의끝 2022. 6. 2. 17:03

<Appmian.java>

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("root.fxml"));
		Scene scene = new Scene(root);
		
		primaryStage.setTitle("AppMain");
		primaryStage.setScene(scene);
		primaryStage.setResizable(false);
		primaryStage.show();
	}
	
	public static void main(String[] args) {
		launch(args);
	}
}

 

<Rootcontroller.java>

public class RootController implements Initializable {
	@FXML private TextField txtName;
	@FXML private TextField txtKor;
	@FXML private TextField txtMath;
	@FXML private TextField txtEng;
	@FXML private Button btnAdd;
	
	@Override
	public void initialize(URL location, ResourceBundle resources) {
	}
	
	public void handleBtnRegAction(ActionEvent e) {
		Stage dialog = new Stage(StageStyle.UTILITY);
		dialog.initModality(Modality.WINDOW_MODAL);
		dialog.initOwner(btnAdd.getScene().getWindow());
		dialog.setTitle("추가");
	
		try {
			Parent parent = FXMLLoader.load(getClass().getResource("barchart.fxml"));
			Scene scene = new Scene(parent);
			dialog.setScene(scene);
			dialog.setResizable(false);	
			dialog.show();	
			} 
		catch (IOException e1) {
			e1.printStackTrace();
		}

			
		String sName = txtName.getText();
		System.out.println("이름: " + sName);
		
		String sKor = txtKor.getText();
		System.out.println("국어: " + sKor);
		
		String sMath = txtMath.getText();
		System.out.println("수학: " + sMath);
		
		String sEng = txtEng.getText();
		System.out.println("영어: " + sEng);
		
		
		int iKor = Integer.parseInt(sKor);
		int iMath = Integer.parseInt(sMath);
		int iEng = Integer.parseInt(sEng);
		int sum = iKor + iMath + iEng;
		System.out.println("총점: " + sum);
		float avg = (float) (sum/3);
		System.out.println("평균: " + avg);
								
	}

	public void handleBtnCancelAction(ActionEvent e) {
		Platform.exit();
	}
}

 

 

 

<Burchart.fxml>

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

<?import javafx.scene.layout.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.chart.*?>

<BorderPane xmlns:fx="http://javafx.com/fxml" prefHeight="250" prefWidth="400" >
   <center>
      <BarChart id="barChart" BorderPane.alignment="CENTER" >
        <xAxis>
          <CategoryAxis side="BOTTOM"/>
        </xAxis>
        <yAxis>
          <NumberAxis side="LEFT" />
        </yAxis>
      </BarChart>
   </center>
   <bottom>
      <HBox alignment="CENTER" prefHeight="50.0">
         <children>
            <Button id="btnClose" text="닫기" />
         </children>
      </HBox>
   </bottom>
</BorderPane>

 

 

 

<Root.fxml>

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

<?import javafx.scene.text.*?>
<?import javafx.scene.shape.*?>
<?import javafx.scene.web.*?>
<?import javafx.geometry.*?>
<?import javafx.scene.image.*?>
<?import java.lang.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import javafx.collections.*?>

<AnchorPane xmlns:fx="http://javafx.com/fxml" fx:controller="free01.RootController"
	prefHeight="300" prefWidth="200" >
   <children>
      <Label layoutX="22.0" layoutY="30.0" text="이름" />
      <TextField fx:id="txtName" layoutX="84.0" layoutY="30.0" prefHeight="23.0" prefWidth="80.0" />
      
      <Label layoutX="22.0" layoutY="70.0" text="국어" />
      <TextField fx:id="txtKor" layoutX="84.0" layoutY="70.0" prefHeight="23.0" prefWidth="80.0" />
      
      <Label layoutX="22.0" layoutY="110.0" text="수학" />
      <TextField fx:id="txtMath" layoutX="84.0" layoutY="110.0" prefHeight="23.0" prefWidth="80.0" />
      
      <Label layoutX="22.0" layoutY="150.0" text="영어" />
      <TextField fx:id="txtEng" layoutX="84.0" layoutY="150.0" prefHeight="23.0" prefWidth="80.0" />
      
      <Button fx:id="btnAdd" layoutX="50.0" layoutY="240" text="계산" onAction="#handleBtnRegAction"/>

      <Button fx:id="btnCancel" layoutX="120.0" layoutY="240" text="닫기" onAction="#handleBtnCancelAction"/>
   </children>
</AnchorPane>

빈칸과 버튼 크기를 조절하는 클래스

 

 

 

실행 결과

 

그래프까지는 아직 실력부족