MVC Pattern์ ๊ธฐ๋ฐํ GUI ๋ผ์ด๋ธ๋ฌ๋ฆฌ JavaFX
Java GUI Programming ๋ผ์ด๋ธ๋ฌ๋ฆฌ์๋ AWT, SWT, Swing, JavaFX๊ฐ ์์ต๋๋ค. ์ ์ ๊ฒฝ์ฐ, AWT์ Swing์ผ๋ก๋ง ํ๋ก๊ทธ๋๋ฐ ํ์๋๋ฐ์. ์๋ง ํด๋ณด์ ๋ถ๋ค์ด๋ผ๋ฉด, Java์ GUI ํ๋ก๊ทธ๋๋ฐ์ด ์ข ๋ต๋ตํจ์ ๋ง์ด ๋๋ผ์ค ๊ฒ์ ๋๋ค.
์ ๊ฐ GUI Programming์ผ๋ก ์ฒ์ ์ ํ๋ ๊ฒ์ Visual Basic 6.0 ์ด์์ต๋๋ค. ๋ฑ๋ฑํ๊ณ ๊ณ ์ ์ ์ธ ๋๋์ UI์์ง๋ง ๋ถ๋ช ํ ๊ฒ์ ์ปดํฌ๋ํธ๋ฅผ ์ด์ฉํ ํ๋ก๊ทธ๋๋ฐ์ด์ ๊ต์ฅํ ์ฝ๋ค๋ ์ ๊ณผ ๋๋ถ์ด ๋์์ธ์ ๊ทธ๋ฅ ๋ง์ฐ์ค๋ก๋ง ์๋ค๊ฐ๋ค ํ ์ ์์๋ค๋ ์ ์ด ๋งค์ฐ ๋ฉ๋ฆฌํธ ์์์ง์. ๊ทธ๋ฆฌ๊ณ , ๋ก์ง๋ง ์ฝ๋๋ก ์ง๋ฉด, ํ๋ก๊ทธ๋จ์ด ๊ธ๋ฐฉ ๊ฐ๋ฐ์ด ๋์ด ์์ฐ์ฑ์ด ๋งค์ฐ ์ข์๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ด๊ธฐ๋ ํ์์ต๋๋ค. ๋ฌผ๋ก ์ง๊ธ๋ ์กด์ฌํ๋ ์ธ์ด์ง์.
ํ์ง๋ง ์ ์ผํ ๋จ์ ์ "Windows" ์์๋ง ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค๋ ์ ์ด์์ต๋๋ค. ๋ฉํฐ ํ๋ซํผ ์ํํธ์จ์ด๋ฅผ ์ง์ํ๋ ๋ฐ ๋งค์ฐ ํฐ ํ๊ณ๊ฐ ์์์ง์. ์ง๊ธ๋ Windows ํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐํ๋ ๋ฐ๋ C#๋งํผ์ด๋ ๋๋จํ ๊ฒ์ด ์์ ์ ๋๋ ๋ง์ด ์ฌ์ค์ผ ์ ๋์ ๋๋ค.
์ง๊ธ์ Mono๋ผ๋ ํ๋ก์ ํธ๊ฐ Silverlight์ ์ด์ด์ C#๊ณผ .NET์๋ ํ์ ๊ธฐ์ธ์ฌ Linux์ ๊ฐ์ ์ด์์ฒด์ ์์๋ ๊ฐ๋ฐ์ ๊ฐ๋ฅํ์ง๋ง, ๊ทธ๋ ๊ฒ ํฐ ๋ณํ์ ์กฐ์ง์ ๋ณด์ด์ง ๋ชปํ๊ณ ์์ต๋๋ค. ๊ทธ๋์ ์์ง๊น์ง๋ ๋ฉํฐ ํ๋ซํผ์ฉ์ผ๋ก ๋ง๋ค๊ธฐ ์ข์ ๊ฐ๋ฐ์ ์ธ์ด๋ Java๊ฐ ์๋๊ฐ ์๊ฐํฉ๋๋ค.
ํ์ง๋ง Java์์ ์ ๊ณตํ๋ Swing ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋๋ฌด ๋๋ ธ๊ณ , ์ค๋ฅ๋ ๊ต์ฅํ ์ฌํด์ ๊ฐ๋ฐ์๋ค ์ฌ์ด์์ ๊ต์ฅํ ์ ๋ช ์ด ๋๊ธฐ๋ ํ์ง์.. ๊ทธ๋์ Java๋ก๋ ๊ฑฐ์ GUI ํ๋ก๊ทธ๋จ ๊ฐ๋ฐ์ ์ํ๋ค ์ํผํ์๋๋ฐ์.
๊ทธ๋ฐ๋ฐ, Swing์ด ๋์จ ์ดํ, Java์ GUI ํ๋ก๊ทธ๋๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๋ ๋ค์ ์๋ก ๋ฑ์ฅํ๊ฒ ๋์๋๋ฐ์. ๋ฐ๋ก JavaFX๋ผ๋ ๊ฒ์ ๋๋ค.
What is JavaFX?
JavaFX๋ Java SE(Standard Edition)์ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ Swing์ ๋์ฒดํ๊ธฐ ์ํด ๋ง๋ค์ด์ก์ต๋๋ค. Swing์ ์ ํ์ ๋ถ๋ค์ ์์๊ฒ ์ง๋ง, ๊ทธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๋งค์ฐ ๋ฌด๊ฒ๊ณ , ๋๋ ค์ ์ ์ฐ์ง๋ ์๊ณ , ๊ฑฐ์ ๋ฌตํ๋๊ณ ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์ ํ๋์ด๊ธฐ๋ ํ์ฃ .
๊ทธ๋ฐ๋ฐ, ์ด JavaFX๋ ๊ธฐ์กด Swing๋ณด๋ค ๊ฐ๋ณ๊ณ , ๋์ฑ ๋ ์ข์ ๊ฒ์ ๊ทธ๋ํฝ์ ์ง์ํ๋ค๋ ์ ๊ณผ Web์์๋ ํธํ์ด ๋๋ค๋ ๊ฒ์ ๋๋ค. ์ฌ๊ธฐ์ ๊ทธ๋ํฝ์ ์ง์ํ๋ค๋ ๊ฒ์ ๊ทธ๋ํ, ์ด๋ฏธ์ง, ์์, ์ฌ์ด๋ ๋ฑ์ ๋ฉํฐ๋ฏธ๋์ด๋ฅผ ์ด์ผ๊ธฐํฉ๋๋ค.
๋ณธ๋ JavaFX๋ RIA(Rich Internet Application)์ ๊ฐ๋ฐ์ ์ํด ๋ง๋ค์ด์ง ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค. Java ๊ธฐ๋ฐ์์ ๋์ํ๊ธฐ ๋๋ฌธ์ Linux, Windows, OS X ํ ๊ฒ์์ด Java๋ฅผ ์ค์นํ ์ ์๋ ํ๋ซํผ์ด๋ผ๋ฉด ์ด๋์๋ ์ง ์ฌ์ฉ ๊ฐ๋ฅํ๋ค๋ ์ฅ์ ์ ์ง๋๊ณ ์์ต๋๋ค.
์ง๊ธ ํ์ฌ JavaFX๋ 2.2 ๋ฒ์ ๊น์ง ์ถ์๋ ์ํ์ ๋๋ค. ๋ณธ๋ JavaFX๋ JavaFX Script๋ผ๊ณ ํ๋ ๋ณ๊ฐ์ ์ธ์ด๋ฅผ ์ฌ์ฉํด ๊ฐ๋ฐ๋์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ง๋ง, 1.0 ์ดํ, 2.0์์ ๋ถํฐ๋ ์ผ๋ฐ Java ์ธ์ด๋ก๋ ๊ฐ๋ฐ์ด ๊ฐ๋ฅํฉ๋๋ค. ๋, RIA์ ๊ฐ๋ฐ์ ์ํด ๋ง๋ค์ด์ง ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด์ง๋ง, ์ง๊ธ์ HTML5์ jQuery ๋ฑ ์คํฌ๋ฆฝํธ ์ธ์ด๋ค์ด ์ ์ฒ๋ฆฌ๋์ด ์์ด์ JavaFX๋ ๊ฑฐ์ ๊ทธ ์กด์ฌ๊ฐ ์ํ์ง ์ ๋์ ๋๋ค.
ํ์ง๋ง Java ์ธ์ด๋ฅผ ์ด์ฉํด GUI ํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐํ๊ณ ์ ํ๋ค๋ฉด, Swing ๋ณด๋ค๋ JavaFX๊ฐ ๋ซ์ง ์์๊น ์๊ฐํฉ๋๋ค.
MVC Design Pattern
์ด ํฌ์คํธ์ ๋ํ ์ค์ฌ์ ์ธ ์ฃผ์ ๋ ์๋์ง๋ง, MVC ํ๋ก๊ทธ๋๋ฐ ํจํด์ ๋ชจ๋ฅด๋ ๋ถ๋ค์ ์ํด์ ๊ฐ๋จํ๊ฒ MVC ํ๋ก๊ทธ๋๋ฐ ํจํด์ ๋ํด ์ค๋ช ์ ํ๊ณ ์ ํฉ๋๋ค.
ํ๋ก๊ทธ๋๋ฐ์๋ ๋์์ธ ํจํด์ด ์กด์ฌํฉ๋๋ค. ์ด ๋์์ธ ํจํด์ ์ํํธ์จ์ด์ ๊ฐ๋ฐ ๋ฐฉ๋ฒ์ ์ผ์ข ์ด๊ธฐ๋ ํ๋ฐ์. ์๋ฅผ ๋ค์๋ฉด, ์ฐ๋ฆฌ๊ฐ ๊ฑด์ถ๋ฌผ์ ๋ง๋ค๊ฑฐ๋ ์ด๋ค ์ ํ์ ๋ง๋ค ๋, ํ์ํ ๊ฒ์ด ๋ฐ๋ก ์ค๊ณ๋์ ๋๋ค. ์ด ์ค๊ณ๋๋ ์ฌ๋ฌ๋ถ๋ค์ด ๋ฌด์ธ๊ฐ๋ฅผ ๋ง๋ค๊ธฐ ์ ์ ๋ฏธ๋ฆฌ ๊ตฌ์ฑํด๋์ ์ด๋ค ๊ตฌ์๋์ด๊ธฐ๋ ํ์ฃ .
๋์์ธ ํจํด ๋ํ ์ด์ ๋น์ทํฉ๋๋ค. ์ด๋ค ์ ํด์ง ํ์ด ๋ฏธ๋ฆฌ ๊ตฌ์ฑ๋ ๊ฒ์ ๊ทธ๋๋ก ์ฌ์ฉํด ํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐํ๋ ๊ฒ์ ๋๋ค.
๊ทธ๋ผ MVC ๋์์ธ ํจํด์ ๋ฌด์์ผ๊น์?
MVC๋ Model, View, Controller์ ์ฝ์์ ๋๋ค. View๋ ์ฌ์ฉ์๊ฐ ๋ณด๋ ์๊ฐ์ ์ธ ํ์ด์ง, (์น์ผ๋ก ๋งํ๋ฉด, HTML ์ฝ๋), Model์ ์ด๋ค ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ณ ์ ํ๋ ํํ, Controller๋ View์ Model์ด ์ํธ ๊ฐ์ ์ด๋ฒคํธ๋ ํ๋ก๊ทธ๋จ์ ๋์์ ํ๋ ๋ก์ง ์ฝ๋๋ฅผ ์ด์ผ๊ธฐํฉ๋๋ค. (์น์ผ๋ก ๋งํ๋ฉด, PHP, Java ์ฝ๋)
์ ์ฌ์ง์ ๋ฏธ๊ตญ ์คํ ํฌ๋ ๋ํ๊ต์ Developing Apps for iOS ๊ฐ์์ ๋์ค๋ MVC ํจํด ์ฌ๋ผ์ด๋์ ์ผ๋ถ์
๋๋ค. ๊ฐ๋ตํ๊ฒ ์ค๋ช
๋๋ฆฌ์๋ฉด..
์ฌ์ฉ์๋ ๋งจ ์ฒ์ ํ๋ก๊ทธ๋จ์ ์คํํ ๋, ์ด๋ค View๋ฅผ ๋ณด๊ฒ ๋ฉ๋๋ค. ๊ทธ๋ผ ํด๋น View์์ ์ด๋ค ๋ฒํผ์ด๋ ์ด๋ฒคํธ๋ฅผ ํธ์ถํ ๊ฒ์ ๋๋ค. ํธ์ถํ๊ฒ ๋๋ฉด ํธ์ถ๋ ๋ช ๋ น์ Controller์๊ฒ ์ ๋ฌ์ด ๋๊ณ , Controller๋ Model์ ํตํด์ ๊ฒฐ๊ณผ๋ฌผ์ ๊ฐ์ ธ์ค๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ฌผ์ ๋ฐํ์ผ๋ก View๋ฅผ ์ ์ดํด์ ์ต์ข ์ ์ผ๋ก ์ฌ์ฉ์์๊ฒ ๊ฒฐ๊ณผ๋ฌผ์ View์ ๋ณด์ฌ์ฃผ๋ ๋ฐฉ์์ ๋์์ธ ํจํด์ ๋๋ค.
MVC ํจํด์ ๊ธฐ๋ฐํ JavaFX
JavaFX๋ Swing๊ณผ ๋ฌ๋ฆฌ View์ Controller๊ฐ ๋ถ๋ฆฌ๋ ์ ์์ต๋๋ค. ์ด์ ๋น์ทํ ์๋ก, Spring๊ณผ Android Application์ด ์์ฃ . Android Application์ ์๋ก ๋ค์๋ฉด, Android Application์ Java ์ฝ๋๋ก Controller๋ฅผ, XML ์ธ์ด๋ก View๋ฅผ ๊ตฌ์ฑํ๋ ๊ฒ์ฒ๋ผ ๋ง์ด์ฃ .
JavaFX๋ ์ด์ฒ๋ผ View์ Controller๊ฐ ๋ถ๋ฆฌ๋ ํํ๋ก ์กด์ฌํฉ๋๋ค. ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ View๋ก FXML์ด๋ผ๊ณ ํ๋ ๋งํฌ์ ์ธ์ด๋ฅผ ์ฌ์ฉํ๋๋ฐ, ์ด ์ธ์ด๋ ์์ ฏ(์ปดํฌ๋ํธ)์ ๋ฐฐ์น๋ฅผ ์ง๊ด์ ์ผ๋ก ํํํด์ฃผ๊ธฐ ์ํ ์ธ์ด์ด๊ณ , Scene Builder๋ผ๊ณ ํ๋ ๊ฐ๋ฐ ๋๊ตฌ๋ฅผ ์ด์ฉํด ๋ง์ฐ์ค๋ก ์กฐ์ํด ๋ฐฐ์น๋ฅผ ์ฝ๊ฒ ํ ์ ์๋ค๋ ์ฅ์ ์ ์ง๋๊ณ ์์ต๋๋ค.
์ ์ฌ์ง์ Scene Builder๋ฅผ ์คํํ ๋ชจ์ต์ ๋๋ค.
FXML์ XML๊ณผ ์ ์ฌํ ๋งํฌ์ ์ธ์ด์ธ๋ฐ, ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ XML๊ณผ ๋ณ๋ฐ ์ฐจ์ด๊ฐ ์์ต๋๋ค. ๊ทธ๋ฌ๋ฏ๋ก ์๋๋ก์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํด๋ณด์ ๋ถ๋ค์ด๋ผ๋ฉด, ์๋ง ์ฝ๊ฒ ์ ํ์ค ์ ์์ ๊ฑฐ๋ผ ์๊ฐํฉ๋๋ค.
JavaFX ์ค์น์ ๊ฐ๋ฐ ๋๊ตฌ
๊ธฐ๋ณธ์ ์ผ๋ก JavaFX๋ JDK-SE-1.7 ๋ฒ์ ์ด์์ ์ค์นํ๋ฉด ๊ฐ์ด ์ค์น๊ฐ ๋ฉ๋๋ค๋ง, Linux ์ด์์ฒด์ ์์๋ ๋ณ๋์ ํจํค์ง๋ฅผ ์ค์นํด์ผ ํฉ๋๋ค.
$ sudo apt install openjfx
Ubuntu, Debian ์ด์์ฒด์ ์์ JavaFX๋ฅผ ์ฌ์ฉํ์๋ ค๋ฉด ์ ๋ช ๋ น์ด๋ฅผ ์ด์ฉํด์, openjfx ํจํค์ง๋ฅผ ์ค์นํ์ ์ผ ๋ฉ๋๋ค.
JavaFX๋ฅผ ๊ฐ๋ฐํ ์ ์๋ ๋๊ตฌ๋ฅผ ๋ํ์ ์ธ ๋ช ๊ฐ๋ง ์ ์ถํด๋ดค์ต๋๋ค.
- IntelliJ IDEA
- NetBeans
- eFXclipse
์ ๋ ๊ฐ์ธ์ ์ผ๋ก IntelliJ IDEA๋ฅผ Java ๊ฐ๋ฐ ํ๋ก๊ทธ๋จ์ผ๋ก ์ฌ์ฉํ๊ณ ์๊ธฐ ๋๋ฌธ์, JavaFX Application๋ IntelliJ IDEA์์ ๊ฐ๋ฐํ๊ณ ์์ต๋๋ค. ์์ง ํ์ ์ ๋ถ์ด๋ผ์, ๋ง์๊ป Ultimate์ ์ฌ์ฉํ๊ณ ์๋ ๊ฒ๋ ์์ง๋ง ๋ฌด๋ฃ ๊ฐ๋ฐ ๋๊ตฌ์ธ NetBeans๋ฅผ ์จ๋ณด๋. ์ญ์ IntelliJ๋ฅผ ์ฐ๋ค๊ฐ ์ค๊ธฐ์๋ ๋ญ๊ฐ ๋ถํธํ๋ค๋ ์ ์ด ๋ง์์ต๋๋ค. ^^;
๊ฐ๋จํ JavaFX Application ์์
๊ทธ๋ผ IntelliJ IDEA๋ฅผ ์ด์ฉํด์ ๊ฐ๋จํ JavaFX Application์ ๋ง๋ค์ด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
IntelliJ IDEA์์ New Project ๋ฉ๋ด๋ฅผ ์ ํํ๋ฉด, ์ ์ฌ์ง๊ณผ ๊ฐ์ด JavaFX Application ํญ๋ชฉ์ด ๋์ต๋๋ค. ํด๋น ํญ๋ชฉ์ ์ด์ฉํด์ ์๋ก์ด ํ๋ก์ ํธ๋ฅผ ๋ง๋ญ๋๋ค.
๊ทธ๋ผ Main Class๊ฐ ์๋์ผ๋ก ๋ง๋ค์ด์ง๋๋ฐ์. ์ด Main Class๋ JavaFX์์ ๊ฐ์ฅ ์ฒ์ ์คํํ๋ ํด๋์ค๋ก, ์ด ํด๋์ค์๋ ๋ฐ๋์ Application ํด๋์ค๊ฐ ์์๋์ด์ผ ํ๊ณ , start ๋ฉ์๋๊ฐ ์ค๋ฒ๋ผ์ด๋ฉ ๋์ด ์์ด์ผ ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ , Java Application์ ๋ฉ์ธ ํจ์์ธ main ํจ์์ ๋ฐ๋์ ์ ์ธ๋์ด ์์ด์ผ ๊ฐ์ฅ ์ฒ์ ์คํ๋ฉ๋๋ค.
JavaFX์์๋ Parent๋ผ๋ ๊ฐ์ฒด๋ฅผ ์ด์ฉํด FXML ํ์ผ์ ์ฝ์ด์ฌ ์ ์๊ณ , Stage ๊ฐ์ฒด๋ฅผ ์ด์ฉํด View๋ฅผ ๋์ธ ์ ์์ต๋๋ค.
FXML ํ์ผ์ View๋ฅผ ๊ตฌ์ฑํ๋ฉด, Controller์ ์ํธ์์ฉ์ด ๋์ด์ผ ํฉ๋๋ค. ์ด๋ FXML์์ fx namespace์ ์กด์ฌํ๋ controller๋ผ๋ ์์ฑ์ ํตํด ์ํธ์์ฉํ ์ ์์ต๋๋ค.
FXML์์ ์ปดํฌ๋ํธ๋ฅผ ๋ถ๋ฌ์ค๋ ค๋ฉด, ์ด๋
ธํ
์ด์
(Annotation)์ ์ด์ฉํด ๋ถ๋ฌ์ค์๋ฉด ๋ฉ๋๋ค. ๋จ, ๋ถ๋ฌ์ค์ค ๋ ๋ณ์ ์ด๋ฆ์ FXML์ fx:id์ ๋์ผํ๊ฒ ์ฃผ์ด์ผ ํฉ๋๋ค. ๋ค๋ฅด๊ฒ ์ฃผ๋ฉด, ๋ถ๋ฌ์ค์ง๋ฅผ ๋ชปํ๋ฏ๋ก ์ฌ์ฉํด ๋ฐ๋์ ์ ์.
๋๋จธ์ง๋ Java ์ฝ๋์ ๋๊ฐ์ด ์ฌ์ฉํ์๋ฉด ๋ฉ๋๋ค.
๊ทธ๋ผ ๊ฐ๋จํ ์์ ๋ก ์ฃผ์๋ก ํ๋ก๊ทธ๋จ์ ํ๋ ๋ง๋ค์ด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
๊ตฌ์ฑ์ ์์ ๊ฐ์ด MVC ํจํด์ ๊ตฌ์ฑ์ ๋ฐ๋ฅด๋๋ก ํ๊ฒ ์ต๋๋ค. ์ฃผ์๋ก์๋ ์ฌ๋์ ์ ๋ณด๊ฐ ๋ค์ด๊ฐ๊ธฐ ๋๋ฌธ์, Person์ด๋ผ๋ Model์ ์์ฑํ๊ณ , samples.fxml๊ณผ Controller.java๋ก ๊ตฌ์ฑํด๋ดค์ต๋๋ค.
์ ์์ค ์ฝ๋๋ Model ์ฝ๋์ ๋๋ค. ์ฌ๋์ ๋ํ ์ ๋ณด๊ฐ ๋ค์ด๊ฐ๊ฒ ์ฃ ? ์ฃผ์๋ก์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ด๋ฆ, ์ ํ๋ฒํธ, ์ด๋ฉ์ผ ์ฃผ์๊ฐ ๋ค์ด๊ฐ๋๋ค. ๊ทธ๋ฐ๋ฐ, ์ ๋ ์ธ๊ตญ ํ์์ ๋ง์ถฐ First Name, Last Name์ ์ด์ฉํด ์ฑ๊ณผ ์ด๋ฆ์ ๋ณ๋๋ก ๊ตฌ๋ถ ์ง์ด์ ๋ง๋ค์ด๋ดค์ต๋๋ค.
View๋ FXML ํ์ผ๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค. ์ฃผ์๋ก์ ์ ๋ TableView๋ฅผ ์ด์ฉํด์ ํ์ ์ฐจ๊ณก์ฐจ๊ณก ๋ฐ์ดํฐ๋ฅผ ์์๋๋ ํํ๋ก ํ์ฌ, ์ถ๊ฐ์ ์ญ์ ๋ง ๊ฐ๋ฅํ๋๋ก ๋ฒํผ 2๊ฐ๋ฅผ ์์ฑํ๊ณ , ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฅํ ์ ์๋๋ก ํ ์คํธ ์์๋ฅผ 4๊ฐ๋ก ๊ตฌ์ฑํ์์ต๋๋ค.
๋ง์ง๋ง์ผ๋ก Controller์ ๋๋ค. ์ถ๊ฐ ๋ฒํผ์ ํด๋ฆญํ๋ฉด, ์ถ๊ฐ๋์์ต๋๋ค. ๋ผ๋ ๋ฉ์์ง์ ํจ๊ป ๋ด์ฉ์ด TableView์ ์ถ๊ฐ๋ฉ๋๋ค. ์ญ์ ๋ฅผ ํ๋ฉด, ํด๋น ๋ด์ฉ์ด ์ญ์ ๋ฉ๋๋ค. ๋ค๋ง, ์ฌ๊ธฐ์ ์๊ตฌ์ ์ผ๋ก ๋ณด๊ดํ ์ ์๋ ํ์ผ ์ ์ฅ์ ๋ํ ์ฝ๋๋ ์ ์ง ์์์ต๋๋ค.
์ต์ข ์ฌ์ฉ์์๊ฒ ํ์๋๋ ํ๋ก๊ทธ๋จ์ ๋ชจ์ต์ ๋๋ค.
๋ง์น๋ฉฐ...
์ฌ๊ธฐ๊น์ง JavaFX์ ๋ํ ์ค๋ช ๊ณผ ๊ฐ๋จํ ์์ ํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐํด๋ดค์ต๋๋ค.
Java์ ๋ํ ๊ฐ๋ฐ์ญ๋์ด ์์ผ์ ๋ถ์ด๋ผ๋ฉด, ์ถฉ๋ถํ ๊ฐ๋ฐํ ์ ์๋ JavaFX ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค. ๋ช ๋ฒ ์ ๋ ์จ๋ดค์ง๋ง Swing์ ๋นํด์๋ ๋ช ๋ฐฐ๋ ์ข๊ณ , ๋จ์ ์ด ์๋ค๋ฉด, FXML๋ก ์ฝ๋ฉํ๊ธฐ ์ํด ์ฌ์ฉํ๋ Scene Builder๊ฐ ๋ฒ๊ทธ๊ฐ ๋ง์ด ์กด์ฌํ๋ค๋ ์ ์ ๋๋ค.
์ค์ ๋ก Oracle ํํ์ด์ง์์ ์ ๊ณตํ๋ Scene Builder๊ฐ ์์ต๋๋ค. ์ด ๋ฒ์ ์ Scene Builder๋ FXCollection ๋ฑ์ ์ธ๋ถ ํ๊ทธ๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ์ฌ์ฉ์ ํด๋์ค๋ฅผ ์ฌ์ฉํ๋ฉด ํ๋ก๊ทธ๋จ์ ์คํํ ์ ์๋ค๋ ์ค๋ฅ๋ฅผ ๋ฑ์ด๋ด๋ ๋ฒ๊ทธ๊ฐ ์กด์ฌํฉ๋๋ค.
๊ทธ๋์ ์ ๋ Gluon์์ ์ ๊ณตํ๋ Scene Builder 8 ๋ฒ์ ์ ์ฌ์ฉํฉ๋๋ค. ์๋์ ๋ฒํผ์ ํด๋ฆญํ์๋ฉด ๋ค์ด๋ก๋ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
๊ทธ ์ธ JavaFX์์๋ ๊ทธ๋ํ, 3D ๋ฑ ์ฌ๋ฌ๊ฐ์ง ๊ทธ๋ํฝ ์์๋ค์ด ํฌํจ๋์ด ์๊ณ , ๋ฉ๋ชจ๋ฆฌ ๋์๊ฐ ์ผ๋ถ ์กด์ฌํ๋ ํธ์ด๊ธด ํ์ง๋ง, Swing ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋นํ๋ฉด ์๋๋ ํจ์ฌ ๋น ๋ฅด๊ณ , ์ข์ ํธ์ ๋๋ค. ํน์๋ผ๋ Java GUI Application์ ๊ฐ๋ฐํ์๋ ๋ถ์ด๋ผ๋ฉด, ํด๋น ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์กฐ์ฌ์ค๋ ์ถ์ฒํด๋ด ๋๋ค.
ํ ๊ฐ์ง ๋, ๊ธฐ์กด์ Swing์ผ๋ก ๊ฐ๋ฐํ์ จ๋ ํ๋ก๊ทธ๋จ๋ JavaFX์ ์๋ฒฝํ๊ฒ ํธํ๋ฉ๋๋ค. JavaFX์์๋ ๊ธฐ์กด์ AWT, SWT, Swing์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์, ๋๋ฆฐ ์๋์ ๋ถํธํ Swing ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ๋ถํธํจ์ ๊ฒช์ผ์๋ ๊ฐ๋ฐ์ ๋ถ๋ค์ด๋ผ๋ฉด, ์ํ JavaFX๋ก ๊ฐ์ํ๋ณด๊ธฐ๋ฅผ ๊ถํฉ๋๋ค.
'Programming > JavaFX' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Scene Builder 8.3.0 ์ฌ์ฉ์, Segmentation Fault ์ค๋ฅ ์กฐ์น ๋ฐฉ๋ฒ (Ubuntu) (0) | 2017.06.26 |
---|