Scene
Stage ์์ ํ์๋๋ ์ปจํ
์ธ ์์ญ(ํ๋ฉด)
๊ตฌ์ฑ์์
โข
์ปจํธ๋กค
โข
๋ ์ด์์
โข
๊ทธ๋ํฝ
UI ์์๋ค์ด ๋ฐฐ์น๋ ์ ์๋ ์์ญ์
๋๋ค.
Scene ์์ฑํ๊ธฐ
โข
๊ธฐ๋ณธ ์์ฑ : ๋ ์ด์์์ ์ง์ ํ์ฌ ์์ฑํ๋ค.
Scene scene = new Scene(๋ ์ด์์);
Java
๋ณต์ฌ
โข
ํฌ๊ธฐ ์ง์ : ๊ฐ๋กํฌ๊ธฐ, ์ธ๋กํฌ๊ธฐ๋ฅผ px ๋จ์๋ก ์ง์ ํ์ฌ ์์ฑํ๋ค.
Scene scene = new Scene(๋ ์ด์์, ๊ฐ๋กํฌ๊ธฐ, ์ธ๋กํฌ๊ธฐ);
Java
๋ณต์ฌ
โข
๋ฐฐ๊ฒฝ์ ์ง์ : ์์ ์ง์ ํ์ฌ ์์ฑํ๋ค.
Scene scene = new Scene(๋ ์ด์์, ์ปฌ๋ฌ);
Java
๋ณต์ฌ
ํ๋ฉด ์ด๋ํ๊ธฐ
ํ๋ก๊ทธ๋จ์์ ๋ณด์ฌ์ง๋ ํ๋ฉด์ Scene ๋จ์๋ก ์ด๋ฃจ์ด์ง๋๋ค.
ํ๋ฉด ์ด๋์ ๊ตฌํํ๋ ค๋ฉด, Stage์ ๋ฑ๋ก๋ SceneA SceneB ๋ก ์ฌ์ง์ ํด์ผํฉ๋๋ค.
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class SceneSwitchingExample extends Application {
private Stage primaryStage; // ์ฃผ ์ฐฝ์ ๋ํ๋ด๋ Stage ๊ฐ์ฒด
private Scene sceneA, sceneB; // SceneA์ SceneB๋ฅผ ๋ํ๋ด๋ Scene ๊ฐ์ฒด
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) {
this.primaryStage = primaryStage;
// SceneA ์์ฑ
Button switchButton = new Button("Go to Scene B");
switchButton.setOnAction(e -> primaryStage.setScene(sceneB)); // SceneB๋ก ์ ํํ๋ ์ด๋ฒคํธ ํธ๋ค๋ฌ ์ค์
StackPane layoutA = new StackPane(switchButton); // ๋ฒํผ์ ํฌํจํ๋ ๋ ์ด์์ ์์ฑ
sceneA = new Scene(layoutA, 300, 200); // SceneA ์์ฑ
// SceneB ์์ฑ
Button backButton = new Button("Go back to Scene A");
backButton.setOnAction(e -> primaryStage.setScene(sceneA)); // SceneA๋ก ์ ํํ๋ ์ด๋ฒคํธ ํธ๋ค๋ฌ ์ค์
StackPane layoutB = new StackPane(backButton); // ๋ฒํผ์ ํฌํจํ๋ ๋ ์ด์์ ์์ฑ
sceneB = new Scene(layoutB, 300, 200); // SceneB ์์ฑ
// ์ด๊ธฐ Scene ์ค์ (์ ํ๋ฆฌ์ผ์ด์
์ด ์์๋ ๋๋ SceneA๋ฅผ ๋ณด์ฌ์ค)
primaryStage.setScene(sceneA);
primaryStage.setTitle("Scene Switching Example"); // ์๋์ฐ ํ์ดํ ์ค์
primaryStage.show(); // ์ฃผ ์ฐฝ์ ํ๋ฉด์ ํ์
}
}
Java
๋ณต์ฌ
FXML ๋ก Scene (ํ๋ฉด) ์ง์ ํ๊ธฐ
1.
Main.fxml ํ์ผ ์์ฑ
2.
Java ์ฝ๋์์ โMain.fxmlโ ๋ถ๋ฌ์ค๊ธฐ
3.
๋ถ๋ฌ์จ fxml ํ์ผ ๋ ์ด์์์ Scene ๋ฑ๋ก
Main.fxml ํ์ผ ์์ฑ
Main.fxml
SceneBuilder ๋ก UI ๋์์ธ
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.text.Font?>
<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/20.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="application.SceneController">
<children>
<Button layoutX="156.0" layoutY="176.0" mnemonicParsing="false" text="๋ฒํผ">
<font>
<Font name="Consolas" size="27.0" />
</font>
</Button>
<Label layoutX="213.0" layoutY="35.0" text="๋ฉ์ธ ํ๋ฉด">
<font>
<Font name="Consolas" size="45.0" />
</font>
</Label>
</children>
</AnchorPane>
XML
๋ณต์ฌ
Java ์ฝ๋์์ โMain.fxmlโ ๋ถ๋ฌ์ค๊ธฐ
Main.java
Parent root = FXMLLoader.load(getClass().getResource("Main.fxml");
Java
๋ณต์ฌ
๋ถ๋ฌ์จ fxml ํ์ผ ๋ ์ด์์์ Scene ๋ฑ๋ก
Scene scene = new Scene(root);
Java
๋ณต์ฌ