KeyEvent
keyPressed() - 가상 키 코드값으로 처리 (키보드 위치상의 값) A 와 a 값이 같음.. 왜? 위치상의 값 이니까..
모든 키의 값을 구할 수 있다.
keyReleased() - 키에서 손을 떼었을때
keyTyped() - 아스키 코드값으로 처리한다. (아스키코드값으로 처리하므로 대,소문자 구별
오로지 아스키코드값으로만 처리하므로 펑션키, ctrl, shift, 방향키 등의 값은 구하지 못함.
-----------------------------------------------------------------------------------------
예제 1 (방향키로 원찍기)
-----------------------------------------------------------------------------------------
import java.awt.*;
import java.awt.event.*;
class KeyTest_1 extends Frame implements KeyListener
{
public KeyTest_1()
{
super("우히히");
addWindowListener(new MyWin());
addKeyListener(this); //이벤트 등록
setBounds(200,200,1000,1000);
setVisible(true);
}
class MyWin extends WindowAdapter
{
public void windowClosing(WindowEvent w)
{
dispose();
System.exit(0);
}
}
//전역변수 메소드 밖에만 넣어주면 됨
public int x= 50, y=50;
int a = 10;
//Overriding
public void keyPressed(KeyEvent k)
{
if(k.isShiftDown())
{
}//isShiftDown() 시프트 키가 눌려있냐?
if(k.isControlDown())
{
}
switch(k.getKeyCode())
{
case KeyEvent.VK_UP : y-=a; break; //VK_UP 방향키 위로
case KeyEvent.VK_DOWN : y+=a; break;
case KeyEvent.VK_LEFT : x-=a; break;
case KeyEvent.VK_RIGHT : x+=a; break;
}
Graphics g = getGraphics(); //graphics는 추상클래스
//g.fillOval(x,y,a,a); //채워진 원을 그림.
int red = (int)(Math.random()*255); //색깔 바꾸기
int green = (int)(Math.random()*255);
int blue = (int)(Math.random()*255);
g.setColor(new Color(red,green,blue));
g.fillOval(x,y,a,a);
}
public void keyTyped(KeyEvent k){}
public void keyReleased(KeyEvent k){}
public static void main(String args[])
{
new KeyTest_1();
}
}
-----------------------------------------------------------------------------------------
예제( keyPressed() 와 keyTyped 의 차이점)
-----------------------------------------------------------------------------------------
import java.awt.*;
import java.awt.event.*;
class KeyTest_2 extends Frame implements KeyListener
{
public KeyTest_2()
{
super("으응");
addWindowListener(new MyWin()); //이벤트 등록
addKeyListener(this); //이벤트 등록
setBounds(200,100,800,800);
setVisible(true);
}
class MyWin extends WindowAdapter
{
public void windowClosing(WindowEvent w)
{
dispose();
System.exit(0);
}
}
//Overriding
public void keyPressed(KeyEvent k)//가상키 코드로 처리
{
Graphics g = getGraphics();
g.setFont(new Font("Dialog",Font.BOLD,20));
g.setColor(Color.red); //글씨 색깔 변경
g.clearRect(0,0,1000,1000); //화면 지움.
g.drawString("입력한 키 코드는 :"+k.getKeyCode(),30,50);
g.drawString("입력한 문자는 :"+k.getKeyChar(),30,80);
}
public void keyTyped(KeyEvent k) // 아스키 코드로 처리
{
Graphics g = getGraphics();
g.setFont(new Font("Dialog",Font.BOLD,20));
g.setColor(Color.magenta);
g.drawString("입력한 아스키 코드는 :"+(int)k.getKeyChar(),30,100);
g.drawString("귀하가 입력한 아스키 문자 " + k.getKeyChar(),30,140);
}
public void keyReleased(KeyEvent k){} // 키에서 손을 떼었을때
public static void main(String args[])
{
new KeyTest_2();
}
}
-----------------------------------------------------------------------------------------
예제 (키 이벤트 , 그림 이동하기)
-----------------------------------------------------------------------------------------
import java.awt.*;
import java.awt.event.*;
class KeyTest_3 extends Frame implements KeyListener
{
Image im;
int x,y;
//Constructor
public KeyTest_3()
{
super("황정음");
x = 200;
y = 200;
im = Toolkit.getDefaultToolkit().getImage("aa.gif");
addWindowListener(new MyWin());//이벤트 등록
addKeyListener(this);
setBounds(200,100,800,800);
setVisible(true);
}
// inner class
class MyWin extends WindowAdapter
{
public void windowClosing(WindowEvent w)
{
System.exit(0);
}
}
public void paint(Graphics g)
{
g.drawImage(im,x-300,y-300,1100,1100,this); //이미지 출력
}
//Overriding
public void keyPressed(KeyEvent k)
{
switch(k.getKeyCode())
{
case KeyEvent.VK_UP: y-=15; break;
case KeyEvent.VK_DOWN : y+=15; break;
case KeyEvent.VK_LEFT : x-=15; break;
case KeyEvent.VK_RIGHT : x+=15; break;
case KeyEvent.VK_END : System.exit(0);
}
}
public void keyTyped(KeyEvent k){}
public void keyReleased(KeyEvent k){}
// main
public static void main(String args[])
{
new KeyTest_3();
}
}
-----------------------------------------------------------------------------------------
예제 ( 도형그리기)
-----------------------------------------------------------------------------------------
import java.awt.*;
import java.awt.event.*;
class Graphics_1 extends Frame
{
public Graphics_1()
{
super("으응");
addWindowListener(new MyWin());
setBounds(200,200,800,800);
setVisible(true);
}
class MyWin extends WindowAdapter
{
public void windowClosing(WindowEvent w)
{
System.exit(0);
}
}
public void paint(Graphics g)
{
/*
g.drawString("홍길동",10,50);
Font font = new Font("Dialog", Font.BOLD,30);
g.setFont(font);
g.setColor(Color.green); //Color
g.drawString("홍길동",20,90);
g.setFont(new Font("Dialog", Font.BOLD,20));
g.setColor(Color.blue);
g.drawString("홍길동",20,120);
g.setFont(new Font("Dialog", Font.BOLD + Font.ITALIC,20));
g.drawString("홍길동",20,150);
g.setColor(Color.red);
g.drawLine(30,30,100,100); //선 그리기
g.drawRect(100,100,200,200); // 사각형
g.fillRect(300,300,100,100); //채워진 사각형
g.setColor(Color.magenta);
g.drawRoundRect(100,100,200,200,30,30); // 둥근 사각형
g.fillRoundRect(120,120,160,160,30,30); // 채워진 둥근 사각형
g.setColor(Color.yellow);
g.fillOval(100,100,300,300);
g.setColor(Color.white);
g.fillOval(125,125,250,250);
g.setColor(Color.black);
g.drawOval(150,150,200,200);
g.drawOval(150,150,200,100); //타원
g.drawOval(150,150,100,200);
for(int i = 10 ; i<=450; i+=10)
{
g.drawOval(i,250,100,100);
g.drawOval(i,i,i+=1,i+=1);
}
g.setColor(Color.red);
g.drawArc(100,100,200,200,30,270);
g.fillArc(110,110,170,170,30,270);
*/
int x[] = {30,200,250,400,450,30};
int y[] = {140,50,70,20,140,140};
for(int i = 0; i<x.length ; i++)
{
y[i]+=100;
}
g.drawPolygon(x,y,x.length);
g.setColor(Color.green);
g.fillPolygon(x,y,x.length);
}
public static void main(String args[])
{
new Graphics_1();
}
}
-----------------------------------------------------------------------------------------
예제 ( 이미지 테두리)
-----------------------------------------------------------------------------------------
import java.awt.*;
import java.awt.event.*;
class Graphics_2 extends Frame
{
Image im;
public Graphics_2()
{
super("으으으");
im = Toolkit.getDefaultToolkit().getImage("bb.gif");
addWindowListener(new MyWin());
setBounds(100,100,800,800);
setVisible(true);
}
class MyWin extends WindowAdapter
{
public void windowClosing(WindowEvent w)
{
System.exit(0);
}
}
public void paint(Graphics g)
{
//g.drawImage(im,20,20,this);
g.drawImage(im,100,100,600,300,this);
g.drawRect(100,100,600,300);
g.drawImage(im,100,500,600,300,this);
g.drawRect(100,500,600,300);
}
public static void main(String args[])
{
new Graphics_2();
}
}
Layout - Component 배치관리자
1. FlowLayout - panel계열에 default로 적용됨 - 버튼 위치는 바뀌나 크기는 안바뀜
2. BorderLayout - window계열에 default로 적용됨 - 버튼 위치는 안바뀌고 크기만 바뀜
3. GridLayout - 격자모양
4. GridBagLayout - 다양한 크기로 지정 가능하다.
5. CardLayout - 거의 사용 안함.
6. null - 프로그래머가 위치,크기를 알아서 설정한다. //가장 많이 사용
-----------------------------------------------------------------------------------------
예제 (Flow Layout)
-----------------------------------------------------------------------------------------
import java.awt.*;
import java.awt.event.*;
class Layout_1 extends Frame
{
//Field
Button b1,b2,b3,b4,b5;
public Layout_1()
{
super("하악하악");
b1 = new Button("첫번째 버튼");
b2 = new Button("두번째 버튼");
b3 = new Button("세번째 버튼");
b4 = new Button("네번째 버튼");
b5 = new Button("다섯번째 버튼");
setLayout(new FlowLayout());// 레이아웃 설정 없으면 Border로 설정됨
// 생성자에서 메소드를 바로쓴건 this생략된거임..
//setLayout(new FlowLayout(FlowLayout.LEFT,20,20));
this.add(b1);// 컨테이너에 컴포넌트 붙이기
add(b2);
add(b3);
add(b4);
add(b5);
addWindowListener(new MyWin());// 이벤트 등록
setBounds(100,100,800,800);
setVisible(true);
}
class MyWin extends WindowAdapter
{
public void windowClosing(WindowEvent w)
{
System.exit(0);
}
}
public static void main(String args[])
{
new Layout_1();
}
}
-----------------------------------------------------------------------------------------
예제 (Border Layout)
-----------------------------------------------------------------------------------------
import java.awt.*;
import java.awt.event.*;
class Layout_2 extends Frame
{
//Field
Button b1,b2,b3,b4,b5;
public Layout_2()
{
super("super");
b1 = new Button("첫번째버튼");
b2 = new Button("두번째버튼");
b3 = new Button("세번째버튼");
b4 = new Button("네번째버튼");
b5 = new Button("다섯째버튼");
setLayout(new BorderLayout(20,20)); // Window계열에 기본적용
this.add(b1,BorderLayout.NORTH); // top
this.add(b1,"North");
this.add(b2,"South"); // bottom
add(b3,"East");// right
add(b4,"West");// left
add(b5,"Center");
//메소드의 인수로 전달되는 부분(North,South 등등)은 오타나면 컴파일 에러 안남.
//런타임에 에러가 나므로 찾기 힘들다.
addWindowListener(new MyWin());
setBounds(400,200,500,500);
setVisible(true);
}
class MyWin extends WindowAdapter
{
public void windowClosing(WindowEvent w)
{
System.exit(0);
}
}
public static void main(String args[])
{
new Layout_2();
}
}
-----------------------------------------------------------------------------------------
예제 (GridLayout)
-----------------------------------------------------------------------------------------
import java.awt.*;
import java.awt.event.*;
class Layout_3 extends Frame
{
//Field
Button b1,b2,b3,b4,b5;
public Layout_3()
{
super("으힣");
b1= new Button("첫번째버튼");
b2 = new Button("두번째 버튼");
b3 = new Button("세번째버튼");
b4 = new Button("네번재버튼");
b5 = new Button("다섯째버튼");
setLayout(new GridLayout(2,3)); //2행 3열
add(b1);
add(b2);
add(b3);
add(b4);
add(b5);
addWindowListener(new MyWin());
setBounds(200,200,400,400);
setVisible(true);
}
class MyWin extends WindowAdapter
{
public void windowClosing(WindowEvent w)
{
System.exit(0);
}
}
public static void main(String args[])
{
new Layout_3();
}
}
-----------------------------------------------------------------------------------------
예제 (Panel - FlowLayout, Frame - BorderLayout
-----------------------------------------------------------------------------------------
import java.awt.*;
import java.awt.event.*;
class Layout_4 extends Frame
{
// 필드
Button b1,b2,b3,b4,b5;
Panel pn,ps;
public Layout_4()
{
b1 = new Button("첫번째");//버튼 생성
b2 = new Button("두번재");
b3 = new Button("세번째");
b4 = new Button("네번째");
b5 = new Button("다섯째");
pn = new Panel(); // 페널 생성
ps = new Panel();
pn.setBackground(Color.yellow);
ps.setBackground(Color.yellow); // 페널배경색
b1.setBackground(Color.blue); //버튼배경색
b1.setForeground(Color.white); //글자색
b1.setFont(new Font("Dialog",Font.BOLD,15)); //폰트설정
pn.add(b1); //페널에 버튼 추가
pn.add(b2);
pn.add(b3);
ps.add(b4);
ps.add(b5);
this.add(pn,"North");//위치설정
this.add(ps,"South");
setBounds(200,200,300,300);
setVisible(true);
addWindowListener(new WindowAdapter()
{//무명 inner class
public void windowClosing(WindowEvent w)
{
System.exit(0);
}
});
}
public static void main(String args[])
{
new Layout_4();
}
}
-----------------------------------------------------------------------------------------
예제 (Label) Applet
-----------------------------------------------------------------------------------------
import java.awt.*;
public class Label_1 extends java.applet.Applet
{
Label la1 = new Label("aligned left");
Label la2 = new Label("aligned center",Label.CENTER);
Label la3 = new Label("aligned right",Label.RIGHT);
public void init()
{
la1.setBackground(Color.cyan);
la2.setBackground(Color.cyan);
la3.setBackground(Color.cyan);
setLayout(new BorderLayout());
//setLayout(new FlowLayout());
add(la1);
add(la2);
add(la3);
}
}
-----------------------------------------------------------------------------------------
예제 (Button) Applet
-----------------------------------------------------------------------------------------
import java.awt.*;
public class Button_1 extends java.applet.Applet
{
Button ok = new Button("확인");
Button cancel = new Button("취소");
Button retry = new Button("재시도");
public void init()
{
ok.setBackground(Color.blue);
ok.setForeground(Color.white);
ok.setFont(new Font("Dialog",Font.BOLD,20));
add(ok);
add(cancel);
add(retry);
}
}
-----------------------------------------------------------------------------------------
예제 (Choice) Applet
-----------------------------------------------------------------------------------------
import java.awt.*;
public class Choice_1 extends java.applet.Applet
{
Choice ch = new Choice();
public void init()
{
ch.add("국어");
ch.add("영어");
ch.add("수학");
ch.add("과학");
ch.add("총점");
add(ch); //컨테이너에 컴포넌트 붙이기
}
public void paint(Graphics g)
{
g.drawString("Hello Choice_1!", 50, 50);
}
}
-----------------------------------------------------------------------------------------
예제 (TextField) Applet
-----------------------------------------------------------------------------------------
import java.awt.*;
public class ComponentTest_1 extends java.applet.Applet
{
TextField tf;
public void init()
{
// default Layout Applet을 상속받았으니까.
add(new Label("아이디를 입력하세요"));
add(new TextField("여기에 ", 25));
add(new Label("전화번호를 입력하세요"));
add(new TextField(12));
add(new Label("비밀번호를 입력하시오"));
tf = new TextField("여기에 ", 20);
tf.setEchoChar('*'); // *로 보여줘라
add(tf);
}
}
-----------------------------------------------------------------------------------------
예제 (종합)
-----------------------------------------------------------------------------------------
import java.awt.*;
import java.awt.event.*;
class ComponentTest_2 extends Frame
{
//Field
Button b;
Label la;
TextArea ta;
TextField tf;
Checkbox cb;
Choice ch;
List li;
public ComponentTest_2(String title)
{
super(title);
b = new Button("버튼");
la = new Label("라벨");
ta = new TextArea("텍스트 영역",5,20); //5는 줄 20은 글자수
tf = new TextField("텍스트 영역",20);
cb = new Checkbox("체크박스");
ch = new Choice();
li = new List();
ch.add("red");
ch.add("green");
ch.add("blue");
ch.add("yelow");
ch.add("black");
li.add("국어");
li.add("영어");
li.add("수학");
li.add("총점");
li.add("평균");
//setLayout(new FlowLayout());
add(b); //컨테이너에 컴포넌트 붙이기
add(la);
add(ta);
add(tf);
add(cb);
add(ch);
add(li);
addWindowListener(new MyWin());
//setBounds(200,200,500,500);
pack(); //기본크기
setVisible(true);
}
class MyWin extends WindowAdapter
{
public void windowClosing(WindowEvent w)
{
System.exit(0);
}
}
public static void main(String args[])
{
new ComponentTest_2("ComponentTest_2");
}
}
-----------------------------------------------------------------------------------------
예제 (체크박스, 라디오버튼)
-----------------------------------------------------------------------------------------
체크박스는 체크박스, 라디오 버튼 둘다 가능.
생성자
Checkbox()
Checkbox(String label)
Checkbox(String label, boolean state)
Checkbox(String label, boolean state, CheckboxGroup group)
label : 문자열 제목
state : 값 선택 여부 (true/ false)
group : 체크박스를 그룹에 포함 시킨다.
메서드
String gsetLable() : checkbox 라벨 리턴
void setLabel(String label) : 체크박스 라벨 설정
boolean getState() : 체크박스 상태를 리턴
void setState(boolean state) : 체크박스에 체크표시
*/
import java.awt.*;
public class CheckboxTest extends java.applet.Applet
{
//필드
/* //체크박스-------------------
Checkbox cb1,cb2,cb3;
public void init()
{
cb1 = new Checkbox("체크박스1",true); //체크되어있음.
cb2 = new Checkbox("체크박스2",false); //체크 안되어 있음.
cb3 = new Checkbox("체크박스3",false);
add(cb1);
add(cb2);
add(cb3);
*/
//라디오 버튼--------------------------------
Checkbox ra1,ra2,ra3;
CheckboxGroup group;
public void init() //생성자와 같은 기능
{
group = new CheckboxGroup();
ra1 = new Checkbox("옵션1",true,group);
ra2 = new Checkbox("옵션2",true,group);
ra3 = new Checkbox("옵션3",false,group);
add(ra1);
add(ra2);
add(ra3); //컨테이너에 컴포넌트 붙이기;
}
}
컴포넌트 이벤트 처리
-----------------------------------------------------------------------------------------
예제 1
-----------------------------------------------------------------------------------------
import java.awt.*;
public class ComponentTest_1 extends java.applet.Applet
{
TextField tf;
public void init()
{
// default Layout Applet을 상속받았으니까.
add(new Label("아이디를 입력하세요"));
add(new TextField("여기에 ", 25));
add(new Label("전화번호를 입력하세요"));
add(new TextField(12));
add(new Label("비밀번호를 입력하시오"));
tf = new TextField("여기에 ", 20);
tf.setEchoChar('*'); // *로 보여줘라
add(tf);
}
}
-----------------------------------------------------------------------------------------
예제 2
-----------------------------------------------------------------------------------------
import java.awt.*;
import java.awt.event.*;
class ComponentTest_2 extends Frame
{
//Field
Button b;
Label la;
TextArea ta;
TextField tf;
Checkbox cb;
Choice ch;
List li;
public ComponentTest_2(String title)
{
super(title);
b = new Button("버튼");
la = new Label("라벨");
ta = new TextArea("텍스트 영역",5,20); //5는 줄 20은 글자수
tf = new TextField("텍스트 영역",20);
cb = new Checkbox("체크박스");
ch = new Choice();
li = new List();
ch.add("red");
ch.add("green");
ch.add("blue");
ch.add("yelow");
ch.add("black");
li.add("국어");
li.add("영어");
li.add("수학");
li.add("총점");
li.add("평균");
//setLayout(new FlowLayout());
add(b); //컨테이너에 컴포넌트 붙이기
add(la);
add(ta);
add(tf);
add(cb);
add(ch);
add(li);
addWindowListener(new MyWin());
//setBounds(200,200,500,500);
pack(); //기본크기
setVisible(true);
}
class MyWin extends WindowAdapter
{
public void windowClosing(WindowEvent w)
{
System.exit(0);
}
}
public static void main(String args[])
{
new ComponentTest_2("ComponentTest_2");
}
}
-----------------------------------------------------------------------------------------
예제 3
-----------------------------------------------------------------------------------------
/*
체크박스는 체크박스, 라디오 버튼 둘다 가능.
생성자
Checkbox()
Checkbox(String label)
Checkbox(String label, boolean state)
Checkbox(String label, boolean state, CheckboxGroup group)
label : 문자열 제목
state : 값 선택 여부 (true/ false)
group : 체크박스를 그룹에 포함 시킨다.
메서드
String gsetLable() : checkbox 라벨 리턴
void setLabel(String label) : 체크박스 라벨 설정
boolean getState() : 체크박스 상태를 리턴
void setState(boolean state) : 체크박스에 체크표시
*/
import java.awt.*;
public class CheckboxTest extends java.applet.Applet
{
//필드
/* //체크박스-------------------
Checkbox cb1,cb2,cb3;
public void init()
{
cb1 = new Checkbox("체크박스1",true); //체크되어있음.
cb2 = new Checkbox("체크박스2",false); //체크 안되어 있음.
cb3 = new Checkbox("체크박스3",false);
add(cb1);
add(cb2);
add(cb3);
*/
//라디오 버튼--------------------------------
Checkbox ra1,ra2,ra3;
CheckboxGroup group;
public void init() //생성자와 같은 기능
{
group = new CheckboxGroup();
ra1 = new Checkbox("옵션1",true,group);
ra2 = new Checkbox("옵션2",true,group);
ra3 = new Checkbox("옵션3",false,group);
add(ra1);
add(ra2);
add(ra3); //컨테이너에 컴포넌트 붙이기;
}
}
-----------------------------------------------------------------------------------------
예제 4
-----------------------------------------------------------------------------------------
/*
* Author: user
* Created: 2010년 2월 1일 월요일 오후 12:30:48
* Modified: 2010년 2월 1일 월요일 오후 12:30:48
*/
import java.awt.*;
import java.awt.event.*;
class ComponentEvent_1 extends Frame implements ActionListener
{
TextField tf1;
TextArea ta;
TextField tf2;
public ComponentEvent_1()
{
Button bOpen, bSave, bExit;
Panel pn,ps;
setTitle("으하하");
tf1 = new TextField();
ta = new TextArea();
tf2 = new TextField();
ta.setBackground(Color.yellow);
ta.setEditable(false);
add(tf1,"North");
add(ta,"Center");
add(tf2,"South");
addWindowListener(new MyWin());
tf1.addActionListener(this);
tf2.addActionListener(this);//
//setLayout(new FlowLayout());
setBounds(200,200,300,300);
setVisible(true);
tf1.requestFocus();// 커서를 tf1으로 놔둠.
}
class MyWin extends WindowAdapter
{
public void windowClosing(WindowEvent w)
{
System.exit(0);
}
}
// 오버라이딩
public void actionPerformed(ActionEvent e)
{
if(e.getSource() == tf1) // getSource() 객체가 발생한 곳의 객체를 가져온다.
{
String msg = "손오공이 한 말>>> "+tf1.getText(); // tf1에서 텍스트를 구해서 msg에 넣는다
ta.append(msg+"\n"); //TextArea에서 줄바꿈.
tf1.setText(""); // tf1 지운다.
tf2.requestFocus(); // tf2로 커서 옴긴다.
}
if(e.getSource() == tf2)
{
String msg = "사오정이 한 말>>> "+tf2.getText();
ta.append(msg+"\n");
tf2.setText("");
tf1.requestFocus();
}
}
public static void main(String args[])
{
new ComponentEvent_1();
}
}
-----------------------------------------------------------------------------------------
예제 5
-----------------------------------------------------------------------------------------
/*
Button의 이벤트 처리
*/
import java.awt.*;
import java.awt.event.*;
class ComponentEvent_2 extends Frame implements ActionListener
{
Button bOpen, bSave, bExit, bPrint;
Panel pn,ps;
public ComponentEvent_2()
{
this.setBackground(Color.blue);
bOpen = new Button("파일열기");
bSave = new Button("파일저장");
bExit = new Button("종료");
bPrint = new Button("인쇄");
pn = new Panel();
ps = new Panel();
pn.setBackground(Color.yellow);
ps.setBackground(Color.yellow);
pn.add(bOpen);
pn.add(bSave);
ps.add(bExit);
ps.add(bPrint);
this.add(pn,"North");
this.add(ps,"South");
addWindowListener(new MyWin());
bOpen.addActionListener(this);
bSave.addActionListener(this);
bExit.addActionListener(this);
bPrint.addActionListener(this);
setBounds(200,200,300,300);
setVisible(true);
}
class MyWin extends WindowAdapter
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
}
public void actionPerformed(ActionEvent e)
{
FileDialog fd = null;
if(e.getSource() == bOpen)
{
fd = new FileDialog(this,"파일열기",FileDialog.LOAD);
fd.setVisible(true);
}else if (e.getSource() == bSave){
fd = new FileDialog(this,"파일열기",FileDialog.SAVE);
fd.setVisible(true);
}else if (e.getSource() == bExit){
System.exit(0);
}else if (e.getSource() == bPrint){
PrintJob pj = getToolkit().getPrintJob(this,"인쇄",null);
}
}
public static void main(String args[])
{
new ComponentEvent_2();
}
}
-----------------------------------------------------------------------------------------
예제 6
-----------------------------------------------------------------------------------------
/*
* Author: user
* Created: 2010년 2월 1일 월요일 오후 4:11:15
* Modified: 2010년 2월 1일 월요일 오후 4:11:15
*/
import java.awt.*;
import java.awt.event.*;
class ComponentEvent_3 extends Frame implements ItemListener
{
Checkbox apple, banana, orange, grape;
Panel panel;
TextArea ta;
public ComponentEvent_3()
{
apple = new Checkbox("사과", null,true);
banana = new Checkbox("바나나");
orange = new Checkbox("오렌지");
grape = new Checkbox("포도");
panel = new Panel();
ta = new TextArea();
panel.add(apple);// 페널 컨테이너에 apple컴포넌트 붙이기.
panel.add(banana);
panel.add(orange);
panel.add(grape);
this.add(panel,"North"); //Frame에 panel붙이기
this.add(ta,"Center");
//이벤트 등록
apple.addItemListener(this);
banana.addItemListener(this);
orange.addItemListener(this);
grape.addItemListener(this);
addWindowListener(new MyWin());
setBounds(200,200,300,300);
setVisible(true);
}
class MyWin extends WindowAdapter
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
}
public void itemStateChanged(ItemEvent ie)
{
Checkbox cb = (Checkbox)ie.getSource();
if(cb.equals(apple))// 이벤트 발생 한소스가 apple인가?
{
if(cb.getState())// 체크박스가 체크된 상태인가?
{
ta.append("사과 선택 했음 \n");
}
else //체크박스가 선택되지 않음
{
ta.append("사과 선택 해제 했음 \n");
}
}
else if(cb.equals(banana))
{
if(cb.getState()) //getState() 체크되어있으면 true 안되어 있으면 false
{
ta.append("바나나 선택 했음 \n");
}else
{
ta.append("바나나 선택 해제 했음 \n");
}
}
else if(cb.equals(orange))
{
if(cb.getState())
{
ta.append("오렌지 선택 했음 \n");
}else
{
ta.append("오렌지 선택 해제 했음 \n");
}
}
else if(cb.equals(grape))
{
if(cb.getState())
{
ta.append("포도 선택 했음 \n");
}else
{
ta.append("포도 선택 해제 했음 \n");
}
}
}
public static void main(String args[])
{
new ComponentEvent_3();
}
}
-----------------------------------------------------------------------------------------
예제 7
-----------------------------------------------------------------------------------------
/*
라디오 버튼 (옵션버튼)
*/
import java.awt.*;
import java.awt.event.*;
class ComponentEvent_4 extends Frame implements ItemListener ,ActionListener
{
Button ex;
Checkbox apple, banana, orange, grape;
CheckboxGroup group;
Label la1, la2, la3;
Panel p1,p2;
public ComponentEvent_4()
{
group = new CheckboxGroup();
setLayout(new BorderLayout());
apple = new Checkbox("사과",group,true);
banana = new Checkbox("바나나",group,false);
orange = new Checkbox("오렌지",group,false);
grape = new Checkbox("포도",group,false);
ex = new Button("종료");
la1 = new Label("항목을 선택하세요");
la2 = new Label("선택한 항목은");
la3 = new Label(" "); // 10칸정도
p1 = new Panel();
p1.setBackground(Color.yellow);
p1.setLayout(new GridLayout(6,1));
p1.add(la1); //Panel에 컴포넌트 붙이기
p1.add(apple);
p1.add(banana);
p1.add(orange);
p1.add(grape);
p1.add(ex);
p2 = new Panel();
p2.setBackground(Color.green);
p2.add(la2); //Panel에 컴포넌트 붙이기
p2.add(la3);
this.add(p1,"North");
this.add(p2,"Center");
//이벤트 등록
apple.addItemListener(this);
banana.addItemListener(this);
orange.addItemListener(this);
grape.addItemListener(this);
ex.addActionListener(this);
addWindowListener(new MyWin());
setBounds(200,200,400, 400);
//setSize(300,300);
setVisible(true);
}
class MyWin extends WindowAdapter
{
public void windowClosing(WindowEvent w)
{
System.exit(0);
}
}
//Overriding
public void actionPerformed(ActionEvent e)
{
if (e.getSource() == ex){
System.exit(0);
}
}
public void itemStateChanged(ItemEvent ie)
{
la3.setText(group.getSelectedCheckbox().getLabel());// 그룹안에 체크된 체크박스를 표시
}
public static void main(String args[])
{
new ComponentEvent_4();
}
}