2008. 8. 27. 15:25

Part 6. AWT - II 컴포넌트의 이벤트 처리(2)

===================================================================================
라디오 버튼 세 개를 만들고 이벤트 발생 시, 배경색을 변경하는 소스
===================================================================================
package training;
import java.awt.Checkbox;
import java.awt.CheckboxGroup;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
class FrameTest extends Frame implements ItemListener {
 public void itemStateChanged(ItemEvent e) {
  this.setTitle((String)e.getItem());
  // 현재 이벤트를 받은 라디오 버튼을 구분해서 프레임의 배경색을 변경하시오.
  if(e.getSource()==c1){
   setBackground(Color.RED);
  }
  else if(e.getSource()==c2){
   setBackground(Color.GREEN);
  }
  else if(e.getSource()==c3){
   setBackground(Color.BLUE);
  }
 }
 CheckboxGroup colorGp=new CheckboxGroup();
 Checkbox c1,c2,c3;
 FrameTest(){
  setLayout(new FlowLayout());
  add(c1=new Checkbox("빨강",colorGp,false));
  add(c2=new Checkbox("초록",colorGp,false));
  add(c3=new Checkbox("파랑",colorGp,false));
  c1.addItemListener(this);
  c2.addItemListener(this);
  c3.addItemListener(this);  
  setSize(300,200);
  setVisible(true);
  addWindowListener(new WindowAdapter(){
   @Override
   public void windowClosing(WindowEvent e) {
    dispose();
    System.exit(0);
   }      
  }
  );
 }
}
public class Ex01 {
 public static void main(String[] args) {
  new FrameTest();
 }
}

===================================================================================
선택 컴포넌트와 아이템 이벤트
===================================================================================
package pack02;
import java.awt.BorderLayout;
import java.awt.List;
import java.awt.Frame;
import java.awt.TextArea;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
class FrameTest extends Frame implements ItemListener{
 public void itemStateChanged(ItemEvent e) {
  // 현재 선택된 이벤트 소스를 얻어옴
  Object o=e.getSource();
  List li=(List) o;
  ta.append(li.getSelectedItem()+"\n");  
 }
 List list;
 TextArea ta;
 FrameTest(){
  add(list=new List(), BorderLayout.NORTH);
  list.addItemListener(this);
  add(ta=new TextArea(), BorderLayout.CENTER);
  list.add("사과"); list.add("바나나");
  list.add("오렌지"); list.add("파인애플");
  list.add("토마토"); list.add("키위");
  pack();
  setVisible(true);
  addWindowListener(new WindowAdapter(){
   @Override
   public void windowClosing(WindowEvent arg0) {
    dispose();
    System.exit(0);
   }      
  }
  );
 }
}
public class Ex01 {
 public static void main(String[] args) {
  new FrameTest();
 }
}
===================================================================================
리스트 컴포넌트와 아이템 이벤트
===================================================================================
package pack02;
import java.awt.BorderLayout;
import java.awt.List;
import java.awt.Frame;
import java.awt.TextArea;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
class FrameTest extends Frame implements ItemListener{
 public void itemStateChanged(ItemEvent e) {
  // 현재 선택된 이벤트 소스를 얻어옴
  Object o=e.getSource();
  List li=(List) o;
  ta.append(li.getSelectedItem()+"\n");  
 }
 List list;
 TextArea ta;
 FrameTest(){
  add(list=new List(), BorderLayout.NORTH);
  list.addItemListener(this);
  add(ta=new TextArea(), BorderLayout.CENTER);
  list.add("사과"); list.add("바나나");
  list.add("오렌지"); list.add("파인애플");
  list.add("토마토"); list.add("키위");
  pack();
  setVisible(true);
  addWindowListener(new WindowAdapter(){
   @Override
   public void windowClosing(WindowEvent arg0) {
    dispose();
    System.exit(0);
   }      
  }
  );
 }
}
public class Ex01 {
 public static void main(String[] args) {
  new FrameTest();
 }
}
===================================================================================