the jfc swing a guide to constructing guis (introduction)

24
THE JFC SWING A Guide to Constructing GUIs (Introduction) Data Warehousing Lab. Data Warehousing Lab. Cho Hye-Young Cho Hye-Young

Upload: adia

Post on 05-Jan-2016

85 views

Category:

Documents


0 download

DESCRIPTION

THE JFC SWING A Guide to Constructing GUIs (Introduction). Data Warehousing Lab. Cho Hye-Young. Book & Reference http://java.sun.com/docs/books/tutorial/uiswing/index.html The JFC Swing Tutorial A Guide to Constructing GUIs by Kathy Walrath & Mary Campione. INDEX. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: THE JFC SWING A Guide to  Constructing GUIs (Introduction)

THE JFC SWINGA Guide to Constructing GUIs

(Introduction)

Data Warehousing Lab.Data Warehousing Lab.

Cho Hye-YoungCho Hye-Young

Page 2: THE JFC SWING A Guide to  Constructing GUIs (Introduction)

2Data Warehousing

Lab.DW

INDEX

Getting Started with Swing Getting Started with Swing Swing Features and Concepts Swing Features and Concepts Using Swing ComponentsUsing Swing Components

Book & ReferenceBook & Referencehttp://java.sun.com/docs/books/tutorial/uiswing/index.htmlThe JFC Swing Tutorial

A Guide to Constructing GUIs

by Kathy Walrath & Mary Campione

Page 3: THE JFC SWING A Guide to  Constructing GUIs (Introduction)

3Data Warehousing

Lab.DW

Getting Started with Swing

1. JFC1. JFC ์™€ ์Šค์œ™์— ๋Œ€ํ•ด์™€ ์Šค์œ™์— ๋Œ€ํ•ด 2. 2. ์Šค์œ™ ํ”„๋กœ๊ทธ๋žจ์˜ ์ปดํŒŒ์ผ๊ณผ ์‹คํ–‰์Šค์œ™ ํ”„๋กœ๊ทธ๋žจ์˜ ์ปดํŒŒ์ผ๊ณผ ์‹คํ–‰ 3. 3. ์Šค์œ™ ์• ํ”Œ๋ฆฟ์˜ ์‹คํ–‰์Šค์œ™ ์• ํ”Œ๋ฆฟ์˜ ์‹คํ–‰ 4. 4. ์Šค์œ™ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ฝ”๋“œ ๋ง›๋ณด๊ธฐ์Šค์œ™ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ฝ”๋“œ ๋ง›๋ณด๊ธฐ

Page 4: THE JFC SWING A Guide to  Constructing GUIs (Introduction)

4Data Warehousing

Lab.DW

1. JFC ์™€ ์Šค์œ™์— ๋Œ€ํ•ด JFCJFC ์™€ ์Šค์œ™์ด๋ž€์™€ ์Šค์œ™์ด๋ž€ ??

JFC(Java Foundation Classes) GUIGUI ๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ์ผ๋ จ์˜ ๊ธฐ๋Šฅ ์š”์†Œ๋“ค์„ ๋ฌถ์€ ๊ฒƒ๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ์ผ๋ จ์˜ ๊ธฐ๋Šฅ ์š”์†Œ๋“ค์„ ๋ฌถ์€ ๊ฒƒ JFC JFC ๊ธฐ๋Šฅ ์š”์†Œ๊ธฐ๋Šฅ ์š”์†Œ

์Šค์œ™ ์ปดํฌ๋„ŒํŠธ๋“ค ๋ฒ„ํŠผ๋ฒ„ํŠผ , , ์Šคํ”Œ๋ฆฌํŠธ ์ฐฝ์Šคํ”Œ๋ฆฌํŠธ ์ฐฝ , , ํ…Œ์ด๋ธ” ๋“ฑ ํ…Œ์ด๋ธ” ๋“ฑ

๊ต์ฒด ๊ฐ€๋Šฅํ•œ ์™ธ์–‘ (pluggable look & feel) ์ง€์› ์™ธ์–‘ ์ฆ‰์™ธ์–‘ ์ฆ‰ , , GUIGUI ์˜ ๊ฒ‰๋ชจ์Šต๊ณผ ์ž‘๋™ ๋ฐฉ์‹์„ ์„ ํƒ์˜ ๊ฒ‰๋ชจ์Šต๊ณผ ์ž‘๋™ ๋ฐฉ์‹์„ ์„ ํƒ // ๊ต์ฒดํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ธฐ๋Šฅ ๊ต์ฒดํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ธฐ๋Šฅ

์ ‘๊ทผ ์ง€์› API(Accessiblity API) ํ™”๋ฉด์˜ ๋‚ด์šฉ์„ ์Œ์„ฑ์œผ๋กœ ์ฝ์–ด์ฃผ๊ฑฐ๋‚˜ ์ ์ž๋กœ ์ถœ๋ ฅํ•˜๋Š” ๋“ฑ์˜ ์žฅ์• ์ž์šฉ ํ™”๋ฉด์˜ ๋‚ด์šฉ์„ ์Œ์„ฑ์œผ๋กœ ์ฝ์–ด์ฃผ๊ฑฐ๋‚˜ ์ ์ž๋กœ ์ถœ๋ ฅํ•˜๋Š” ๋“ฑ์˜ ์žฅ์• ์ž์šฉ

์ธํ„ฐํŽ˜์ด์Šค์— ๊ด€๋ จ๋œ ๊ธฐ๋Šฅ์ธํ„ฐํŽ˜์ด์Šค์— ๊ด€๋ จ๋œ ๊ธฐ๋Šฅ Java 2D API(JDK 1.2 ์ด์ƒ )

๊ณ ํ’ˆ์งˆ์˜ ๊ณ ํ’ˆ์งˆ์˜ 22DD ๊ทธ๋ž˜ํ”ฝ๊ทธ๋ž˜ํ”ฝ , , ํ…์ŠคํŠธํ…์ŠคํŠธ , , ์ด๋ฏธ์ง€๋ฅผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด๋‚˜ ์• ํ”Œ๋ฆฟ์—์„œ ์‰ฝ๊ฒŒ ์ด๋ฏธ์ง€๋ฅผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด๋‚˜ ์• ํ”Œ๋ฆฟ์—์„œ ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•˜๋Š”๋ฐ ๊ด€๋ จ๋œ ๊ธฐ๋Šฅ์‚ฌ์šฉํ•˜๋Š”๋ฐ ๊ด€๋ จ๋œ ๊ธฐ๋Šฅ

๋“œ๋ž˜๊ทธ - ๋“œ๋กญ ์ง€์› (JDK 1.2 ์ด์ƒ ) ์ž๋ฐ” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ์šด์˜์ฒด์ œ ๊ณ ์œ ์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‚ฌ์ด์—์„œ ๋Œ์–ด๋‹ค ๋†“๊ธฐ๋ฅผ ์ž๋ฐ” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ์šด์˜์ฒด์ œ ๊ณ ์œ ์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‚ฌ์ด์—์„œ ๋Œ์–ด๋‹ค ๋†“๊ธฐ๋ฅผ

์ง€์›ํ•˜๋Š”๋ฐ ๊ด€๋ จ๋œ ๊ธฐ๋Šฅ์ง€์›ํ•˜๋Š”๋ฐ ๊ด€๋ จ๋œ ๊ธฐ๋Šฅ

Swing ์ƒˆ๋กœ์šด ์ปดํฌ๋„ŒํŠธ๋“ค๊ณผ ๊ด€๋ จ ์ƒˆ๋กœ์šด ์ปดํฌ๋„ŒํŠธ๋“ค๊ณผ ๊ด€๋ จ APIAPI ๋ฅผ ์ง€์นญ๋ฅผ ์ง€์นญ javax.swingjavax.swing

Java Look & Feel

CDE/Motif Look & Feel

Windows Look & Feel

Page 5: THE JFC SWING A Guide to  Constructing GUIs (Introduction)

5Data Warehousing

Lab.DW

์Šค์œ™ ์ปดํฌ๋„ŒํŠธ๋“ค Top-Level Containers

Applet Dialog Frame

Special-Purpose Containers

Internal frame Layered pane Root pane

Basic Controls

Buttons Combo box List

Menu Slider Text fields

Color chooser File chooser

Table Text Tree

Editable Displays of Formatted Information

Uneditable Information Displays

Label Progress bar Tool tip

General-Purpose Containers

Panel Scroll pane Split pane Tabbed pane Tool bar

Page 6: THE JFC SWING A Guide to  Constructing GUIs (Introduction)

6Data Warehousing

Lab.DW

1. JFC ์™€ ์Šค์œ™์— ๋Œ€ํ•ด ์Šค์œ™ ์Šค์œ™ APIAPI ๊ฐ€ ํฌํ•จ๋œ ๋ฆด๋ฆฌ์ฆˆ๋Š”๊ฐ€ ํฌํ•จ๋œ ๋ฆด๋ฆฌ์ฆˆ๋Š” ??

Java 2 SDK, Standard Edition, (J2SE) v 1.4. JFC 1.1(use JDK 1.1)

Page 7: THE JFC SWING A Guide to  Constructing GUIs (Introduction)

7Data Warehousing

Lab.DW

1. JFC ์™€ ์Šค์œ™์— ๋Œ€ํ•ด ์–ด๋–ค ์Šค์œ™ ํŒจํ‚ค์ง€๋ฅผ ์จ์•ผ ํ•˜๋Š”์ง€์–ด๋–ค ์Šค์œ™ ํŒจํ‚ค์ง€๋ฅผ ์จ์•ผ ํ•˜๋Š”์ง€ ??

JFC 1.1 release (public packages):

javax.accessibility javax.swing javax.swing.border javax.swing.colorchooser javax.swing.event

javax.swing.filechooser javax.swing.plaf javax.swing.plaf.basic javax.swing.plaf.metal

javax.swing.plaf.multi javax.swing.table javax.swing.text javax.swing.text.html

javax.swing.tree javax.swing.undo javax.swing javax.swing.event(not always required)

Page 8: THE JFC SWING A Guide to  Constructing GUIs (Introduction)

8Data Warehousing

Lab.DW

1. JFC ์™€ ์Šค์œ™์— ๋Œ€ํ•ด ์Šค์œ™ ์ปดํฌ๋„ŒํŠธ๋“ค๊ณผ ์Šค์œ™ ์ปดํฌ๋„ŒํŠธ๋“ค๊ณผ AWT AWT ์ปดํฌ๋„ŒํŠธ๋“ค์˜ ์ฐจ์ด์ ์ปดํฌ๋„ŒํŠธ๋“ค์˜ ์ฐจ์ด์  ??

์Šค์œ™ ์ปดํฌ๋„ŒํŠธ๋“ค์€ ํŠน์ • ํ”Œ๋žซํผ์— ์˜์กด์ ์ธ ์ฝ”๋“œ๊ฐ€ ์ „ํ˜€ ํฌํ•จ๋˜์ง€ ์•Š๊ณ  ๊ตฌํ˜„๋˜์—ˆ๋‹ค

์Šค์œ™ ์ปดํฌ๋„ŒํŠธ๋“ค AWT ์ปดํฌ๋„ŒํŠธ๋“ค

class JButton(J ๋กœ ์‹œ์ž‘ ) Button

package javax.swing java.awt

code ํ”Œ๋žซํผ์— ๋น„์˜์กด์  ํ”Œ๋žซํผ์— ์˜์กด์ 

capabilities๋ชจ๋“  ํ”Œ๋žซํผ ๊ณตํ†ต๊ธฐ๋Šฅ์— ์ œํ•œ๋˜์ง€ ์•Š์•„ ๋งŽ์€ ๊ธฐ๋Šฅ .

๋ชจ๋“  ํ”Œ๋žซํผ ๊ณตํ†ต๊ธฐ๋Šฅ์— ์ œํ•œ

Integration & add on

Java2 ํ”Œ๋žซํผ์˜ ์ผ๋ถ€๋กœ ํ†ตํ•ฉ , ์ถ”๊ฐ€ํŒ ํ˜•ํƒœ๋„๊ฐ€๋Šฅ -

look and feel ํ”„๋กœ๊ทธ๋žจ์˜ GUI ๊ฐ€ ์™ธ์–‘์„ ์„ ํƒ / ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ ํ•ด๋‹น ํ”Œ๋žซํผ์˜ ๊ฒƒ์„ ๋”ฐ๋ฆ„

model ๋ชจ๋ธ์„ ์ด์šฉํ•ด ์ƒํƒœ์œ ์ง€ -

Page 9: THE JFC SWING A Guide to  Constructing GUIs (Introduction)

9Data Warehousing

Lab.DW

1. JFC ์™€ ์Šค์œ™์— ๋Œ€ํ•ด ์Šค์œ™ ์ปดํฌ๋„ŒํŠธ๋“ค๊ณผ ์Šค์œ™ ์ปดํฌ๋„ŒํŠธ๋“ค๊ณผ AWT AWT ์ปดํฌ๋„ŒํŠธ๋“ค์˜ ์ฐจ์ด์ ์ปดํฌ๋„ŒํŠธ๋“ค์˜ ์ฐจ์ด์  ??

์Šค์œ™ ์ปดํฌ๋„ŒํŠธ๋“ค์€ AWT ์ปดํฌ๋„ŒํŠธ๋“ค๋ณด๋‹ค ๋›ฐ์–ด๋‚œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค

๋ฒ„ํŠผ๋ฒ„ํŠผ // ๋ ˆ์ด๋ธ”์— ํ…์ŠคํŠธ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ด๋ฏธ์ง€๋„ ํ‘œ์‹œ๊ฐ€๋Šฅ๋ ˆ์ด๋ธ”์— ํ…์ŠคํŠธ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ด๋ฏธ์ง€๋„ ํ‘œ์‹œ๊ฐ€๋Šฅ ๋Œ€๋ถ€๋ถ„์˜ ์Šค์œ™ ์ปดํฌ๋„ŒํŠธ๋“ค์€ ํ…Œ๋‘๋ฆฌ์˜ ์ถ”๊ฐ€ ๋ณ€๊ฒฝ ์šฉ์ด๋Œ€๋ถ€๋ถ„์˜ ์Šค์œ™ ์ปดํฌ๋„ŒํŠธ๋“ค์€ ํ…Œ๋‘๋ฆฌ์˜ ์ถ”๊ฐ€ ๋ณ€๊ฒฝ ์šฉ์ด ๋ชจ์–‘์ด๋‚˜ ํ–‰๋™ ๋ณ€๊ฒฝ ์šฉ์ด๋ชจ์–‘์ด๋‚˜ ํ–‰๋™ ๋ณ€๊ฒฝ ์šฉ์ด (( ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ , , ์„œ๋ธŒํด๋ž˜์Šค ์‚ฌ์šฉ์„œ๋ธŒํด๋ž˜์Šค ์‚ฌ์šฉ )) ์ง์‚ฌ๊ฐํ˜• ์ด์™ธ์˜ ๋ชจ์–‘๋„ ๊ฐ€๋Šฅ์ง์‚ฌ๊ฐํ˜• ์ด์™ธ์˜ ๋ชจ์–‘๋„ ๊ฐ€๋Šฅ ((ex.ex. ๋‘ฅ๊ทผ ๋ฒ„ํŠผ๋‘ฅ๊ทผ ๋ฒ„ํŠผ )) ๋ณด์กฐ์  ๊ธฐ์ˆ ๋“ค์˜ ์Šค์œ™ ์ปดํฌ๋„ŒํŠธ ์ •๋ณด ํš๋“ ์šฉ์ด๋ณด์กฐ์  ๊ธฐ์ˆ ๋“ค์˜ ์Šค์œ™ ์ปดํฌ๋„ŒํŠธ ์ •๋ณด ํš๋“ ์šฉ์ด ((ex.ex. ๋ฒ„ํ‹€๋ฒ„ํ‹€ //

๋ ˆ์ด๋ธ”์˜ ํ…์ŠคํŠธ๋ ˆ์ด๋ธ”์˜ ํ…์ŠคํŠธ )) ์Šค์œ™ ์ปดํฌ๋„ŒํŠธ ์‚ฌ์šฉ์‹œ ์ฃผ์˜์ 

์Šค์œ™ ์ปดํฌ๋„ŒํŠธ๋“ค๊ณผ ํ•จ๊ป˜ โ€œ์ค‘๋Ÿ‰์Šค์œ™ ์ปดํฌ๋„ŒํŠธ๋“ค๊ณผ ํ•จ๊ป˜ โ€œ์ค‘๋Ÿ‰ ((heavyweight)โ€heavyweight)โ€ ์ปดํฌ๋„ŒํŠธ๋“ค์„ ์ปดํฌ๋„ŒํŠธ๋“ค์„ ์‚ฌ์šฉํ•˜๋ฉด ์•ˆ๋œ๋‹ค์‚ฌ์šฉํ•˜๋ฉด ์•ˆ๋œ๋‹ค ..

์Šค์œ™ ์ปดํฌ๋„ŒํŠธ๋“ค์€ โ€œ์Šค๋ ˆ๋“œ์Šค์œ™ ์ปดํฌ๋„ŒํŠธ๋“ค์€ โ€œ์Šค๋ ˆ๋“œ ((thread)โ€thread)โ€ ์— ์•ˆ์ „ํ•˜์ง€ ์•Š๋‹ค์— ์•ˆ์ „ํ•˜์ง€ ์•Š๋‹ค .. ์Šค์œ™ ์ปดํฌ๋„ŒํŠธ๋“ค์„ ํฌํ•จํ•˜๋Š” ์œˆ๋„์šฐ๋‚˜ ์• ํ”Œ๋ฆฟ์„ ์œ„ํ•œ ํฌํ•จ๊ด€๊ณ„ ์Šค์œ™ ์ปดํฌ๋„ŒํŠธ๋“ค์„ ํฌํ•จํ•˜๋Š” ์œˆ๋„์šฐ๋‚˜ ์• ํ”Œ๋ฆฟ์„ ์œ„ํ•œ ํฌํ•จ๊ด€๊ณ„

๊ณ„ํ†ต๊ตฌ์กฐ๊ณ„ํ†ต๊ตฌ์กฐ ((containment hierarchy)containment hierarchy) ์˜ ๋ฃจํŠธ์— ์Šค์œ™์˜ ์ตœ์ƒ์œ„ ์˜ ๋ฃจํŠธ์— ์Šค์œ™์˜ ์ตœ์ƒ์œ„ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์žˆ์–ด์•ผ ํ•œ๋‹ค์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์žˆ์–ด์•ผ ํ•œ๋‹ค ..

JFrame JFrame ๊ฐ™์€ ์ตœ์ƒ์œ„ ์ปจํ…Œ์ด๋„ˆ์— ์ง์ ‘ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ถ”๊ฐ€ํ•˜์ง€ ๊ฐ™์€ ์ตœ์ƒ์œ„ ์ปจํ…Œ์ด๋„ˆ์— ์ง์ ‘ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š๋Š”๋‹ค์•Š๋Š”๋‹ค ..

Page 10: THE JFC SWING A Guide to  Constructing GUIs (Introduction)

10Data Warehousing

Lab.DW

2. ์Šค์œ™ ํ”„๋กœ๊ทธ๋žจ์˜ ์ปดํŒŒ์ผ๊ณผ ์‹คํ–‰ ์Šค์œ™ ํ”„๋กœ๊ทธ๋žจ์˜ ์ปดํŒŒ์ผ๊ณผ ์‹คํ–‰์Šค์œ™ ํ”„๋กœ๊ทธ๋žจ์˜ ์ปดํŒŒ์ผ๊ณผ ์‹คํ–‰ ((Java2 Platform)Java2 Platform)

Step Java 2 platform Java 2 platform ์˜ ์ตœ์‹  ์˜ ์ตœ์‹  release release ์„ค์น˜์„ค์น˜ ์Šค์œ™ ์ปดํฌ๋„ŒํŠธ ๋“ค์„ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ ์ž‘์„ฑ์Šค์œ™ ์ปดํฌ๋„ŒํŠธ ๋“ค์„ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ ์ž‘์„ฑ ํ”„๋กœ๊ทธ๋žจ ์ปดํŒŒ์ผํ”„๋กœ๊ทธ๋žจ ์ปดํŒŒ์ผ

javac -deprecation SwingApplication.java javac -deprecation SwingApplication.java ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰

Standard Look & Feel

java SwingApplication java SwingApplication nonstandard look and feel

Solaris: java -classpath .:/home/me/lnfdir/newlnf.jar SwingApplication

Win32: java -classpath .;C:\java\lnfdir\newlnf.jar SwingApplication

SwingApplication.java

Page 11: THE JFC SWING A Guide to  Constructing GUIs (Introduction)

11Data Warehousing

Lab.DW

3. ์Šค์œ™ ์• ํ”Œ๋ฆฟ์˜ ์‹คํ–‰ StepStep

๋ธŒ๋ผ์šฐ์ €์— ์ ํ•ฉํ•œ ์ž๋ฐ” ํ”Œ๋Ÿฌ๊ทธ์ธ ๋˜๋Š” applet viewer ๋‹ค์šด๋กœ๋“œ (JDK 1.1 applet viewer ์‚ฌ์šฉ์˜ ๊ฒฝ์šฐ ์Šค์œ™ JAR ํŒŒ์ผ๋กœ๋“œ )

๋ธŒ๋ผ์šฐ์ €๋กœ html ํŒŒ์ผ์„ ์—ฐ๋‹ค HelloSwingApplet.htmlHelloSwingApplet.html

์†Œ์Šค์ฝ”๋“œ : HelloSwingApplet.java Html ํŒŒ์ผ์— applet ๋ผ์›Œ ๋„ฃ๋Š” ์ฝ”๋“œ

<<APPLET CODE = "HelloSwingApplet.class" CODEBASE = "example-swing" APPLET CODE = "HelloSwingApplet.class" CODEBASE = "example-swing"

ARCHIVE = "applets.jar" WIDTH = 400 HEIGHT = 50 > ARCHIVE = "applets.jar" WIDTH = 400 HEIGHT = 50 >

<PARAM NAME = CODE VALUE = "HelloSwingApplet.class" > <PARAM NAME = CODE VALUE = "HelloSwingApplet.class" >

<PARAM NAME = CODEBASE VALUE = "example-swing" > <PARAM NAME = CODEBASE VALUE = "example-swing" >

<PARAM NAME = ARCHIVE VALUE = "applets.jar" > <PARAM NAME = ARCHIVE VALUE = "applets.jar" >

<PARAM NAME="type" VALUE="application/x-java-applet;version=1.1.2"><PARAM NAME="type" VALUE="application/x-java-applet;version=1.1.2">

</APPLET></APPLET>

Page 12: THE JFC SWING A Guide to  Constructing GUIs (Introduction)

12Data Warehousing

Lab.DW

4. ์Šค์œ™ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ฝ”๋“œ ๋ง›๋ณด๊ธฐ SwingApplication.javaSwingApplication.java

import javax.swing.*; import java.awt.*;import java.awt.event.*;

public class SwingApplication { private static String labelPrefix = "Number of button clicks: "; private int numClicks = 0;

public Component createComponents() { final JLabel label = new JLabel(labelPrefix + "0 ");

JButton button = new JButton("I'm a Swing button!"); button.setMnemonic(KeyEvent.VK_I); button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { numClicks++; label.setText(labelPrefix + numClicks); } }); label.setLabelFor(button); JPanel pane = new JPanel(); pane.setBorder(BorderFactory.createEmptyBorder( 30, 30, 10, 30) ); pane.setLayout(new GridLayout(0, 1)); pane.add(button); pane.add(label); return pane; }

public static void main(String[] args) { try { UIManager.setLookAndFeel( UIManager.getCrossPlatformLookAndFeelClassName()); } catch (Exception e) { }

//Create the top-level container and add contents to it. JFrame frame = new JFrame("SwingApplication"); SwingApplication app = new SwingApplication(); Component contents = app.createComponents(); frame.getContentPane().add(contents, BorderLayout.CENTER);

//Finish setting up the frame, and show it. frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); frame.pack(); frame.setVisible(true); }}

์Šค์œ™ํŒฉํ‚ค์ง€๋„์ž…

์™ธ์–‘์„ ํƒ

์ตœ์ƒ์œ„์ปจํ…Œ์ด๋„ˆ ์„ค์ •ํ•˜๊ณ  ๋ณด์—ฌ์ฃผ๊ธฐ

๋ฒ„ํŠผ์„ค์ •

๋ ˆ์ด๋ธ” ์„ค์ •

์ปดํฌ๋„ŒํŠธ์ถ”๊ฐ€ ์ด๋ฒคํŠธ์ฒ˜๋ฆฌ

Page 13: THE JFC SWING A Guide to  Constructing GUIs (Introduction)

13Data Warehousing

Lab.DW

4. ์Šค์œ™ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ฝ”๋“œ ๋ง›๋ณด๊ธฐ SwingApplication.javaSwingApplication.java

์™ธ์–‘์˜ ์„ ํƒ UIManager.setLookAndFeel(UIManager.setLookAndFeel(

"com.sun.java.swing.plaf.windows.WindowsLook"com.sun.java.swing.plaf.windows.WindowsLookAndFeelโ€œAndFeelโ€œ ); );

setLookAndFeel argumentssetLookAndFeel arguments UIManager.getCrossPlatformLookAndFeelClassName() UIManager.getSystemLookAndFeelClassName() "javax.swing.plaf.metal.MetalLookAndFeelโ€œ "com.sun.java.swing.plaf.windows.WindowsLookAndFe

elโ€œ "com.sun.java.swing.plaf.motif.MotifLookAndFeelโ€œ "javax.swing.plaf.mac.MacLookAndFeel"

์Šค๋ ˆ๋“œ ๊ด€๋ จ ๋ฌธ์ œ ๋ณด์กฐ์  ๊ธฐ์ˆ ๋“ค์˜ ์ง€์›

label.setLabelFor(button);label.setLabelFor(button);

JButton button = new JButton("I'm a Swing button!");

label = new JLabel(labelPrefix + "0 ");

label.setText(labelPrefix + numClicks);

JFrame frame = new JFrame("SwingApplication");

Page 14: THE JFC SWING A Guide to  Constructing GUIs (Introduction)

14Data Warehousing

Lab.DW

Swing Features and Concepts

5. 5. ์ปดํฌ๋„ŒํŠธ์™€ ์ปจํ…Œ์ด๋„ˆ์˜ ๊ณ„ํ†ต์  ๊ตฌ์กฐ์ปดํฌ๋„ŒํŠธ์™€ ์ปจํ…Œ์ด๋„ˆ์˜ ๊ณ„ํ†ต์  ๊ตฌ์กฐ 6. 6. ๋ ˆ์ด์•„์›ƒ ๊ด€๋ฆฌ๋ ˆ์ด์•„์›ƒ ๊ด€๋ฆฌ 7. 7. ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ 8. 8. ํŽ˜์ธํŒ…ํŽ˜์ธํŒ… 9. 9. ์Šค๋ ˆ๋“œ์™€ ์Šค์œ™์Šค๋ ˆ๋“œ์™€ ์Šค์œ™ 10. 10. ๊ทธ ์™ธ์˜ ์Šค์œ™ ๊ธฐ๋Šฅ๋“ค๊ณผ ๊ฐœ๋…๋“ค๊ทธ ์™ธ์˜ ์Šค์œ™ ๊ธฐ๋Šฅ๋“ค๊ณผ ๊ฐœ๋…๋“ค 11. 11. ์Šค์œ™ ๊ธฐ๋ฐ˜ ํ”„๋กœ๊ทธ๋žจ์˜ ๋ถ„์„์Šค์œ™ ๊ธฐ๋ฐ˜ ํ”„๋กœ๊ทธ๋žจ์˜ ๋ถ„์„

Page 15: THE JFC SWING A Guide to  Constructing GUIs (Introduction)

15Data Warehousing

Lab.DW

5. ์ปดํฌ๋„ŒํŠธ์™€ ์ปจํ…Œ์ด๋„ˆ์˜ ๊ณ„ํ†ต์  ๊ตฌ์กฐ SwingApplication.javaSwingApplication.java

์Šค์œ™์ปดํฌ๋„ŒํŠธ ํ”„๋ ˆ์ž„ ๋˜๋Š” ๋ฉ”์ธ ์œˆ๋„์šฐํ”„๋ ˆ์ž„ ๋˜๋Š” ๋ฉ”์ธ ์œˆ๋„์šฐ ((Jframe)Jframe) ํŒจ๋„ํŒจ๋„ ((Jpane)Jpane) ๋ฒ„ํŠผ๋ฒ„ํŠผ ((Jbutton)Jbutton) ๋ ˆ์ด๋ธ”๋ ˆ์ด๋ธ” ((Jlabel)Jlabel)

[containment hierarchy]

Page 16: THE JFC SWING A Guide to  Constructing GUIs (Introduction)

16Data Warehousing

Lab.DW

6. ๋ ˆ์ด์•„์›ƒ ๊ด€๋ฆฌ ๋ ˆ์ด์•„์›ƒ ๊ด€๋ฆฌ๋ ˆ์ด์•„์›ƒ ๊ด€๋ฆฌ

์ปดํฌ๋„ŒํŠธ๋“ค์˜ ํฌ๊ธฐ์™€ ์œ„์น˜๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๊ณผ์ • ๋ ˆ์ด์•„์›ƒ ๊ด€๋ฆฌ์ž๋ ˆ์ด์•„์›ƒ ๊ด€๋ฆฌ์ž

์ปจํ…Œ์ด๋„ˆ์— ๋‹ด๊ธด ์ปดํฌ๋„ŒํŠธ๋“ค์— ๋Œ€ํ•ด ๋ ˆ์ด์•„์›ƒ ๊ด€๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฐ์ฒด

๋ ˆ์ด์•„์›ƒ ๊ด€๋ฆฌ์ž ์„ค์ •๋ ˆ์ด์•„์›ƒ ๊ด€๋ฆฌ์ž ์„ค์ • JPanel pane = new JPanel();

pane.setLayout(new BorderLayout()); ์ ˆ๋Œ€์œ„์น˜๋ฐฉ์‹ : ๋ ˆ์ด์•„์›ƒ ์†์„ฑ์„ null ๋กœ ์ง€์ •

์ปดํฌ๋„ŒํŠธ์— ๋Œ€ํ•œ ์ •๋ณด์ œ๊ณต์ปดํฌ๋„ŒํŠธ์— ๋Œ€ํ•œ ์ •๋ณด์ œ๊ณต ํฌ๊ธฐ :

setMinimumSize, setPreferredSize, setMaximumSize setMinimumSize, setPreferredSize, setMaximumSize

getMinimumSize, getPreferredSize, getMaximumSize getMinimumSize, getPreferredSize, getMaximumSize

์ •๋ ฌ :setAlignmentX , setAlignmentY setAlignmentX , setAlignmentY

getAlignmentX , getAlignmentYgetAlignmentX , getAlignmentY

Page 17: THE JFC SWING A Guide to  Constructing GUIs (Introduction)

17Data Warehousing

Lab.DW

6. ๋ ˆ์ด์•„์›ƒ ๊ด€๋ฆฌ ๋‹ค์–‘ํ•œ ๋ ˆ์ด์•„์›ƒ ๊ด€๋ฆฌ์ž๋‹ค์–‘ํ•œ ๋ ˆ์ด์•„์›ƒ ๊ด€๋ฆฌ์ž

1. BorderLayout

2. BoxLayout

3. CardLayout

4. FlowLayout

5. GridLayout

6. GridBagLayout

Page 18: THE JFC SWING A Guide to  Constructing GUIs (Introduction)

18Data Warehousing

Lab.DW

6. ๋ ˆ์ด์•„์›ƒ ๊ด€๋ฆฌ ๋ ˆ์ด์•„์›ƒ ๊ด€๋ฆฌ๊ฐ€ ์ผ์–ด๋‚˜๋Š” ๋ฐฉ์‹๋ ˆ์ด์•„์›ƒ ๊ด€๋ฆฌ๊ฐ€ ์ผ์–ด๋‚˜๋Š” ๋ฐฉ์‹

GUI ๊ฐ€ ๋งŒ๋“ค์–ด์ง€๊ณ  ๋‚˜๋ฉด , JFrame ์—์„œ pack๋ฉ”์„œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋œ๋‹ค .

ํ”„๋ ˆ์ž„์˜ ๋ ˆ์ด์•„์›ƒ ๊ด€๋ฆฌ์ž๊ฐ€ ํ”„๋ ˆ์ž„์˜ ์ ์ • ํฌ๊ธฐ๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด ํ”„๋ ˆ์ž„์˜ ๊ฒฝ๊ณ„ ํฌ๊ธฐ์— ํ”„๋ ˆ์ž„์ด ์ง์ ‘ ๋‹ด๊ณ  ์žˆ๋Š” ์ปดํฌ๋„ŒํŠธ์˜ ์ ์ • ํฌ๊ธฐ๋ฅผ ๋”ํ•œ๋‹ค .

๋‚ด์šฉ์ฐฝ์˜ ๋ ˆ์ด์•„์›ƒ ๊ด€๋ฆฌ์ž๊ฐ€ ๋‚ด์šฉ์ฐฝ์˜ ์ ์ • ํฌ๊ธฐ๋ฅผ ๊ตฌํ•œ๋‹ค .

๋ ˆ์ด์•„์›ƒ ๊ด€๋ฆฌ์ž๊ฐ€ ํฌ๊ธฐ๋ฅผ ๋ฌผ์œผ๋ฉด , ๊ฐ ๋ฒ„ํŠผ์€ ์šฐ์„  ์‚ฌ์šฉ์ž๊ฐ€ ์ ์ • ํฌ๊ธฐ๋ฅผ ์ง€์ •ํ–ˆ๋Š”์ง€ ์ ๊ฒ€ํ•œ๋‹ค .

ํฌ๊ธฐ ๊ฒฐ์ • ์ˆœ์„œ ํฌํ•จ๊ด€๊ณ„ ๊ณ„ํ†ต๊ตฌ์กฐ์˜ ํ•˜์œ„ ์ปดํฌ๋„ŒํŠธ ํฌํ•จ๊ด€๊ณ„ ๊ณ„ํ†ต๊ตฌ์กฐ์˜ ํ•˜์œ„ ์ปดํฌ๋„ŒํŠธ -> -> ์ƒ์œ„ ์ปจํ…Œ์ด๋„ˆ์ƒ์œ„ ์ปจํ…Œ์ด๋„ˆ

Page 19: THE JFC SWING A Guide to  Constructing GUIs (Introduction)

19Data Warehousing

Lab.DW

7. ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ ์ด๋ฒคํŠธ์ด๋ฒคํŠธ

์ด๋ฒคํŠธ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์ด๋ฒคํŠธ ์ถœ์ฒ˜์— ํ†ต์ง€๋ฅผ ํ•˜๋‚˜์˜ ๊ฐ์ฒด

์ด๋ฒคํŠธ์˜ ์š”์†Œ ์ธํ„ฐํŽ˜์ด์Šค ๊ตฌํ˜„์ธํ„ฐํŽ˜์ด์Šค ๊ตฌํ˜„ ์ด๋ฒคํŠธ ์ถœ์ฒ˜์ด๋ฒคํŠธ ์ถœ์ฒ˜ (( ๊ฐ์ฒด๊ฐ์ฒด )) ์— ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ ๋“ฑ๋ก์— ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ ๋“ฑ๋ก

์ด๋ฒคํŠธ ์ถœ์ฒ˜์™€ ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ

event object ----> event listenerevent listener source ----> event listener ----> event listener

Page 20: THE JFC SWING A Guide to  Constructing GUIs (Introduction)

20Data Warehousing

Lab.DW

7. ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ๋ถ€ ๊ตฌํ˜„์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ๋ถ€ ๊ตฌํ˜„

์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ๋ถ€ (event handler) ํด๋ž˜์Šค์˜ ์š”์†Œ ๋ฆฌ์Šค๋„ˆ ์ธํ„ฐํŽ˜์ด์Šค ๊ตฌํ˜„๋ฆฌ์Šค๋„ˆ ์ธํ„ฐํŽ˜์ด์Šค ๊ตฌํ˜„ ((Implement) Implement) ๋˜๋Š” ๋‹ค๋ฅธ ํด๋ž˜์Šค ํ™•์žฅ๋˜๋Š” ๋‹ค๋ฅธ ํด๋ž˜์Šค ํ™•์žฅ

((expands)expands) ํ•  ๊ฒƒ์ธ์ง€ ์ง€์ • ์ฝ”๋“œํ•  ๊ฒƒ์ธ์ง€ ์ง€์ • ์ฝ”๋“œ public class MyClass implements ActionListener { public class MyClass implements ActionListener { ์ธ์Šคํ„ด์Šค ๋“ฑ๋ก ์ฝ”๋“œ์ธ์Šคํ„ด์Šค ๋“ฑ๋ก ์ฝ”๋“œ

someComponent.addActionListener(instanceOfMyClass); someComponent.addActionListener(instanceOfMyClass); ๋ฆฌ์Šค๋„ˆ ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋ฉ”์„œ๋“œ๋“ค์„ ๊ตฌํ˜„ํ•˜๋Š” ์ฝ”๋“œ ๋ฆฌ์Šค๋„ˆ ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋ฉ”์„œ๋“œ๋“ค์„ ๊ตฌํ˜„ํ•˜๋Š” ์ฝ”๋“œ

public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) { ...//code ...//code that reacts to the action...that reacts to the action... } }

์Šค๋ ˆ๋“œ์™€ ์ด๋ฒคํŠธ์ฒ˜๋ฆฌ์Šค๋ ˆ๋“œ์™€ ์ด๋ฒคํŠธ์ฒ˜๋ฆฌ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ ์ฝ”๋“œ๋Š” ํ•˜๋‚˜์˜ ์Šค๋ ˆ๋“œ ์ฆ‰ , event dispatching

thread ์•ˆ์—์„œ ์‹คํ–‰๋œ๋‹ค .

ActionEvent

button -----------------------> action listener

Page 21: THE JFC SWING A Guide to  Constructing GUIs (Introduction)

21Data Warehousing

Lab.DW

8. ํŽ˜์ธํŒ… ํŽ˜์ธํŒ…์˜ ์ž‘๋™๋ฐฉ์‹ํŽ˜์ธํŒ…์˜ ์ž‘๋™๋ฐฉ์‹

AWT ํŽ˜์ธํŒ… ์‹œ์Šคํ…œ ์Šค์œ™ ์Šค์œ™ GUIGUI ๊ฐ€ ์ž์‹ ์„ ๋‹ค์‹œ ๊ทธ๋ฆด ํ•„์š”๊ฐ€ ์ƒ๊ธฐ๋Š” ๊ฒฝ์šฐ ๊ฐ€ ์ž์‹ ์„ ๋‹ค์‹œ ๊ทธ๋ฆด ํ•„์š”๊ฐ€ ์ƒ๊ธฐ๋Š” ๊ฒฝ์šฐ

๊ณผ์ •์กฐ์ ˆ๊ณผ์ •์กฐ์ ˆ

์Šค์œ™ ๋ฆฌํŽ˜์ธํŠธ ๊ด€๋ฆฌ์ž ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ๋‹ค์‹œ ๊ทธ๋ ค์ง€๊ฒŒ ํ•œ๋‹ค์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ๋‹ค์‹œ ๊ทธ๋ ค์ง€๊ฒŒ ํ•œ๋‹ค .. ์ปดํฌ๋„ŒํŠธ์˜ ํฌ๊ธฐ๋‚˜ ์œ„์น˜๊ฐ€ ์ž๋™ ์žฌ์กฐ์ •๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ์ปดํฌ๋„ŒํŠธ์˜ ํฌ๊ธฐ๋‚˜ ์œ„์น˜๊ฐ€ ์ž๋™ ์žฌ์กฐ์ •๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ

repaint repaint ์ด์ „์— ์ด์ „์— revalidaterevalidate ํ˜ธ์ถœํ•ด์•ผ ํ•œ๋‹คํ˜ธ์ถœํ•ด์•ผ ํ•œ๋‹ค ..

๋”๋ธ” ๋ฒ„ํผ๋ง ํ™”๋ฉด์„ ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ๊ฐฑ์‹ ํ•˜๊ธฐ์œ„ํ•ดํ™”๋ฉด์„ ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ๊ฐฑ์‹ ํ•˜๊ธฐ์œ„ํ•ด , , ๋ฉ”๋ชจ๋ฆฌ ์ƒ์˜ ๋ฒ„ํผ์—์„œ ๋ฉ”๋ชจ๋ฆฌ ์ƒ์˜ ๋ฒ„ํผ์—์„œ

ํŽ˜์ธํŒ… ์ž‘์—…ํ›„ํŽ˜์ธํŒ… ์ž‘์—…ํ›„ , , ๋ชจ๋‘ ๊ทธ๋ ค์ง€๋ฉด ํ™”๋ฉด์— ๋ฟŒ๋ฆฌ๋Š” ๋ฐฉ์‹๋ชจ๋‘ ๊ทธ๋ ค์ง€๋ฉด ํ™”๋ฉด์— ๋ฟŒ๋ฆฌ๋Š” ๋ฐฉ์‹

ํŽ˜์ธํŒ…์ˆœ์„œ (SwingApplicaiton.java) ์ตœ์ƒ์œ„ ์ปจํ…Œ์ด๋„ˆ ์ตœ์ƒ์œ„ ์ปจํ…Œ์ด๋„ˆ -> -> ํ•˜์œ„ ์ปดํฌ๋„ŒํŠธํ•˜์œ„ ์ปดํฌ๋„ŒํŠธ

ex.SwingApplication.java

Jframe-> ๋‚ด์šฉ์ฐฝ ->Jpanel->Jbutton,JLabel

Page 22: THE JFC SWING A Guide to  Constructing GUIs (Introduction)

22Data Warehousing

Lab.DW

9. ์Šค๋ ˆ๋“œ์™€ ์Šค์œ™ ๋‹จ์ผ ์Šค๋ ˆ๋“œ ๊ทœ์น™๋‹จ์ผ ์Šค๋ ˆ๋“œ ๊ทœ์น™

์Šค์œ™ ์ปดํฌ๋„ŒํŠธ๋“ค์€ ํ•œ ์‹œ์ ์—์„œ ๋‹จ ํ•˜๋‚˜์˜ ์Šค๋ ˆ๋“œ , event dispatching ๋กœ๋ถ€ํ„ฐ๋งŒ ์ ‘๊ทผ ๋˜์–ด์•ผํ•œ๋‹ค . ํ•œ ์Šค์œ™ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์‹คํ˜„๋œ ํ›„์—๋Š” ๊ทธ ์ปดํฌ๋„ŒํŠธ์˜ ์ƒํƒœ์— ์˜ํ–ฅ์„ ํ•œ ์Šค์œ™ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์‹คํ˜„๋œ ํ›„์—๋Š” ๊ทธ ์ปดํฌ๋„ŒํŠธ์˜ ์ƒํƒœ์— ์˜ํ–ฅ์„

์ฃผ๊ฑฐ๋‚˜ ์ƒํƒœ์— ์˜์กดํ•˜๋Š” ๋ชจ๋“  ์ฝ”๋“œ๋Š” ๋ฐ˜๋“œ์‹œ ์ด๋ฒคํŠธ ๋ฐœ์†ก ์Šค๋ ˆ๋“œ ์ฃผ๊ฑฐ๋‚˜ ์ƒํƒœ์— ์˜์กดํ•˜๋Š” ๋ชจ๋“  ์ฝ”๋“œ๋Š” ๋ฐ˜๋“œ์‹œ ์ด๋ฒคํŠธ ๋ฐœ์†ก ์Šค๋ ˆ๋“œ ์•ˆ์—์„œ ์‹คํ–‰๋˜์–ด์•ผํ•œ๋‹ค์•ˆ์—์„œ ์‹คํ–‰๋˜์–ด์•ผํ•œ๋‹ค ..

๋‹จ์ผ ์Šค๋ ˆ๋“œ ๊ทœ์น™์˜ ์˜ˆ์™ธ ์ผ๋ถ€๋ฉ”์„œ๋“œ๋“ค์€ ์Šค๋ ˆ๋“œ์— ์•ˆ์ „ํ•˜๋‹ค์ผ๋ถ€๋ฉ”์„œ๋“œ๋“ค์€ ์Šค๋ ˆ๋“œ์— ์•ˆ์ „ํ•˜๋‹ค

This method is thread safe, although most Swing methods are not. This method is thread safe, although most Swing methods are not. Please see Threads and Swing for more information. Please see Threads and Swing for more information.

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ GUIGUI ๋Š” ๋ฉ”์ธ ์Šค๋ ˆ๋“œ์—์„œ ์ƒ์„ฑ๋Š” ๋ฉ”์ธ ์Šค๋ ˆ๋“œ์—์„œ ์ƒ์„ฑ , , ํ‘œ์‹œ๋˜๊ธฐ๋„ํ•œ๋‹คํ‘œ์‹œ๋˜๊ธฐ๋„ํ•œ๋‹ค .. ์• ํ”Œ๋ฆฟ์˜ ์• ํ”Œ๋ฆฟ์˜ GUIGUI ๋Š” ๋Š” initinit ๋ฉ”์„œ๋“œ ์•ˆ์—์„œ ์ƒ์„ฑ ํ‘œ์‹œ๋  ์ˆ˜ ์žˆ๋‹ค๋ฉ”์„œ๋“œ ์•ˆ์—์„œ ์ƒ์„ฑ ํ‘œ์‹œ๋  ์ˆ˜ ์žˆ๋‹ค .. JcomponentJcomponent ์˜ ๋ฉ”์„œ๋“œ๋“ค ์ค‘ ์˜ ๋ฉ”์„œ๋“œ๋“ค ์ค‘ repairrepair ์™€ ์™€ revalidaterevalidate ๋Š” ์–ด๋–ค ๋Š” ์–ด๋–ค

์Šค๋ ˆ๋“œ์—์„œ ํ˜ธ์ถœํ•ด๋„ ์•ˆ์ „ํ•˜๋‹ค์Šค๋ ˆ๋“œ์—์„œ ํ˜ธ์ถœํ•ด๋„ ์•ˆ์ „ํ•˜๋‹ค .. ๋ฆฌ์Šค๋„ˆ ๋ชฉ๋ก๋“ค์€ ์–ด๋–ค ์Šค๋ ˆ๋“œ์—์„œ๋„ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฆฌ์Šค๋„ˆ ๋ชฉ๋ก๋“ค์€ ์–ด๋–ค ์Šค๋ ˆ๋“œ์—์„œ๋„ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋‹ค ..

addListenerTypeListener, removeListenerTpyeListeneraddListenerTypeListener, removeListenerTpyeListener

์ด๋ฒคํŠธ ๋ฐœ์†ก ์Šค๋ ˆ๋“œ๊ฐ€ ์•„๋‹Œ ํ˜•ํƒœ๋กœ GUI ์ž‘์—…์ˆ˜ํ–‰์˜ ๊ฒฝ์šฐ ์‹ค์ œ ์ž‘์—… ์ด์ „์— ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ์ดˆ๊ธฐํ™” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์‹ค์ œ ์ž‘์—… ์ด์ „์— ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ์ดˆ๊ธฐํ™” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š”

ํ”„๋กœ๊ทธ๋žจํ”„๋กœ๊ทธ๋žจ ๋น„ํ‘œ์ค€์ ์ธ ์ด๋ฒคํŠธ์˜ ๊ฒฐ๊ณผ๋กœ ๊ฐฑ์‹ ๋˜๋Š” ๋น„ํ‘œ์ค€์ ์ธ ์ด๋ฒคํŠธ์˜ ๊ฒฐ๊ณผ๋กœ ๊ฐฑ์‹ ๋˜๋Š” GUIGUI ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ

Page 23: THE JFC SWING A Guide to  Constructing GUIs (Introduction)

23Data Warehousing

Lab.DW

10. ๊ทธ์™ธ์˜ ์Šค์œ™ ๊ธฐ๋Šฅ๋“ค๊ณผ ๊ฐœ๋…๋“ค JcomponetJcomponet ๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ๋“ค๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ๋“ค

J๋กœ ์‹œ์ž‘ํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ๋Š” ์ตœ์ƒ์œ„ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ œ์™ธํ•˜๊ณ  ๋ชจ๋‘ JComponent ํด๋ž˜์Šค๋กœ๋ถ€ํ„ฐ ์ƒ์†

์•„์ด์ฝ˜์•„์ด์ฝ˜ ๋ฒ„ํŠผ , ๋ ˆ์ด๋ธ”์— ์ด๋ฏธ์ง€ ํ‘œ์‹œ

์•ก์…˜์•ก์…˜ ์•ก์…˜ ์ด๋ฒคํŠธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ ๋‘˜ ๋˜๋Š” ๊ทธ์ด์ƒ์˜ ์ปดํฌ๋„ŒํŠธ๋“ค ์‚ฌ์ด์—

๋ฐ์ดํ„ฐ ๊ณต์œ  ๊ต์ฒด๊ฐ€๋Šฅํ•œ ์™ธ์–‘๊ต์ฒด๊ฐ€๋Šฅํ•œ ์™ธ์–‘

์—ฌ๋Ÿฌ๊ฐ€์ง€ Look & Feel ์„ ์‚ฌ์šฉ์ž๊ฐ€ ์„ ํƒํ•˜๊ฑฐ๋‚˜ , ํ”„๋กœ๊ทธ๋žจ ์•ˆ์—์„œ ์ง€์ •

๋ณด์กฐ์  ๊ธฐ์ˆ ์˜ ์ง€์›๋ณด์กฐ์  ๊ธฐ์ˆ ์˜ ์ง€์› Accessbility API ๋ฅผ ์ด์šฉ - ์Šค์œ™ ์ปดํฌ๋„ŒํŠธ ์ •๋ณด ํš๋“

๋ฐ์ดํ„ฐ์™€ ์ƒํƒœ ๋ชจ๋ธ์˜ ๋ถ„๋ฆฌ๋ฐ์ดํ„ฐ์™€ ์ƒํƒœ ๋ชจ๋ธ์˜ ๋ถ„๋ฆฌ ์ปดํฌ๋„ŒํŠธ๋“ค์„ ์ข€๋” ํšจ์œจ์ ์œผ๋กœ ๋‹ค๋ฃจ๊ณ  ์ปดํฌ๋„ŒํŠธ ์‚ฌ์ด์—์„œ

๋ฐ์ดํ„ฐ์™€ ์ƒํƒœ๋ฅผ ์‰ฝ๊ฒŒ ๊ณต์œ ํ•˜๊ฒŒ ํ•จ . (ex.ButtonModel)

Page 24: THE JFC SWING A Guide to  Constructing GUIs (Introduction)

24Data Warehousing

Lab.DW

11. ์Šค์œ™ ๊ธฐ๋ฐ˜ ํ”„๋กœ๊ทธ๋žจ์˜ ๋ถ„์„ Converter.java Converter.java

๋ฏธํ„ฐ๋ฒ• ๋‹จ์œ„์™€ U.S ๋‹จ์œ„ ( ์ธ์น˜ , ํ”ผํŠธ , ์•ผ๋“œ ๋“ฑ ) ์‚ฌ์ด์—์„œ ๊ธธ์ด๋ฅผ ๋ณ€ํ™˜ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ

์ปดํฌ๋„ŒํŠธ๋“ค Jframe Jframe ํ•œ ๊ฐœํ•œ ๊ฐœ ์ปค์Šคํ…€ ์ปค์Šคํ…€ Jpane 2Jpane 2 ๊ฐœ๊ฐœ ์ปค์Šคํ…€ ์ปค์Šคํ…€ JTextField 2JTextField 2 ๊ฐœ๊ฐœ JSlider 2JSlider 2 ๊ฐœ๊ฐœ JComboBox 2JComboBox 2 ๊ฐœ๊ฐœ

๋ ˆ์ด์•„์›ƒ ๊ด€๋ฆฌ์ž Gridlayout 1Gridlayout 1 ๊ฐœ๊ฐœ Boxlayout 4Boxlayout 4 ๊ฐœ๊ฐœ

๋ถ„๋ฆฌ๋œ ๋ชจ๋ธ ํ…์ŠคํŠธ ํ•„๋“œ ์œ„ํ•œ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ ํ…์ŠคํŠธ ํ•„๋“œ ์œ„ํ•œ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ 11 ๊ฐœ๊ฐœ ์Šฌ๋ผ์ด๋”์˜ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ ์Šฌ๋ผ์ด๋”์˜ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ 22 ๊ฐœ๊ฐœ

์ด๋ฒคํŠธ์ฒ˜๋ฆฌ ์•ก์…˜๋ฆฌ์Šค๋„ˆ์•ก์…˜๋ฆฌ์Šค๋„ˆ ๋ณ€๊ฒฝ๋ฆฌ์Šค๋„ˆ๋ณ€๊ฒฝ๋ฆฌ์Šค๋„ˆ ์œˆ๋„์šฐ๋ฆฌ์Šค๋„ˆ์œˆ๋„์šฐ๋ฆฌ์Šค๋„ˆ