FXML
FXMLμ JavaFX μ ν리μΌμ΄μ
μ μ¬μ©μ μΈν°νμ΄μ€λ₯Ό μ μνλ XML κΈ°λ°μ λ§ν¬μ
μΈμ΄μ
λλ€.
XML(eXtensible Markup Language)
λ°μ΄ν°λ₯Ό μ μ‘ μμ λλ μ¬μ©μ νμ₯ νκ·Έλ₯Ό μν λ§ν¬μ
μΈμ΄μ
λλ€.
νκ·Έλ₯Ό μ¬μ©νμ¬ λ°μ΄ν°μ ꡬ쑰λ₯Ό μ μνλ©°, μ¬μ©μκ° μ§μ νκ·Έλ₯Ό λ§λ€ μ μμ΄ νμ₯μ±μ΄ λ°μ΄λ©λλ€. μΉ μλΉμ€, λ°μ΄ν° κ΅ν, μ€μ νμΌ λ± λ€μν μ©λλ‘ νμ©λ©λλ€.
ν΅μ¬ μμ
μμ | μ€λͺ
|
AnchorPane | κ³ μ λ μμΉμ UI μμ λ°°μΉ |
BorderPane | μ, ν, μ’, μ°, μ€μ 5κ° μμμΌλ‘ UI λ°°μΉ |
VBox | μΈλ‘ λ°©ν₯μΌλ‘ UI μμ μ λ ¬ |
HBox | κ°λ‘ λ°©ν₯μΌλ‘ UI μμ μ λ ¬ |
GridPane | νκ³Ό μ΄μ 격μ ννλ‘ UI λ°°μΉ |
StackPane | μ¬λ¬ μ»΄ν¬λνΈλ₯Ό κ²Ήμ³μ λ°°μΉ |
TextField | ν μ€ ν
μ€νΈ μ
λ ₯ νλ |
PasswordField | λΉλ°λ²νΈ μ
λ ₯ νλ |
Button | λ²νΌ μμ± |
Label | ν
μ€νΈ λΌλ²¨ νμ |
TableView | ν
μ΄λΈ νμμ λ°μ΄ν° νμ |
ListView | 리μ€νΈ ννλ‘ λ°μ΄ν° νμ |
ImageView | μ΄λ―Έμ§ μΆλ ₯ |
MenuBar | λ©λ΄λ° μΆκ° |
λ¬Έλ² μ¬ν
λ¬Έλ² μμ | μ€λͺ
| μμ |
XML μ μΈ | FXML νμΌμ μμ | <?xml version="1.0" encoding="UTF-8"?> |
λ£¨νΈ μ»¨ν
μ΄λ | UIμ μ΅μμ μμ | <VBox xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1"> |
μμ± μ§μ | μμμ μμ± μ€μ | <Button text="ν΄λ¦"/> |
μ΄λ²€νΈ νΈλ€λ¬ | 컨νΈλ‘€μ μ΄λ²€νΈ μ€μ | <Button onAction="#handleClick"/> |
컨νΈλ‘€ ID | FXML 컨νΈλ‘€μ Javaμμ μ°Έμ‘° κ°λ₯νκ² μ€μ | <TextField fx:id="usernameField"/> |
include νκ·Έ | λ€λ₯Έ FXML νμΌ ν¬ν¨ | <fx:include source="header.fxml"/> |
κ³΅ν΅ μμ±
μμ± | μ€λͺ
| μμ |
fx:id | 컨νΈλ‘€μ Java μ½λμμ μ κ·Όν μ μλλ‘ μ€μ | <Button fx:id="submitButton"/> |
text | λ²νΌμ΄λ λΌλ²¨ λ±μ ν
μ€νΈ μ€μ | <Label text="Hello, JavaFX!"/> |
onAction | λ²νΌ ν΄λ¦ λ±μ μ΄λ²€νΈ μ€μ | <Button onAction="#handleClick"/> |
alignment | μ λ ¬ λ°©μ μ€μ | <VBox alignment="CENTER"/> |
spacing | μμ μμ κ°κ²© | <VBox spacing="10"/> |
padding | 컨ν
μ΄λ λ΄λΆ μ¬λ°± μ€μ | <VBox padding="10"/> |
μμ μ½λ
(1) λ‘κ·ΈμΈ νλ©΄ (login.fxml)
<?xml version="1.0" encoding="UTF-8"?>
<VBox xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1"
alignment="CENTER" spacing="10">
<Label text="λ‘κ·ΈμΈ"/>
<TextField fx:id="usernameField" promptText="μμ΄λ"/>
<PasswordField fx:id="passwordField" promptText="λΉλ°λ²νΈ"/>
<Button text="λ‘κ·ΈμΈ" onAction="#handleLogin"/>
</VBox>
XML
볡μ¬
(2) νμκ°μ νλ©΄ (register.fxml)
<?xml version="1.0" encoding="UTF-8"?>
<VBox xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1"
alignment="CENTER" spacing="10">
<Label text="νμκ°μ
"/>
<TextField fx:id="nameField" promptText="μ΄λ¦"/>
<TextField fx:id="emailField" promptText="μ΄λ©μΌ"/>
<PasswordField fx:id="passwordField" promptText="λΉλ°λ²νΈ"/>
<Button text="κ°μ
νκΈ°" onAction="#handleRegister"/>
</VBox>
XML
볡μ¬
(3) μμ΄μ½ λ²νΌ 그리λ λ§ν¬ νλ©΄ (icon_grid.fxml)
<?xml version="1.0" encoding="UTF-8"?>
<GridPane xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1"
hgap="10" vgap="10" alignment="CENTER">
<Button text="ν" GridPane.rowIndex="0" GridPane.columnIndex="0"/>
<Button text="μ€μ " GridPane.rowIndex="0" GridPane.columnIndex="1"/>
<Button text="νλ‘ν" GridPane.rowIndex="1" GridPane.columnIndex="0"/>
<Button text="λ‘κ·Έμμ" GridPane.rowIndex="1" GridPane.columnIndex="1"/>
</GridPane>
XML
볡μ¬
(4) κ²μν λͺ©λ‘ νλ©΄ (board.fxml)
<?xml version="1.0" encoding="UTF-8"?>
<BorderPane xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
<top>
<Label text="κ²μν λͺ©λ‘" style="-fx-font-size: 16px;"/>
</top>
<center>
<TableView fx:id="boardTable">
<columns>
<TableColumn text="λ²νΈ" fx:id="colId"/>
<TableColumn text="μ λͺ©" fx:id="colTitle"/>
<TableColumn text="μμ±μ" fx:id="colAuthor"/>
<TableColumn text="λ μ§" fx:id="colDate"/>
</columns>
</TableView>
</center>
<bottom>
<HBox alignment="CENTER" spacing="10">
<Button text="μ κΈ μμ±" onAction="#handleNewPost"/>
</HBox>
</bottom>
</BorderPane>
XML
볡μ¬