λΉ λ₯Έ μμ½
νμ νλ©΄ κ° λ°μ΄ν° μ μ‘μ μ€μ μ λκ³ JavaFX 컨νΈλ‘€λ¬λ₯Ό μμ±νκ³ μ¬μ©μ μΈν°νμ΄μ€μ μ°κ²°νλ νλ‘μΈμ€λ₯Ό λ
Όμνμ΅λλ€. κ·Έλ€μ getController() λ©μλλ₯Ό μ¬μ©νκ³ κ³΅μ λ°μ΄ν° μ μ₯μμ λν Singleton ν¨ν΄μ ꡬννλ κ²μ ν¬ν¨νμ¬ μ»¨νΈλ‘€λ¬ κ°μ λ°μ΄ν°λ₯Ό μ λ¬νλ λ€μν λ°©λ²μ νꡬνμ΅λλ€. νμ λν νλ©΄ μ νμ ꡬννκ³ , λ€λ₯Έ νλ©΄μ λ‘λνκ³ κ·Έ μ¬μ΄μ λ°μ΄ν°λ₯Ό μ λ¬νλ λ°©λ²μ λ§λ€κ³ , λ€μν κΈ°μ μ μ¬μ©νμ¬ λ€λ₯Έ μλ리μ€λ₯Ό μ²λ¦¬νλ λ°μλ λ
Έλ ₯νμ΅λλ€.
λ€μ λ¨κ³
β’ κ°λ°ν: λ©μΈ νλ©΄, A νλ©΄ λ° B νλ©΄ μ¬μ΄μ μ μ ν νλ©΄ νμμ μ€μ ν©λλ€.
β’ κ°λ°ν: 컨νΈλ‘€λ¬ λ©μλλ₯Ό μ¬μ©νμ¬ νλ©΄ κ° λ°μ΄ν° μ μ‘ κΈ°λ₯μ ꡬνν©λλ€.
β’ κ°λ° ν: μ¬μ©μκ° μΌμΌ μΌμ μ κ΄λ¦¬ν μ μλ μ€μΌμ€λ§ μμ€ν
μ λ§λλλ€.
β’ κ°λ°ν: μ€μΌμ€λ§ κΈ°λ₯μ μν μΌμ κ΅¬μ± μμλ₯Ό κ°λ°ν©λλ€.
β’ κ°λ°ν: λ°μ΄ν°λ² μ΄μ€ κΈ°λ₯μ μν JDBC μ°κ²°μ μΊλ¦°λ μμ€ν
κ³Ό ν΅ν©ν©λλ€.
β’ κ°λ°ν: νμ¬ λ μ¨ μ 보λ₯Ό μ¬μ©νμ¬ UIμ λ μ¨ νμ κ΅¬μ± μμλ₯Ό λ§λλλ€.
β’ κ°λ°ν: νμ¬ μκ°μ 보μ¬μ£Όλ μκ° νμ κ΅¬μ± μμλ₯Ό ꡬνν©λλ€.
β’ κ°λ°ν: νλ‘κ·Έλ¨ μ’
λ£ κΈ°λ₯μ λν νμΈ μλ¦Όμ μΆκ°ν©λλ€.
μμ½
JavaFX 컨νΈλ‘€λ¬λ₯Ό UIμ μ°κ²°ν©λλ€.
μ΄ ν λ‘ μ JavaFX 컨νΈλ‘€λ¬λ₯Ό μμ±νκ³ μ¬μ©μ μΈν°νμ΄μ€μ μ°κ²°νλ λ° μ€μ μ λ‘λλ€. λ°νμλ Scene Builderλ₯Ό μ¬μ©νμ¬ λ μ΄λΈκ³Ό λ²νΌμ΄ μλ κ°λ¨ν UIλ₯Ό λ§λλ λ°©λ²μ 보μ¬μ£Όκ³ , κ·Έ λ€μ UI μμλ₯Ό 컨νΈλ‘€λ¬ ν΄λμ€μ μ°κ²°νλ λ°©λ²μ 보μ¬μ€λλ€. μ΄ λ¬Έμμμλ FXML νμΌμμ 컨νΈλ‘€λ¬λ₯Ό μλμΌλ‘ λλ Scene Builderλ₯Ό ν΅ν΄ μ§μ νλ λ°©λ²κ³Ό λ²νΌμ μ΄λ²€νΈ μ²λ¦¬ μ€μ λ°©λ²μ μ€λͺ
ν©λλ€. μ΄ κ³Όμ μλ MainController ν΄λμ€λ₯Ό μμ±νκ³ , FXMLμμ λ²νΌμ fx:idλ₯Ό μ€μ νλ©°, λ²νΌ μ‘μ
μ 컨νΈλ‘€λ¬ λ©μλμ μ°κ²°νλ κ²μ΄ ν¬ν¨λ©λλ€. μ°μ¬λ 컨νΈλ‘€λ¬μ λ³μ μ΄λ¦μ FXMLμ fx:id κ°κ³Ό μΌμΉμν€λ κ²μ΄ μ€μνλ€κ³ κ°μ‘°ν©λλ€.
μΌκ΄μ±μ΄ μλ νμλ‘
λ―Έν
κΈ°λ‘μ λ§€μ° λΆμ΄λμ΄ μκ³ μΌκ΄λ λ§₯λ½μ΄ λΆμ‘±νμ¬ μλ―Έ μλ μμ½μ μ 곡νκΈ° μ΄λ ΅μ΅λλ€. λνλ λͺ
νν λ°©ν₯μ΄λ λͺ©μ μμ΄ λ€μν κ΄λ ¨ μλ μ£Όμ λ‘ λμ΄κ°λλ€. 컨νΈλ‘€λ¬, μ½λ© ν
μ€νΈ, μ λ
μμ¬ λ° λ μ€ν λ 리뷰μ λν μΈκΈμ΄ μμ§λ§ μΌκ΄λ μ€λ λ λ μμ¬ κ²°μ νλ‘μΈμ€κ° λΆλͺ
νμ§ μμ΅λλ€. λνλ ꡬ쑰νλ νμ ν λ‘ λ³΄λ€λ λΆλ¦¬λ μ§μ λ€μ λͺ¨μμ²λΌ 보μ
λλ€.
JavaFX νλ©΄ μ ν λ° λ°μ΄ν° μ μ‘
νμμμ Alohaλ JavaFXμ νλ©΄ μ΄λ λ° λ°μ΄ν° μ μ‘ νλ‘μΈμ€μ λν΄ λ
Όμνμ΅λλ€. κ·Έλ€μ "Screen 2Β°C Recommendations"λΌλ μλ‘μ΄ νλ‘μ νΈλ₯Ό λ§λ€κ³ μ΄μ μ λ°°μ΄ λ² μ΄μ€λ₯Ό μ¬μ©νμ¬ νλ©΄ μμ§μμ ꡬννμ΅λλ€. λν λ‘κ·ΈμΈ νλ©΄κ³Ό λ©μΈ νλ©΄μ λ§λ€μκ³ , μ΄λ€ μ¬μ΄λ₯Ό μ νν μ μμμ΅λλ€. λ°μ΄ν° μ μ‘μ ν νλ©΄μμ λ€λ₯Έ νλ©΄μΌλ‘ λ°μ΄ν°λ₯Ό μ λ¬ν¨μΌλ‘μ¨ μμ°λμμ΅λλ€. νμ νλ‘μΈμ€λ₯Ό ν
μ€νΈνκ³ νΌλλ°±μ μ 곡νλλ‘ κΆμ₯λμμ΅λλ€.
JavaFX λ°μ΄ν° μ μ‘ λ°©λ²
μ΄ λ
Όμλ FXMLμ μ¬μ©νμ¬ JavaFX μ ν리μΌμ΄μ
μμ νλ©΄ κ° λ°μ΄ν° μ μ‘μ μ€μ μ λ‘λλ€. λ κ°μ§ μ£Όμ λ°©λ²μ μ΄ν΄λ΄
λλ€: getController() λ©μλλ₯Ό μ¬μ©νμ¬ μ»¨νΈλ‘€λ¬ κ° λ°μ΄ν°λ₯Ό μ λ¬νκ³ , 곡μ λ°μ΄ν° μ μ₯μλ₯Ό μν Singleton ν¨ν΄μ ꡬννλ κ²μ
λλ€. λ°νμλ FXMLLoaderλ₯Ό μ¬μ©νμ¬ μ»¨νΈλ‘€λ¬μ μ‘μΈμ€νκ³ λ°μ΄ν°λ₯Ό λ©μλ λ§€κ°λ³μλ‘ μ λ¬νλ λ°©λ²μ μ€λͺ
ν©λλ€. λν Singleton ν¨ν΄ μ κ·Ό λ°©μμ μν DataStorage ν΄λμ€ μμ±μ λν΄ μΈκΈν©λλ€. λνλ μ΄λ¬ν λ°μ΄ν° μ μ‘ λ°©λ²μ ꡬννκ³ μ°μ΅ν κ³νμΌλ‘ λ§λ¬΄λ¦¬λ©λλ€.
λ°μ΄ν° μ μ₯ μμ€ν
ꡬν
Allohaλ νλ‘μ νΈμμ λ°μ΄ν° μ μ₯ μμ€ν
ꡬνμ λν΄ λ
Όμνμ΅λλ€. κ·Έλ€μ λ¨μΌν€ ν¨ν΄μ μ¬μ©νμ¬ λ€μν νλ©΄μμ λ°μ΄ν° μΌκ΄μ±μ 보μ₯νλ λ°©λ²μ μ€λͺ
νμ΅λλ€. Allohaλ λν λ°μ΄ν° μ μ₯ μμ€ν
μμ λ°μ΄ν°λ₯Ό κ²μνκ³ νμνλ λ°©λ²μ μμ°νμ΅λλ€. κ·Έλ€μ λ°μ΄ν° κ²μ λ° νμλ₯Ό μ²λ¦¬νλ λ°©λ²μ μ¬μ©νλ κ²μ΄ μ€μνλ€κ³ κ°μ‘°νμ΅λλ€. νμ λν κ²μλ¬Όμ νμνκΈ° μν νλ©΄ μμ±μ λν΄ λ
ΌμνμΌλ©°, Allohaλ λ°μ΄ν° μ μ₯ μμ€ν
μμ κ²μλ¬Ό λͺ©λ‘μ μμ²νκ³ νμνλ λ°©λ²μ μ€λͺ
νμ΅λλ€.
JavaFX νλ©΄ κ° λ°μ΄ν° μ μ‘
μ΄ ν λ‘ μ JavaFXμμ νλ©΄ κ° λ°μ΄ν° μ μ‘μ μ€μ μ λ‘λλ€. λ°νμλ FXML λ‘λμ 컨νΈλ‘€λ¬λ₯Ό μ¬μ©νμ¬ λ€λ₯Έ νλ©΄ κ°μ λ°μ΄ν°λ₯Ό μ λ¬νλ λ°©λ²μ μ€λͺ
ν©λλ€. λ©μΈ νλ©΄κ³Ό 보쑰 νλ©΄(μ€ν¬λ¦° A)μ λ§λ€κ³ , λ°μ΄ν° μ
λ ₯μ© ν
μ€νΈ νλλ₯Ό μ€μ νκ³ , λ€μ νλ©΄μΌλ‘ μ΄λνλ λ²νΌλ 보μ¬μ€λλ€. μ΄ κ³Όμ μλ FXML νμΌμ λ‘λνκ³ μ»¨νΈλ‘€λ¬μ μ‘μΈμ€νλ©° λ°μ΄ν°λ₯Ό μ μ‘νλ λ©μλλ₯Ό μ¬μ©νλ κ²μ΄ ν¬ν¨λ©λλ€. μ€νΌμ»€λ λν μ μ‘λ λ°μ΄ν°λ‘ λ μ΄λΈκ³Ό κ°μ UI μμλ₯Ό μ
λ°μ΄νΈνλ λ°©λ²μ 보μ¬μ€λλ€.
JavaFX 컨νΈλ‘€λ¬ μμ± λ° μ°κ²°νκΈ°
μ΄ ν λ‘ μ JavaFX μ ν리μΌμ΄μ
μμ λ€λ₯Έ νλ©΄μ λν 컨νΈλ‘€λ¬λ₯Ό λ§λ€κ³ μ°κ²°νλ λ° μ€μ μ λ‘λλ€. Alohaλ νλ©΄ Bμ 컨νΈλ‘€λ¬λ₯Ό μμ±νκ³ , UI μμμ IDλ₯Ό ν λΉνλ©°, λ²νΌ λμ λ©μλλ₯Ό μ§μ νλ κ³Όμ μ μλ΄ν©λλ€. λν SceneBuilderλ₯Ό μ¬μ©νμ¬ μ»¨νΈλ‘€λ¬ μ½λλ₯Ό μμ±νλ λ°©λ²μ λ³΄μ¬ μ£Όκ³ FXML λ° μ»¨νΈλ‘€λ¬λ₯Ό λ‘λνκΈ°μν λ³λμ λ©μλλ₯Ό μμ±νμ¬ λ©μΈ ν΄λμ€λ₯Ό μ 리νλ λ°©λ²μ λν΄ μ€λͺ
ν©λλ€. λνλ Alohaκ° νλ©΄ Aλ₯Ό λ‘λ©ν λ μμΈλ₯Ό μ²λ¦¬νλ λ°©λ²μ μ€λͺ
νκ³ λλ½λ νλ©΄μ μ²λ¦¬νκΈ° μν λ€λ₯Έ μ κ·Ό λ°©μμ μ μνλ©΄μ λλ©λλ€.
컨νΈλ‘€λ¬ λ° νλ©΄ νμ ꡬν
νμ μ ν리μΌμ΄μ
μμ 컨νΈλ‘€λ¬μ νλ©΄ νμμ ꡬνμ λ
Όμν©λλ€. κ·Έλ€μ B 컨νΈλ‘€λ¬λ₯Ό λ§λ€κ³ 컨νΈλ‘€λ¬ κ°μ λ°μ΄ν°λ₯Ό μμ νκ³ μ λ¬νλ λ°©λ²μ μ μν©λλ€. λν νλ©΄ μ νμ ꡬννκ³ , λ€λ₯Έ νλ©΄μ λ‘λνκ³ κ·Έ μ¬μ΄μ λ°μ΄ν°λ₯Ό μ λ¬νλ λ°©λ²μ κ°λ°ν©λλ€. νμ λ©μλ μ μμ νλ©΄ νμμμ λͺ κ°μ§ μ΄λ €μμ κ²ͺμ§λ§, ν΄κ²°μ±
μ μ°Ύκ³ μ½λ ꡬ쑰λ₯Ό κ°μ νκΈ° μν΄ νλ ₯ν©λλ€.
ALOHAμ λ°©λ²κ³Ό κΈ°μ μ λν ν λ‘
νμμμ ALOHAλ λ€μν μλ리μ€λ₯Ό μ²λ¦¬νκΈ°μν λ€μν λ°©λ²κ³Ό κΈ°μ μ λ
Όμνμ΅λλ€. μ¬λ¬ κ²½λ‘ μ¬μ© λ° μΈ λ² μ¬μ© λ λ°©λ²μ ꡬνμ νꡬνμ΅λλ€. ALOHAλ λν stage κ°μ²΄λ₯Ό μ¬μ©νμ¬ νλ‘κ·Έλ¨μ μ’
λ£νλ λ°©λ²μ μμ°νκ³ νμΈ μλ¦Ό μ°½μ μ¬μ©μ λν΄ μ€λͺ
νμ΅λλ€. λν ꡬλ
λ° νλΆμ λν μ£Όμ λ λ€λ£¨μμ΅λλ€. λ§μ§λ§μ, ALOHAλ λ μ¨μ μκ° μ 보λ₯Ό κ°μ§ λ¬λ ₯ μΈν°νμ΄μ€λ₯Ό λ§λ€ κ²μ μ μνμ΅λλ€.