JavaFX
Java νλ«νΌμμ νλΆν κ·Έλν½ μ¬μ©μ μΈν°νμ΄μ€(GUI) μ ν리μΌμ΄μ
μ κ°λ°νκΈ° μν μ€ν μμ€ μμ ― κ°λ° λꡬ
JavaFX ν΅μ¬κ°λ
β’
Stage
β’
Scene
β’
Node
β’
Control
β’
Layout
β’
Event
β’
CSS
β’
FXML
Stage
νλ‘κ·Έλ¨μΒ μ΅μμ μλμ°
ꡬμ±μμ
β’
λ©λ΄
β’
λꡬλͺ¨μ
β’
μν νμμ€
β’
μ¬λ¬ κ°μ Scene
νλμ μΈμ€ν΄μ€λ§ μ‘΄μ¬νκ³ , νλ‘κ·Έλ¨μ΄ μ€νλ λ, μμ±λ©λλ€.
Scene
Stage μμ νμλλ 컨ν
μΈ μμ(νλ©΄)
ꡬμ±μμ
β’
컨νΈλ‘€
β’
λ μ΄μμ
β’
κ·Έλν½
UI μμλ€μ΄ λ°°μΉλ μ μλ μμμ
λλ€.
Node
JavaFX μμ λνλ΄λ κΈ°λ³Έμ μΈ UI μμ
λ Έλμ λΆλ₯
β’
컨νΈλ‘€
β’
λ μ΄μμ
β’
ν
μ€νΈ
β’
μ΄λ―Έμ§
β’
λν
λ Έλμ νΉμ§
β’
μμΉ, ν¬κΈ°, μ€νμΌ λ±μ μ§μ νμ¬ UI μμλ₯Ό ννν μ μλ€.
β’
Scene μμ νμν λ²νΌ, μ΄λ―Έμ§ λ±μ μν μ νλ€.
Control
λ©μλμ μ°κ²°λ λ
Έλλ‘μ¨, μ¬μ©μμ μνΈ μμ©μ νλ μμ
β’
μ΄λ²€νΈ μ²λ¦¬ κΈ°λ₯μ μ 곡νκΈ° μν΄μ μ¬μ©λλ€.
μ’ λ₯
β’
λ²νΌ
β’
ν
μ€νΈ νλ
β’
체ν¬λ°μ€
β’
콀보 λ°μ€
Layout
λ
Έλλ₯Ό Scene μ λ°°μΉνλ λ°©λ²μ μ μνλ μμ
μ’ λ₯
β’
VBox
β’
HBox
β’
GridPane
β’
AnchorPane
Event
μ¬μ©μμ μνΈ μμ©κ³Ό κ΄λ ¨λ νμ
μ’ λ₯
β’
ν΄λ¦
β’
ν€ μ
λ ₯
β’
λλκ·Έ μ€ λλ‘
컨νΈλ‘€ μμμ νΉμ μ΄λ²€νΈλ₯Ό μ§μ νκ³ , ν΄λΉ μ΄λ²€νΈμ λ©μλλ₯Ό μ°κ²°νμ¬ μ¬μ©μμ μνΈ μμ©μ λν κΈ°λ₯μ μ²λ¦¬ν©λλ€.
CSS
μ€νμΌ μνΈ. νλ©΄ μμμ λν μ€νμΌ μ§μ νλ νμΌ
β’
κΈκΌ΄, μμ, μ΄λ―Έμ§, λ°°κ²½ λ±μ μ€μ νμ¬ νλ‘κ·Έλ¨μ λμμΈμ μ μν μ μμ΅λλ€.
FXML
JavaFX μμ Scene μ μ μνλ XML κΈ°λ° μΈμ΄
SceneBuilder λꡬλ₯Ό μ΄μ©νμ¬ λμμΈ νΈμ§μ ν μ μλ€.
SceneBuilder λ‘ λλκ·Έ&λλ νμ¬ UI λμμΈμ νλ©΄, μ½λκ° μλ μμ±λλ€.
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.layout.AnchorPane?>
<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="484.0" prefWidth="510.0" xmlns="http://javafx.com/javafx/20.0.1" xmlns:fx="http://javafx.com/fxml/1">
<children>
<Button layoutX="260.0" layoutY="239.0" mnemonicParsing="false" text="Button" />
<Button layoutX="149.0" layoutY="239.0" mnemonicParsing="false" text="Button" />
<Button layoutX="206.0" layoutY="239.0" mnemonicParsing="false" text="Button" />
</children>
</AnchorPane>
XML
볡μ¬