the jfc swing a guide to constructing guis (introduction)
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 PresentationTRANSCRIPT
THE JFC SWINGA Guide to Constructing GUIs
(Introduction)
Data Warehousing Lab.Data Warehousing Lab.
Cho Hye-YoungCho Hye-Young
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
3Data Warehousing
Lab.DW
Getting Started with Swing
1. JFC1. JFC ์ ์ค์์ ๋ํด์ ์ค์์ ๋ํด 2. 2. ์ค์ ํ๋ก๊ทธ๋จ์ ์ปดํ์ผ๊ณผ ์คํ์ค์ ํ๋ก๊ทธ๋จ์ ์ปดํ์ผ๊ณผ ์คํ 3. 3. ์ค์ ์ ํ๋ฆฟ์ ์คํ์ค์ ์ ํ๋ฆฟ์ ์คํ 4. 4. ์ค์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฝ๋ ๋ง๋ณด๊ธฐ์ค์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฝ๋ ๋ง๋ณด๊ธฐ
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
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
6Data Warehousing
Lab.DW
1. JFC ์ ์ค์์ ๋ํด ์ค์ ์ค์ APIAPI ๊ฐ ํฌํจ๋ ๋ฆด๋ฆฌ์ฆ๋๊ฐ ํฌํจ๋ ๋ฆด๋ฆฌ์ฆ๋ ??
Java 2 SDK, Standard Edition, (J2SE) v 1.4. JFC 1.1(use JDK 1.1)
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)
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 ๋ชจ๋ธ์ ์ด์ฉํด ์ํ์ ์ง -
9Data Warehousing
Lab.DW
1. JFC ์ ์ค์์ ๋ํด ์ค์ ์ปดํฌ๋ํธ๋ค๊ณผ ์ค์ ์ปดํฌ๋ํธ๋ค๊ณผ AWT AWT ์ปดํฌ๋ํธ๋ค์ ์ฐจ์ด์ ์ปดํฌ๋ํธ๋ค์ ์ฐจ์ด์ ??
์ค์ ์ปดํฌ๋ํธ๋ค์ AWT ์ปดํฌ๋ํธ๋ค๋ณด๋ค ๋ฐ์ด๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค
๋ฒํผ๋ฒํผ // ๋ ์ด๋ธ์ ํ ์คํธ ๋ฟ๋ง ์๋๋ผ ์ด๋ฏธ์ง๋ ํ์๊ฐ๋ฅ๋ ์ด๋ธ์ ํ ์คํธ ๋ฟ๋ง ์๋๋ผ ์ด๋ฏธ์ง๋ ํ์๊ฐ๋ฅ ๋๋ถ๋ถ์ ์ค์ ์ปดํฌ๋ํธ๋ค์ ํ ๋๋ฆฌ์ ์ถ๊ฐ ๋ณ๊ฒฝ ์ฉ์ด๋๋ถ๋ถ์ ์ค์ ์ปดํฌ๋ํธ๋ค์ ํ ๋๋ฆฌ์ ์ถ๊ฐ ๋ณ๊ฒฝ ์ฉ์ด ๋ชจ์์ด๋ ํ๋ ๋ณ๊ฒฝ ์ฉ์ด๋ชจ์์ด๋ ํ๋ ๋ณ๊ฒฝ ์ฉ์ด (( ๋ฉ์๋ ํธ์ถ๋ฉ์๋ ํธ์ถ , , ์๋ธํด๋์ค ์ฌ์ฉ์๋ธํด๋์ค ์ฌ์ฉ )) ์ง์ฌ๊ฐํ ์ด์ธ์ ๋ชจ์๋ ๊ฐ๋ฅ์ง์ฌ๊ฐํ ์ด์ธ์ ๋ชจ์๋ ๊ฐ๋ฅ ((ex.ex. ๋ฅ๊ทผ ๋ฒํผ๋ฅ๊ทผ ๋ฒํผ )) ๋ณด์กฐ์ ๊ธฐ์ ๋ค์ ์ค์ ์ปดํฌ๋ํธ ์ ๋ณด ํ๋ ์ฉ์ด๋ณด์กฐ์ ๊ธฐ์ ๋ค์ ์ค์ ์ปดํฌ๋ํธ ์ ๋ณด ํ๋ ์ฉ์ด ((ex.ex. ๋ฒํ๋ฒํ //
๋ ์ด๋ธ์ ํ ์คํธ๋ ์ด๋ธ์ ํ ์คํธ )) ์ค์ ์ปดํฌ๋ํธ ์ฌ์ฉ์ ์ฃผ์์
์ค์ ์ปดํฌ๋ํธ๋ค๊ณผ ํจ๊ป โ์ค๋์ค์ ์ปดํฌ๋ํธ๋ค๊ณผ ํจ๊ป โ์ค๋ ((heavyweight)โheavyweight)โ ์ปดํฌ๋ํธ๋ค์ ์ปดํฌ๋ํธ๋ค์ ์ฌ์ฉํ๋ฉด ์๋๋ค์ฌ์ฉํ๋ฉด ์๋๋ค ..
์ค์ ์ปดํฌ๋ํธ๋ค์ โ์ค๋ ๋์ค์ ์ปดํฌ๋ํธ๋ค์ โ์ค๋ ๋ ((thread)โthread)โ ์ ์์ ํ์ง ์๋ค์ ์์ ํ์ง ์๋ค .. ์ค์ ์ปดํฌ๋ํธ๋ค์ ํฌํจํ๋ ์๋์ฐ๋ ์ ํ๋ฆฟ์ ์ํ ํฌํจ๊ด๊ณ ์ค์ ์ปดํฌ๋ํธ๋ค์ ํฌํจํ๋ ์๋์ฐ๋ ์ ํ๋ฆฟ์ ์ํ ํฌํจ๊ด๊ณ
๊ณํต๊ตฌ์กฐ๊ณํต๊ตฌ์กฐ ((containment hierarchy)containment hierarchy) ์ ๋ฃจํธ์ ์ค์์ ์ต์์ ์ ๋ฃจํธ์ ์ค์์ ์ต์์ ์ปจํ ์ด๋๊ฐ ์์ด์ผ ํ๋ค์ปจํ ์ด๋๊ฐ ์์ด์ผ ํ๋ค ..
JFrame JFrame ๊ฐ์ ์ต์์ ์ปจํ ์ด๋์ ์ง์ ์ปดํฌ๋ํธ๋ฅผ ์ถ๊ฐํ์ง ๊ฐ์ ์ต์์ ์ปจํ ์ด๋์ ์ง์ ์ปดํฌ๋ํธ๋ฅผ ์ถ๊ฐํ์ง ์๋๋ค์๋๋ค ..
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
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>
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); }}
์ค์ํฉํค์ง๋์
์ธ์์ ํ
์ต์์์ปจํ ์ด๋ ์ค์ ํ๊ณ ๋ณด์ฌ์ฃผ๊ธฐ
๋ฒํผ์ค์
๋ ์ด๋ธ ์ค์
์ปดํฌ๋ํธ์ถ๊ฐ ์ด๋ฒคํธ์ฒ๋ฆฌ
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");
14Data Warehousing
Lab.DW
Swing Features and Concepts
5. 5. ์ปดํฌ๋ํธ์ ์ปจํ ์ด๋์ ๊ณํต์ ๊ตฌ์กฐ์ปดํฌ๋ํธ์ ์ปจํ ์ด๋์ ๊ณํต์ ๊ตฌ์กฐ 6. 6. ๋ ์ด์์ ๊ด๋ฆฌ๋ ์ด์์ ๊ด๋ฆฌ 7. 7. ์ด๋ฒคํธ ์ฒ๋ฆฌ์ด๋ฒคํธ ์ฒ๋ฆฌ 8. 8. ํ์ธํ ํ์ธํ 9. 9. ์ค๋ ๋์ ์ค์์ค๋ ๋์ ์ค์ 10. 10. ๊ทธ ์ธ์ ์ค์ ๊ธฐ๋ฅ๋ค๊ณผ ๊ฐ๋ ๋ค๊ทธ ์ธ์ ์ค์ ๊ธฐ๋ฅ๋ค๊ณผ ๊ฐ๋ ๋ค 11. 11. ์ค์ ๊ธฐ๋ฐ ํ๋ก๊ทธ๋จ์ ๋ถ์์ค์ ๊ธฐ๋ฐ ํ๋ก๊ทธ๋จ์ ๋ถ์
15Data Warehousing
Lab.DW
5. ์ปดํฌ๋ํธ์ ์ปจํ ์ด๋์ ๊ณํต์ ๊ตฌ์กฐ SwingApplication.javaSwingApplication.java
์ค์์ปดํฌ๋ํธ ํ๋ ์ ๋๋ ๋ฉ์ธ ์๋์ฐํ๋ ์ ๋๋ ๋ฉ์ธ ์๋์ฐ ((Jframe)Jframe) ํจ๋ํจ๋ ((Jpane)Jpane) ๋ฒํผ๋ฒํผ ((Jbutton)Jbutton) ๋ ์ด๋ธ๋ ์ด๋ธ ((Jlabel)Jlabel)
[containment hierarchy]
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
17Data Warehousing
Lab.DW
6. ๋ ์ด์์ ๊ด๋ฆฌ ๋ค์ํ ๋ ์ด์์ ๊ด๋ฆฌ์๋ค์ํ ๋ ์ด์์ ๊ด๋ฆฌ์
1. BorderLayout
2. BoxLayout
3. CardLayout
4. FlowLayout
5. GridLayout
6. GridBagLayout
18Data Warehousing
Lab.DW
6. ๋ ์ด์์ ๊ด๋ฆฌ ๋ ์ด์์ ๊ด๋ฆฌ๊ฐ ์ผ์ด๋๋ ๋ฐฉ์๋ ์ด์์ ๊ด๋ฆฌ๊ฐ ์ผ์ด๋๋ ๋ฐฉ์
GUI ๊ฐ ๋ง๋ค์ด์ง๊ณ ๋๋ฉด , JFrame ์์ pack๋ฉ์๋๊ฐ ํธ์ถ๋๋ค .
ํ๋ ์์ ๋ ์ด์์ ๊ด๋ฆฌ์๊ฐ ํ๋ ์์ ์ ์ ํฌ๊ธฐ๋ฅผ ์ฐพ๊ธฐ ์ํด ํ๋ ์์ ๊ฒฝ๊ณ ํฌ๊ธฐ์ ํ๋ ์์ด ์ง์ ๋ด๊ณ ์๋ ์ปดํฌ๋ํธ์ ์ ์ ํฌ๊ธฐ๋ฅผ ๋ํ๋ค .
๋ด์ฉ์ฐฝ์ ๋ ์ด์์ ๊ด๋ฆฌ์๊ฐ ๋ด์ฉ์ฐฝ์ ์ ์ ํฌ๊ธฐ๋ฅผ ๊ตฌํ๋ค .
๋ ์ด์์ ๊ด๋ฆฌ์๊ฐ ํฌ๊ธฐ๋ฅผ ๋ฌผ์ผ๋ฉด , ๊ฐ ๋ฒํผ์ ์ฐ์ ์ฌ์ฉ์๊ฐ ์ ์ ํฌ๊ธฐ๋ฅผ ์ง์ ํ๋์ง ์ ๊ฒํ๋ค .
ํฌ๊ธฐ ๊ฒฐ์ ์์ ํฌํจ๊ด๊ณ ๊ณํต๊ตฌ์กฐ์ ํ์ ์ปดํฌ๋ํธ ํฌํจ๊ด๊ณ ๊ณํต๊ตฌ์กฐ์ ํ์ ์ปดํฌ๋ํธ -> -> ์์ ์ปจํ ์ด๋์์ ์ปจํ ์ด๋
19Data Warehousing
Lab.DW
7. ์ด๋ฒคํธ ์ฒ๋ฆฌ ์ด๋ฒคํธ์ด๋ฒคํธ
์ด๋ฒคํธ์ ๋ํ ์ ๋ณด๋ฅผ ์ ๊ณตํ๊ณ ์ด๋ฒคํธ ์ถ์ฒ์ ํต์ง๋ฅผ ํ๋์ ๊ฐ์ฒด
์ด๋ฒคํธ์ ์์ ์ธํฐํ์ด์ค ๊ตฌํ์ธํฐํ์ด์ค ๊ตฌํ ์ด๋ฒคํธ ์ถ์ฒ์ด๋ฒคํธ ์ถ์ฒ (( ๊ฐ์ฒด๊ฐ์ฒด )) ์ ์ด๋ฒคํธ ๋ฆฌ์ค๋ ๋ฑ๋ก์ ์ด๋ฒคํธ ๋ฆฌ์ค๋ ๋ฑ๋ก
์ด๋ฒคํธ ์ถ์ฒ์ ์ด๋ฒคํธ ๋ฆฌ์ค๋
event object ----> event listenerevent listener source ----> event listener ----> event listener
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
21Data Warehousing
Lab.DW
8. ํ์ธํ ํ์ธํ ์ ์๋๋ฐฉ์ํ์ธํ ์ ์๋๋ฐฉ์
AWT ํ์ธํ ์์คํ ์ค์ ์ค์ GUIGUI ๊ฐ ์์ ์ ๋ค์ ๊ทธ๋ฆด ํ์๊ฐ ์๊ธฐ๋ ๊ฒฝ์ฐ ๊ฐ ์์ ์ ๋ค์ ๊ทธ๋ฆด ํ์๊ฐ ์๊ธฐ๋ ๊ฒฝ์ฐ
๊ณผ์ ์กฐ์ ๊ณผ์ ์กฐ์
์ค์ ๋ฆฌํ์ธํธ ๊ด๋ฆฌ์ ์ปดํฌ๋ํธ๋ฅผ ๋ช ์์ ์ผ๋ก ๋ค์ ๊ทธ๋ ค์ง๊ฒ ํ๋ค์ปดํฌ๋ํธ๋ฅผ ๋ช ์์ ์ผ๋ก ๋ค์ ๊ทธ๋ ค์ง๊ฒ ํ๋ค .. ์ปดํฌ๋ํธ์ ํฌ๊ธฐ๋ ์์น๊ฐ ์๋ ์ฌ์กฐ์ ๋์ง ์๋ ๊ฒฝ์ฐ ์ปดํฌ๋ํธ์ ํฌ๊ธฐ๋ ์์น๊ฐ ์๋ ์ฌ์กฐ์ ๋์ง ์๋ ๊ฒฝ์ฐ
repaint repaint ์ด์ ์ ์ด์ ์ revalidaterevalidate ํธ์ถํด์ผ ํ๋คํธ์ถํด์ผ ํ๋ค ..
๋๋ธ ๋ฒํผ๋ง ํ๋ฉด์ ๋ถ๋๋ฝ๊ฒ ๊ฐฑ์ ํ๊ธฐ์ํดํ๋ฉด์ ๋ถ๋๋ฝ๊ฒ ๊ฐฑ์ ํ๊ธฐ์ํด , , ๋ฉ๋ชจ๋ฆฌ ์์ ๋ฒํผ์์ ๋ฉ๋ชจ๋ฆฌ ์์ ๋ฒํผ์์
ํ์ธํ ์์ ํํ์ธํ ์์ ํ , , ๋ชจ๋ ๊ทธ๋ ค์ง๋ฉด ํ๋ฉด์ ๋ฟ๋ฆฌ๋ ๋ฐฉ์๋ชจ๋ ๊ทธ๋ ค์ง๋ฉด ํ๋ฉด์ ๋ฟ๋ฆฌ๋ ๋ฐฉ์
ํ์ธํ ์์ (SwingApplicaiton.java) ์ต์์ ์ปจํ ์ด๋ ์ต์์ ์ปจํ ์ด๋ -> -> ํ์ ์ปดํฌ๋ํธํ์ ์ปดํฌ๋ํธ
ex.SwingApplication.java
Jframe-> ๋ด์ฉ์ฐฝ ->Jpanel->Jbutton,JLabel
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 ๋ฅผ ์ฌ์ฉํ๋ ํ๋ก๊ทธ๋จ๋ฅผ ์ฌ์ฉํ๋ ํ๋ก๊ทธ๋จ
23Data Warehousing
Lab.DW
10. ๊ทธ์ธ์ ์ค์ ๊ธฐ๋ฅ๋ค๊ณผ ๊ฐ๋ ๋ค JcomponetJcomponet ๊ฐ ์ ๊ณตํ๋ ๊ธฐ๋ฅ๋ค๊ฐ ์ ๊ณตํ๋ ๊ธฐ๋ฅ๋ค
J๋ก ์์ํ๋ ์ปดํฌ๋ํธ๋ ์ต์์ ์ปจํ ์ด๋๋ฅผ ์ ์ธํ๊ณ ๋ชจ๋ JComponent ํด๋์ค๋ก๋ถํฐ ์์
์์ด์ฝ์์ด์ฝ ๋ฒํผ , ๋ ์ด๋ธ์ ์ด๋ฏธ์ง ํ์
์ก์ ์ก์ ์ก์ ์ด๋ฒคํธ๋ฅผ ๋ฐ์์ํจ ๋ ๋๋ ๊ทธ์ด์์ ์ปดํฌ๋ํธ๋ค ์ฌ์ด์
๋ฐ์ดํฐ ๊ณต์ ๊ต์ฒด๊ฐ๋ฅํ ์ธ์๊ต์ฒด๊ฐ๋ฅํ ์ธ์
์ฌ๋ฌ๊ฐ์ง Look & Feel ์ ์ฌ์ฉ์๊ฐ ์ ํํ๊ฑฐ๋ , ํ๋ก๊ทธ๋จ ์์์ ์ง์
๋ณด์กฐ์ ๊ธฐ์ ์ ์ง์๋ณด์กฐ์ ๊ธฐ์ ์ ์ง์ Accessbility API ๋ฅผ ์ด์ฉ - ์ค์ ์ปดํฌ๋ํธ ์ ๋ณด ํ๋
๋ฐ์ดํฐ์ ์ํ ๋ชจ๋ธ์ ๋ถ๋ฆฌ๋ฐ์ดํฐ์ ์ํ ๋ชจ๋ธ์ ๋ถ๋ฆฌ ์ปดํฌ๋ํธ๋ค์ ์ข๋ ํจ์จ์ ์ผ๋ก ๋ค๋ฃจ๊ณ ์ปดํฌ๋ํธ ์ฌ์ด์์
๋ฐ์ดํฐ์ ์ํ๋ฅผ ์ฝ๊ฒ ๊ณต์ ํ๊ฒ ํจ . (ex.ButtonModel)
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 ๊ฐ๊ฐ
์ด๋ฒคํธ์ฒ๋ฆฌ ์ก์ ๋ฆฌ์ค๋์ก์ ๋ฆฌ์ค๋ ๋ณ๊ฒฝ๋ฆฌ์ค๋๋ณ๊ฒฝ๋ฆฌ์ค๋ ์๋์ฐ๋ฆฌ์ค๋์๋์ฐ๋ฆฌ์ค๋