2008. 8. 27. 16:19

Part 6. AWT - III 윈도우창에 메뉴바와 메뉴 만들기

===================================================================================
CardLayout을 통한 메인
===================================================================================
package pack01;
import java.awt.CardLayout;
import java.awt.Frame;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.Panel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
class FrameTest extends Frame implements ActionListener{
 CardLayout card;
 MenuItem mi01, mi02, mi03, mi04, mi05;
 public void actionPerformed(ActionEvent e) {
  Object menu=e.getSource();
  if(menu == mi01 || menu == mi02 || menu == mi03 ){
  card.show(this, e.getActionCommand());
  }
  else if(menu==mi04){
   CalcDialog dlg=new CalcDialog();
  }
  else if(menu==mi05){
   AboutDialog adlg=new AboutDialog(this);
  }
 }
 FrameTest(){
  card=new CardLayout();
  Panel p01=new CusPanel();
  Panel p02=new VideoPanel();
  Panel p03=new RentPanel();  
  // 패널을 프레임에 추가하되 배치관리자가 CardLayout일 경우에는 이름을 주어야 한다.
  setLayout(card);
  add(p01,"고객 관리");
  add(p02,"비디오 관리");
  add(p03,"대여 관리");  
  card.show(this, "대여관리");
  MenuBar mb=new MenuBar();
  setMenuBar(mb);  
  Menu m01=new Menu("비디오 대여관리");
  mb.add(m01);
  Menu m02=new Menu("도움말");
  mb.add(m02);
  mi01=new MenuItem("고객 관리");
  m01.add(mi01);
  mi02=new MenuItem("비디오 관리");
  m01.add(mi02);
  mi03=new MenuItem("대여 관리");
  m01.add(mi03);
  mi04=new MenuItem("계산기");
  m02.add(mi04);
  mi05=new MenuItem("about 비디오관리");  
  m02.add(mi05);
  mi01.addActionListener(this);
  mi02.addActionListener(this);
  mi03.addActionListener(this);
  mi04.addActionListener(this);
  mi05.addActionListener(this);
  setSize(300,200);
  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();
 }
}
===================================================================================
고객관리 CusPanel.java, 비디오관리 VideoPanel, 대여관리 RentPanel
===================================================================================
package pack01;
import java.awt.Label;
import java.awt.Panel;
public class CusPanel extends Panel {
 CusPanel(){
  add(new Label("고객 관리"));
 }
}

package pack01;
import java.awt.Label;
import java.awt.Panel;
public class VideoPanel extends Panel{
 VideoPanel(){
 add(new Label("비디오 관리"));
 }
}

package pack01;
import java.awt.Label;
import java.awt.Panel;
public class RentPanel extends Panel{
 RentPanel(){
  add(new Label("대여관리"));
 }
}
===================================================================================
도움말 메뉴 - 계산기
===================================================================================
package pack01;
import java.awt.Dialog;
import java.awt.Frame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class CalcDialog extends Dialog {
 CalcDialog(){
  super(new Frame());
  setSize(200,100);
  setVisible(true);
  addWindowListener(new WindowAdapter(){
   @Override
   public void windowClosing(WindowEvent e) {
    dispose();
   }  
  }
  );
 }
}
===================================================================================
도움말 메뉴 - about 비디오관리
===================================================================================
package pack01;
import java.awt.Dialog;
import java.awt.Frame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class AboutDialog extends Dialog {
 FrameTest fe;
 public AboutDialog(FrameTest fe) {
  super(fe);
  this.fe = fe;
  setSize(200,100);
  setVisible(true);
  addWindowListener(new WindowAdapter(){
   @Override
   public void windowClosing(WindowEvent e) {
    dispose();
   }  
  }
  );
 }
}
===================================================================================