728x90


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();
 }
}


+ Recent posts