Search

AI3 - 18일차 μ˜€ν›„

λΉ λ₯Έ μš”μ•½ νŒ€μ€ ν™”λ©΄ κ°„ 데이터 전솑에 쀑점을 두고 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λŠ” 날씨와 μ‹œκ°„ 정보λ₯Ό κ°€μ§„ 달λ ₯ μΈν„°νŽ˜μ΄μŠ€λ₯Ό λ§Œλ“€ 것을 μ œμ•ˆν–ˆμŠ΅λ‹ˆλ‹€.