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>
빈칸과 버튼 크기를 조절하는 클래스
실행 결과
그래프까지는 아직 실력부족