[] STUDY ³»¿ë

ÀÛ¼ºÀÏ 2003-10-21
ÀÛ¼ºÀÚ park
Á¶È¸¼ö 2734
Á¦ ¸ñ Frame¿¡¼­ Dialog Box ¶ç¿ì±â

¸ñ·ÏÀ¸·Î | ¼öÁ¤ | »èÁ¦ | Á¤º¸Ãß°¡[reply] | ½Å±ÔÀÔ·Â

Dialig ¶ç¿öº¸±â

FrameÀ» Çϳª ¶ç¿ì°í ¹öÆ°À» Ŭ¸¯Çϸé Dialog Box¸¦ ¶ç¿ö¼­ Dialog Box¾È¿¡ »ç°¢ÇüÀ» ¸î °³ ±×¸®´Â ÇÁ·Î±×·¥À» ¸¸µé¾î º¸ÀÚ.

»ç¿ëÇÒ ÁÖ¿ä Ŭ·¡½º´Â ¾Æ·¡¿Í °°´Ù.

  • ActionListener
  • WindowAdapter
  • Dialog

¸ÕÀú ActionListener ´Â ¸ÞÀÎ FrameÀÇ ¹öÆ°°ú DialogBox¿¡¼­ÀÇ ±×¸®±â ¹öÆ°¿¡ ´ëÇÑ À̺¥Æ®¸¦ ó¸®ÇÏ°Ô ÇÒ °ÍÀÌ´Ù.

WindowAdapter´Â ´ÜÁö Frame°ú DialogBoxÀÇ Ã¢À» ´Ý±â À§ÇØ »ç¿ëÇÒ °ÍÀ̸ç Dialog Ŭ·¡½º¸¦ »ó¼Ó¹Þ¾Æ myDialog¸¦ Çϳª ¸¸µé¾î ±×°÷¿¡ »ç°¢Çü ¸î °³¸¦ ±×·Á³ÖÀÚ.

ÀüüÀûÀÎ ½ÇÇà ±×¸²ÀÌ´Ù. Àß »ìÆ캸°í ¼Ò½º¸¦ Çϳª Çϳª ÀÌÇØÇغ¸·Ï ÇÏÀÚ.

¿ÞÂÊ¿¡ ÀÖ´Â ÇÁ·¹ÀÓÀÇ "create" ¹öÆ°À» ±Û¸¯ÇÏ¸é ¿À¸¥ÂÊ myDialogÀ» »ý¼ºÇÏ¿© Ç¥½ÃÇÏ°í myDialog Box¾È¿¡ ÀÖ´Â "line"¹öÆ°À» Ŭ¸¯ÇÏ¸é »¡°£»öÀÇ Panel¿¡ »ç°¢ÇüÀÌ ±×·ÁÁö°Ô µÈ´Ù.

Main Frame ¸¸µé±â

Frame°ú À̺¥Æ®¸¦ »ç¿ëÇϱâ À§ÇØ °ü·Ã ÆÐÅ°Áö¸¦ import ½ÃŲ´Ù.

import java.awt.*;
import java.awt.event.*;


¸¸µé¾î¾ß ÇÒ ÇÁ·Î±×·¥ÀÌ Frame BaseÀ̱⠶§¹®¿¡ FrameÀ» »ó¼Ó¹Þ¾Æ drawDailogEx Ŭ·¡½º¸¦ ¸¸µé°í ¹öÆ°¿¡ ´ëÇÑ À̺¥Æ®¸¦ ó¸®Çϱâ À§ÇØ ActionListener¸¦ interfaceÇüÅ·Π»ó¼Ó¹ÞÀÚ.

public class drawDialogEx extends Frame implements ActionListener { ... }

¹öÆ°À» Ŭ¸¯Çϸé Æ¢¾î³ª¿Ã Dialog Box¿Í FrameÀÇ Ã¢À» ´Ý±âÀ§ÇØ WindowAdapterÀÇ °´Ã¼¸¦ Àü¿ªÇüÀ¸·Î ¼±¾ðÇÏÀÚ.
Dialog BoxÀÎ myDialog ³»¿¡¼­ ÇؾßÇÒ ÀÏÀÌ ¸¹±â ¶§¹®¿¡ inner classÇüÅ·Π¸¸µé°í class À̸§À» myDialog·Î ÇÏÀÚ. ¶ÇÇÑ WindowAdapter µµ inner classÇüÅ·Π¸¸µé°í Ŭ·¡½º À̸§À» myWindowAdapter¶ó ĪÇÏ¿´´Ù.

myDialog my;
myWindowAdapter myW;

myDialog Ŭ·¡½º°¡ óÀ½ °´Ã¼È­ µÉ ¶§ ÃʱâÈ­ ÇØÁÖ´Â »ý¼ºÀÚ¿Í static main()ÇÔ¼ö ±×¸®°í ActionListenerÀÇ Çʼö ¸Þ¼ÒµåÀÎ actionPerformed()¸¦ ±¸ÇöÇÏ°í inner classµÎ °³¸¦ ¼±¾ðÇØ ÁÖ¸é ÀüüÀûÀÎ ¸ð¾çÀÌ ¾Æ·¡ÀÇ À¯ÇüÀÌ µÉ °ÍÀÌ´Ù.

import java.awt.*;
import java.awt.event.*;

public class drawDialogEx extends Frame implements ActionListener
{
myDialog my;
myWindowAdapter myW;

public drawDialogEx() // 1) »ý¼ºÀÚ
{
}

public static void main(String[] args) // 2) main()ÇÔ¼ö
{
}

public void actionPerformed(ActionEvent e) // 3) ActionEvent ó¸®
{
}

// inner class
class myDialog extends Dialog implements ActionListener{ ... }
class myWindowAdapter extends WindowAdapter{ ...}

}

»ý¼ºÀÚ ºÎºÐÀ» º¸µµ·ÏÇÏÀÚ.

drawDialogExÀÇ Ã¢À» ´Ý±âÀ§ÇØ myWindowAdapterÀÇ °´Ã¼¸¦ »ý¼ºÇÏ°í â¿¡ ºÙÀδÙ.

myW=new myWindowAdapter();
addWindowListener(myW);

âÀÇ Å©±â¸¦ Á¤ÇÏ°í »õ·Î¿î DialogBoxÀ» »ý¼ºÇϱâ À§ÇØ ¹öÆ°À» Çϳª ¸¸µé¾î ºÙÀδÙ. ¶ÇÇÑ ¹öÆ°¿¡´Â À̺¥Æ®¸¦ ¹ß»ý½ÃÅ°±â À§ÇØ ActionListenerÀ» ºÙÀ̵µ·Ï ÇÏÀÚ.

setSize(150,50);
setVisible(true);
Button button = new Button("create");
add(button);
button.addActionListener(this);

¸ÞÀÎÇÔ¼ö¿¡¼­´Â ÇÒ ÀÏÀÌ °ÅÀÇ ¾ø´Ù. drawDialogExÀ» »ý¼ºÇÏ°í È­¸é¿¡ º¸¿©Áֱ⸸ ÇÏ¸é µÈ´Ù.

drawDialogEx f= new drawDialogEx();
f.setVisible(true);

»ý¼ºÀÚ¿¡¼­ ¸¸µé¾îÁö°í Ŭ¸¯ÇϰԵǴ ¹öÆ°ÀÇ Ã³¸® ºÎºÎÀÎ ActionListenerºÎºÐÀÌ´Ù. ActionLisnter Ŭ·¡½º°¡ ¹Ýµå½Ã ±¸ÇöÇؾßÇÏ´Â method°¡ ¹Ù·Î actionPerformed()ÇÔ¼öÀÌ´Ù. ÀÌÇÔ¼ö¿¡¼­´Â ´Ü¼øÈ÷ ¹öÆ°ÀÌ Å¬¸¯µÇ¸é Dialog BoxÀ» Çϳª ¸¸µé°í È­¸é¿¡ Ç¥½ÃÇØ ÁÖ¸é ³¡ÀÌ´Ù.

public void actionPerformed(ActionEvent e)
{
if(e.getActionCommand() == "create")
{
my=new myDialog(this, "my Dialog", false);
my.setVisible(true);

}
}

Á¶±Ý ´õ ¼³¸íÀ» Çغ¸ÀÚ.

e.getActionCommand() == "create" ºÎºÐÀº ¹öÆ°ÀÌ ¿©·¯°³ ÀÖÀ» ¶§ ¾î¶² ¹öÆ°ÀÌ ´­·ÁÁ³´Â°¡¸¦ ÆǺ°ÇÒ ¼ö ÀÖ´Ù.

myDialog¸¦ ¸¸µé ¶§ 3°³ÀÇ ¸Å°³º¯¼ö¸¦ ³Ñ±ä´Ù. ù ¹ø°·Î this´Â ÀÚ½ÅÀÌ Æ÷ÇԵǾî ÀÖ´Â Æû°´Ã¼¸¦ ³ªÅ¸³»°í, µÎ ¹øÀç Àμö´Â DialogBoxÀÇ Ã¢ Á¦¸ñ, ¼¼ ¹ø° false´Â DialogÀÇ À¯ÇüÀÌ ModalÇüÀΰ¡ NonModalÀΰ¡¸¦ ³ªÅ¸³½´Ù. À§ ¼Ò½ºÃ³·³ falseÀ» ÁÖ¸é ÇöÀçâ ÀÌ¿ÜÀÇ ´Ù¸¥ âÀ» Á¢±ÙÇÏ¿© ó¸®ÇÒ ¼ö ÀÖ´Ù. Áï ModalÀ¯ÇüÀ» ¶æÇÑ´Ù.

myDialog class
"create" ¹öÆ°À» Ŭ¸¯ÇÏ¸é »ý¼ºµÇ´Â Dialog Box¸¦ ¸¸µé¾î º¸ÀÚ.

myDialog class´Â Dialog BaseÀ̱⠶§¹®¿¡ extends¸¦ »ç¿ëÇÏ¿© Dialog¸¦ »ó¼Ó¹Þ°í ¹öÆ°¿¡ ´ëÇÑ À̺¥Æ®¸¦ ó¸®Çϱâ À§ÇØ ActionListener¸¦ »ó¼Ó¹Þ¾Æ ó¸®ÇÑ´Ù.

class myDialog extends Dialog implements ActionListener { ... }

PanelÀ» Çϳª Àü¿ªÇüÀ¸·Î ¼±¾ðÇÏ°í PanelÀÇ Layout°ü¸®ÀÚ¸¦ null·Î ¼±¾ðÇÏ¿© ±×·ÁÁø ¹öÆ°ÀÇ À§Ä¡¸¦ ÀÚÀ¯·Ó°Ô ÁöÁ¤ ÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù.

Panel p=new Panel(null);
Graphics g;
Button b=new Button("line");

myDialog »ý¼ºÀÚ¿¡¼­´Â drawDialogEx¿¡¼­ Àμö¸¦ 3°³ ³Ñ°Ü »ý¼ºÇßÀ¸¹Ç·Î ±×¿¡ ¸Â°Ô ±â¼úÇÏ°í Panel°ú ¹öÆ°, Dialog¿¡ WindowListener, ¹öÆ°¿¡ ActionListener¸¦ Ãß°¡ÇÏÀÚ.

public myDialog(drawDialogEx f, String title, boolean modal)
{
super(f,title,modal);
setLayout(null);
setVisible(true);
setBounds(200,200,200,200);
addWindowListener(myW);

b.setBounds(30,30,50,20);
b.addActionListener(this);
add(b);

p.setVisible(true);
p.setBackground(Color.red);
p.setBounds(30,50,150,120 );
add(p);
}

¹öÆ°¿¡ ´ëÇÑ À̺¥Æ®¸¦ ó¸®Çϱâ À§ÇÑ actionPerformed() ¸Þ¼ÒµåÀÌ´Ù. "line"À̶ó´Â ¹öÆ°À» Ŭ¸¯Çß´Ù¸é ÇöÀç DialogÀÇ ±×·¡ÇÈ ÄÜÅؽºÆ®¸¦ ¾ò¾î ±×¸²À» ±×¸± Áغñ¸¦ÇÏ°í, »ç°¢ÇüÀ» Àû´çÈ÷ ¹Ýº¹ÇÏ¿© Panel¿¡ Ãâ·ÂÇϵµ·Ï ÇÑ´Ù.

public void actionPerformed(ActionEvent e)
{
if(e.getActionCommand() == "line")
{
Graphics g=p.getGraphics(); // ±×·¡ÇÈ Äܵ¦½ºÆ®¸¦ ¾ò´Â´Ù.
int i;
int width=80, height=80;
for(i=10 ; i<130 ; i=i+5) // »ç°¢ÇüÀ» ¹Ýº¹Çؼ­ ±×¸°´Ù.
{
g.drawRect(i,i,width, height);
width = width -10;
height=height -10;
}
}
}

myWindowAdapter class
¸¶Áö¸·À¸·Î FrameÀ̳ª DialogÀÇ Ã¢À» ´ÝÀ» ¼ö ÀÖ´Â WindowListener¸¦ ¸¸µéÀÚ. Java´Â ¾î¶°ÇÑ À̺¥Æ®¿¡ ÀûÇÕÇÑ Listener¸¦ ´Ã ÁغñÇÏ°í ÀÖ´Ù. ±×·¯³ª ÀÌ ListenerÀÇ ´ÜÁ¡Àº »ç¿ëÇÏÁö ¾Ê´Â ¸Þ¼Òµåµµ ¼±¾ðÇØ ÁÖ¾î¾ß ÇѴٴµ¥ ÀÖ´Ù. ±×·¡¼­ ¸¸µé¾î ³õÀº °ÍÀÌ ÇØ´ç À̺¥Æ®¿¡ ´ëÇÑ AdapterÀÌ´Ù. ±×·¡¼­ Á¶±ÝÀÌ¶óµµ ÄÚµùÀÇ ¾çÀ» ÁÙÀ̱â À§ÇØ myWindowAdapter Ŭ·¡½º¸¦ ¸¸µé¶§ WindowAdapter¸¦ »ó¼Ó¹Þ¾Æ ¸¸µé¾ú´Ù.

class myWindowAdapter extends WindowAdapter{ ... }

¿©±â¿¡¼­ drawDailogExÀÇ ¹öÆ°ÀÎÁö, myDialog¿¡¼­ÀÇ ¹öÆ°ÀÎÁö¸¸À» ±¸º°ÇÏ¿© FrameÀ» Á¾·á½Ãų°ÍÀÎÁö, Dialog¸¦ Á¾·á½Ãų °ÍÀÎÁö¸¦ ÆǺ°ÇÏ¿© ½ÇÇØÇϵµ·Ï ÇØÁÖ¸é ¸ðµç °ÍÀÌ ³¡³­´Ù.

public void windowClosing(WindowEvent e)
{
if(e.getSource() == my) my.dispose();
else System.exit(0);
}

Àüü ¼Ò½ºÀÌ´Ù.

// drawDialogEx

import java.awt.*;
import java.awt.event.*;

public class drawDialogEx extends Frame implements ActionListener
{
myDialog my;
myWindowAdapter myW;

public drawDialogEx()
{
myW=new myWindowAdapter();
addWindowListener(myW);

setSize(50,50);
setVisible(true);
Button button = new Button("create");
add(button);
button.addActionListener(this);
}

public static void main(String[] args)
{
drawDialogEx f= new drawDialogEx();
f.setVisible(true);
}

public void actionPerformed(ActionEvent e)
{
if(e.getActionCommand() == "create")
{
my=new myDialog(this, "my Dialog", false);
my.setVisible(true);
}
}

class myDialog extends Dialog implements ActionListener
{
Panel p=new Panel(null);
Graphics g;
Button b=new Button("line");

public myDialog(drawDialogEx f, String title, boolean modal)
{
super(f,title,modal);
setLayout(null);
setVisible(true);
setBounds(200,200,200,200);
addWindowListener(myW);

b.setBounds(30,30,50,20);
b.addActionListener(this);
add(b);

p.setVisible(true);
p.setBackground(Color.red);
p.setBounds(30,50,150,120 );
add(p);
}

public void actionPerformed(ActionEvent e)
{
if(e.getActionCommand() == "line")
{
Graphics g=p.getGraphics();
int i;
int width=80, height=80;
for(i=10 ; i<130 ; i=i+5)
{
g.drawRect(i,i,width, height);
width = width -10;
height=height -10;
}
}
}
};

// WindowAdapter
class myWindowAdapter extends WindowAdapter
{
public void windowClosing(WindowEvent e)
{
if(e.getSource() == my) my.dispose();
else System.exit(0);
}
}
}


Frame¿¡¼­ Dialog Box ¶ç¿ì±â °ú(¿Í) °ü·ÃµÈ Ãß°¡ Á¤º¸

  • AWT ÄÄÆ÷³ÍÆ® [2003-10-23] [park´Ô Àç°ø] [Á¶È¸:1096]
  • Frame¿¡¼­ Dialog Box ¶ç¿ì±â [2003-10-21] [park´Ô Àç°ø] [Á¶È¸:2734]
  • Á¦¸ñÇ¥½ÃÁÙ ¾ø´Â â ¸¸µé±â [2004-04-08] [park´Ô Àç°ø] [Á¶È¸:1131]
  • Layout °ü¸®ÀÚ [2003-10-21] [park´Ô Àç°ø] [Á¶È¸:1045]
  • ÇöÀç ½Ã½ºÅÛÀÇ ÆùÆ® ¸ñ·Ï °¡Á®¿À±â [2004-11-06] [studyto´Ô Àç°ø] [Á¶È¸:1160]

    ¸ñ·ÏÀ¸·Î | ¼öÁ¤ | »èÁ¦ | Á¤º¸Ãß°¡[reply] | ½Å±ÔÀÔ·Â