λΉ λ₯Έ μμ½
νμ FX κ°λ° μκ²½μ μ€μ νκ³ Java κ°λ
μ μ΄ν΄νλ λ° μ€μ μ λκ³ μ΄μ νλμ κ³μμ λν΄ λ
Όμνμ΅λλ€. λν Javaμμ κ·Έλν½ μ¬μ©μ μΈν°νμ΄μ€λ₯Ό κ°λ°νλ κΈ°μ μΈ Java FXμ μΈν°νμ΄μ€ ꡬ쑰νμ λν FXML μ¬μ©μ νꡬνμ΅λλ€. λνλ λν Java FXλ₯Ό μ¬μ©νμ¬ νλ©΄μ λ§λ€κ³ μ ννλ κ³Όμ , Java FXμμ XML μ¬μ© λ° λ°μ΄ν° μ μ‘, κ·Έλ¦¬κ³ JavaFXμ FXMLμ μ¬μ©νμ¬ λ‘κ·ΈμΈ νλ©΄μ λ§λλ λ°©λ²μ λν΄ λ€λ£¨μμ΅λλ€.
λ€μ λ¨κ³
β’ ν: Java FX μ ν리μΌμ΄μ
μ μ μ ν MVC ν¨ν΄ ꡬ쑰λ₯Ό μ€μ ν©λλ€.
β’ ν: Scene Builderμ νμν λΌμ΄λΈλ¬λ¦¬λ₯Ό μ¬μ©νμ¬ Java FX κ°λ° νκ²½μ μ€μ ν©λλ€.
β’ ν: Java FX SDK κ²½λ‘ λ° Scene Builder κ²½λ‘μ λν Windows νκ²½ μ€μ μ ꡬμ±ν©λλ€.
β’ ν: μ μ ν λͺ¨λ ꡬμ±μΌλ‘ μλ‘μ΄ Java FX νλ‘μ νΈ κ΅¬μ‘°λ₯Ό μμ±ν©λλ€.
β’ ν: FXMLμ μ¬μ©νμ¬ λ‘κ·ΈμΈ νλ©΄ UIλ₯Ό VBox λ μ΄μμ, λΌλ²¨, ν
μ€νΈ νλ λ° λ²νΌμΌλ‘ λ§λλλ€.
β’ ν: FXMLμ μ¬μ©νμ¬ κΈ°λ³Έ 무λ λ° μ₯λ©΄ κ΄λ¦¬λ₯Ό ꡬνν©λλ€.
β’ ν: FXMLμμ λ²νΌ ν΄λ¦μ λν μ μ ν μ΄λ²€νΈ μ²λ¦¬λ₯Ό ꡬμ±ν©λλ€.
β’ ν: μ¬λ¬ μ₯λ©΄ κ°μ νλ©΄ μ ν κΈ°λ₯μ ꡬνν©λλ€.
β’ ν: ν€λ λ° νΈν° μΉμ
μ λν μ¬μ¬μ© κ°λ₯ν FXML κ΅¬μ± μμλ₯Ό λ§λλλ€.
β’ ν: Java FX 컨νΈλ‘€ λ° λ μ΄μμμ λν μ μ ν κ°μ Έμ€κΈ° λ¬Έμ₯μ μ€μ ν©λλ€.
μμ½
FX κ°λ° μκ²½μ μ€μ ν©λλ€.
νμμμ ALOHAλ FX κ°λ° μκ²½μ μ€μ νκ³ Java κ°λ
μ μ΄ν΄νλ λ° μ€μ μ λκ³ μ λ νλμ κ³μμ λν΄ λ
Όμνμ΅λλ€. λν νμ΅μ μ€μμ±κ³Ό μλ²λ₯Ό μ€ννκ³ μ°κ²°ν΄μΌ ν νμμ±μ λν΄ λ
Όμνμ΅λλ€. ALOHAλ νμν κ²½μ° μ§λ¬Έμνκ³ λͺ
νμ±μ ꡬν νμκ° μλ€κ³ κ°μ‘°νμ΅λλ€. νμ λν Gatter λ©μλμ μν κ³Ό λ©μλμμ λ°ν μ νμ μ μν΄μΌ ν νμμ±μ λν΄ λ
Όμνμ΅λλ€.
Java FX μ¬μ©μ μΈν°νμ΄μ€ κ°λ°
κ°μ¬λ Javaμμ κ·Έλν½ μ¬μ©μ μΈν°νμ΄μ€λ₯Ό κ°λ°νκΈ°μν κΈ°μ μΈ Java FXλ₯Ό μκ°ν©λλ€. κ·Έλ€μ μ¬μ©μ μΈν°νμ΄μ€λ₯Ό λ§λ€κ³ ꡬ쑰ννλ λ° μ¬μ©λλ λ¨κ³, μ₯λ©΄ λ° λ
Έλμ κ°μ ν΅μ¬ κ°λ
μ μ€λͺ
ν©λλ€. κ°μ¬λ λν μ¬μ©μ μνΈ μμ©μ μν 컨νΈλ‘€, νλ©΄ ꡬμ±μ μν λ μ΄μμ μμ λ° μ¬μ©μ λμμ μ²λ¦¬νλ μ΄λ²€νΈμ λν΄ μ€λͺ
ν©λλ€. λν μ€νμΌλ§μ CSSλ₯Ό μ¬μ©νκ³ μΈν°νμ΄μ€ ꡬ쑰νμ FXMLμ μ¬μ©νμ¬ λμμΈκ³Ό κΈ°λ₯μ±μ λΆλ¦¬νκ³ μ½λ μ‘°μ§μ κ°μ νλ λ° λμμ΄ λλ€κ³ μΈκΈν©λλ€.
Java FX νλ‘μ νΈ μ½λ κ²ν
μ°μ¬λ μμ μ΄ λ§λ Java FX νλ‘μ νΈμ λν΄ λ
Όμνλ©°, ν΄μ ν μ½λλ₯Ό μμΈν κ²ν ν κ²μ΄λΌκ³ μΈκΈν©λλ€. κ·Έλ€μ "λ¨μ± μ§μ¬" κ΅¬μ± μμμ μΌλΆ μΈν°νμ΄μ€ μμ λ± νλ‘μ νΈμ λ€μν μΈ‘λ©΄μ μ΄ν΄λ΄
λλ€. λ°νμλ κ° μ±ν°λ§λ€ λ³λμ νλ‘μ νΈλ₯Ό λ§λ€ κ³νμ΄λ©°, κΈ°μ‘΄ μ½λλ₯Ό κ°μ νκΈ° μν΄ λͺ κ°μ§ λ³κ²½ μ¬νμ μ μ©ν κ²μ΄λΌκ³ λ§ν©λλ€.
JavaFX κ°λ° νκ²½ μ€μ
κ°μ¬λ μλ‘μ΄ JavaFX νλ‘μ νΈλ₯Ό λ§λ€κ³ κ°λ° νκ²½μ μ€μ νλ κ³Όμ μ μμ
μ μλ΄ν©λλ€. λν Eclipse νκ²½μ€μ μμ JavaFX SDK λ° Scene Builder κ²½λ‘λ₯Ό ꡬμ±νλ λ°©λ²μ μ€λͺ
ν©λλ€. κ·Έλ° λ€μ ν΄λμ€λ κΈ°λ³Έ JavaFX μ ν리μΌμ΄μ
μ μν μ½λλ₯Ό μμ±νκΈ° μμνλ©°, λ©μΈ λ©μλλΆν° μμνμ¬ Application ν΄λμ€μ μμ λ©μλλ₯Ό μ°μ μν©λλ€. κ°μ¬λ μ€λΉ μμ
κ³Ό μ ν리μΌμ΄μ
μ¬μ©μ μΈν°νμ΄μ€ μ΄κΈ°νλ₯Ό μν μμ λ°©λ²μ μ€μμ±μ κ°μ‘°ν©λλ€.
νλ‘κ·Έλλ° λ° κ°μΈ κ²½νμ λν΄ λ
Όμν©λλ€.
ν λ‘ μ νλ‘κ·Έλλ°κ³Ό κ°μΈ κ²½νκ³Ό κ΄λ ¨λ λ€μν μ£Όμ λ₯Ό λ€λ£Ήλλ€. μ°μ¬λ μ°½ ν¬κΈ° μ€μ , μμ΄μ½ μΆκ° λ° μ 체 νλ©΄ λͺ¨λ ꡬνμ ν¬ν¨νμ¬ κ·Έλν½ μ¬μ©μ μΈν°νμ΄μ€κ°μλ νλ‘κ·Έλ¨μ λ§λλ λ°©λ²μ λν΄ μ΄μΌκΈ°ν©λλ€. κ·Έλ€μ λν λ€νΈμνΉμ μν μ¬μ§ μΉ΄λμ QR μ½λλ₯Ό μ¬μ©νλ μ¬μ
μμ΄λμ΄μ λν΄ ν λ‘ ν©λλ€. κ·Έλ° λ€μ λνλ λμ λ²λ μ€μμ±κ³Ό 곡λΆμ μ΄λ €μμΌλ‘ λμ΄κ°λλ€. λ§μ§λ§μΌλ‘ μ°μ¬λ λν μμ , νΉν κ·Ήμ₯ ν΄λ½μ μ°Έμ¬νλ κ²μ νμνλ©° μ½λ©κ³Ό μ°κ·Ή μ μ μ¬μ΄μ μ μ¬μ μ λ μ¬λ¦½λλ€.
Java FX νλ©΄ μ ν νλ‘μΈμ€
νμμμ ALOHAλ Java FXλ₯Ό μ¬μ©νμ¬ νλ©΄μ λ§λ€κ³ μ ννλ κ³Όμ μ λν΄ λ
Όμνμ΅λλ€. 무λ μ€μ , μ₯λ©΄ μμ± λ° λ μ΄μμ ν λΉ λ°©λ²μ μ€λͺ
νμ΅λλ€. ALOHAλ λν λ μ΄μμμ λ²νΌμ μΆκ°νκ³ νλ©΄ κ° μ νμ μν ν΄λ¦ μ΄λ²€νΈλ₯Ό λ±λ‘νλ λ°©λ²μ μμ°νμ΅λλ€. νμ μ½λλ₯Ό ν
μ€νΈνμ¬ νλ©΄ λ³νλ₯Ό κ΄μ°°νμ΅λλ€. λνλ ALOHAκ° νμκ² μ½λλ₯Ό κ³μ μ°μ΅νκ³ ν
μ€νΈνλλ‘ κ²©λ €νλ©΄μ λλ¬μ΅λλ€.
Java FX λ° λ°μ΄ν°μ XML
μ΄ ν λ‘ μ XML(Extensible Markup Language)κ³Ό Java FX λ° λ°μ΄ν° μ μ‘μμμ μμ©μ μ€μ μ λ‘λλ€. λ°νμλ XMLμ΄ Java FX μ ν리μΌμ΄μ
μ μ¬μ©μ μΈν°νμ΄μ€λ₯Ό μ μνκ³ ν΄λΌμ΄μΈνΈμ μλ² κ°μ λ°μ΄ν°λ₯Ό μ μ‘νλ νμμΌλ‘ μ¬μ©λλ€κ³ μ€λͺ
ν©λλ€. μ΄λ€μ JSONμ΄ λ°μ΄ν° μ μ‘μ λ μΌλ°μ μΌλ‘ μ¬μ©λκ³ μμ§λ§ XMLμ μ¬μ ν νμ©λλ€κ³ μΈκΈν©λλ€. μ°μ¬λ μ€μκ° λ μ¨ μ 보μ μ¬μ©λλ XMLμ μμ λ₯Ό 보μ¬μ£Όλ©° λ°μ΄ν° ν¬νΈμ ν΅ν΄ λ μ¨ λ°μ΄ν°μ μ‘μΈμ€νλ λ°©λ²μ 보μ¬μ€λλ€. λν API ν€μ XML νμμ μ¬μ©νμ¬ λ°μ΄ν°λ₯Ό μμ²νλ λ°©λ²μ λν΄ κ°λ΅νκ² μ€λͺ
ν©λλ€.
FXML: JavaFX μ¬μ©μ μΈν°νμ΄μ€ λ§ν¬μ
μ΄ ν λ‘ μ JavaFX μ ν리μΌμ΄μ
μμ μ¬μ©μ μΈν°νμ΄μ€λ₯Ό μ μνλ λ° μ¬μ©λλ λ§ν¬μ
μΈμ΄μΈ FXMLμ μ€μ μ λ‘λλ€. FXMLμ ν΅ν΄ κ°λ°μλ UI λμμΈκ³Ό κΈ°λ₯μ±μ λΆλ¦¬ν μ μμΌλ©°, UIλ XML νμμΌλ‘ μ μλκ³ κΈ°λ₯μ Java μ½λλ‘ κ΅¬νλ©λλ€. λ°νμλ λ μ΄μμ κ΅¬μ± μμ(AnchorPane, BorderPane, VBox, HBox)μ UI 컨νΈλ‘€(TextField, PasswordField, Button)κ³Ό κ°μ λ€μν FXML μμλ₯Ό μ€λͺ
νκ³ fx:id μμ± λ° μ΄λ²€νΈ νΈλ€λ¬λ₯Ό μ¬μ©νμ¬ FXML μμλ₯Ό Java μ½λμ μ°κ²°νλ λ°©λ²μ λν΄ μ€λͺ
ν©λλ€. λνλ λν λͺ¨λμ μ€κ³λ₯Ό λ§λ€κ³ MVC(Model-View-Controller) ν¨ν΄μ μ¬μ©ν μ μλ κΈ°λ₯μ ν¬ν¨νμ¬ FXML μ¬μ©μ μ΄μ μ λν΄ μΈκΈν©λλ€.
JavaFX λ‘κ·ΈμΈ νλ©΄ μμ± κ°μ΄λ
λ°νμλ JavaFXμ FXMLμ μ¬μ©νμ¬ λ‘κ·ΈμΈ νλ©΄μ λ§λλ λ°©λ²μ 보μ¬μ€λλ€. νλ‘μ νΈ μ€μ , λ©μΈ ν΄λμ€ μμ± λ° FXMLμ μ¬μ©νμ¬ λ μ΄μμμ μ μνλ κ³Όμ μ μ€λͺ
ν©λλ€. λ°νμλ Scene Builderλ₯Ό μ¬μ©νμ¬ λ μ΄λΈ, ν
μ€νΈ νλ λ° λ²νΌ μΆκ°λ₯Ό ν¬ν¨νμ¬ μ¬μ©μ μΈν°νμ΄μ€λ₯Ό μκ°μ μΌλ‘ λμμΈνλ λ°©λ²μ 보μ¬μ€λλ€. λν ν¬κΈ°, κΈκΌ΄ λ° UI μμμ μ λ ¬κ³Ό κ°μ μμ±μ μ‘°μ νλ λ°©λ²μ λν΄ μ€λͺ
ν©λλ€. λ°νμλ κ°μ Έμ€κΈ°μ Scene Builder μ°κ²°μμ λͺ κ°μ§ λ¬Έμ λ₯Ό λ°μμν€μ§λ§ μμ
μ μλ£νκΈ°μν ν΄κ²° λ°©λ²κ³Ό λμ μ κ·Όλ²μ μ 곡ν©λλ€.