2008년 7월 4일 금요일

자바 확인 버튼을 눌렀을때 창이 닫히는 이벤트

자바 고수님 잘 안되서 질문드립니다. 추가할 내용이...


import java.awt.*;
import java.awt.event.*; //이벤트처리
import java.io.Closeable;
import com.sun.java.swing.plaf.windows.resources.windows;


class Calc extends Frame implements ActionListener
{
private TextField tf;
private Panel p1,p2,p3,p4,p5;

public Calc(String title){
this.setTitle(title);
//메뉴추가(메뉴판)
MenuBar mb = new MenuBar();

//2.편집메뉴를 생성
Menu edit = new Menu("편집");
Menu view = new Menu("보기");
Menu help = new Menu("도움말");

//3.메뉴아이템을 생성
MenuItem edit_copy = new MenuItem("복사");
MenuItem edit_paste = new MenuItem("붙여넣기");

//체크가 가능한 메뉴항목
CheckboxMenuItem view_common = new CheckboxMenuItem("일반");
CheckboxMenuItem view_special = new CheckboxMenuItem("공학용");
//분리선
MenuItem view_sperator = new MenuItem("-");
MenuItem view_dan = new MenuItem("자릿수 구분단위");

MenuItem help_item = new MenuItem("도움말");
MenuItem help_sperator = new MenuItem("-");
MenuItem help_info = new MenuItem("계산기정보");

//안->바깥 >>메뉴에 항목붙이기
edit.add(edit_copy);
edit.add(edit_paste);
//보기메뉴
view.add(view_common);
view.add(view_special);
view.add(view_sperator);
view.add(view_dan);
//도움말메뉴
help.add(help_item);
help.add(help_sperator);
help.add(help_info);
help_info.addActionListener(this);
//메뉴를 메뉴바에 붙이기
mb.add(edit); mb.add(view); mb.add(help);

//메뉴바->Frame
//setMenuBar(mb);
///////////////////////////////
setBackground(Color.lightGray);//계산기배경

tf = new TextField("0.");
p1 = new Panel();
p2 = new Panel();
p3 = new Panel();
p4 = new Panel();
p5 = new Panel(); //p5 ->NullPointerException
//BorderLayout bl = new BorderLayout(5,5);
setLayout(new BorderLayout(5,5));

this.add(tf,BorderLayout.NORTH);
this.add(p1,"Center");

//버튼들의 배치
p1.setLayout(new BorderLayout(5,5));
p1.add(p2,BorderLayout.WEST); //왼쪽
p1.add(p3,BorderLayout.CENTER);

//왼쪽버튼
p2.setLayout(new GridLayout(5,1,5,5));
p2.setForeground(Color.red); //빨강색
//Button b1 = new Button("");
p2.add(new Button(""));
p2.add(new Button("MC"));
p2.add(new Button("MR"));
p2.add(new Button("MS"));
p2.add(new Button("M+"));

//BackSpace쪽 버튼
p3.setLayout(new BorderLayout(5,5));
p3.add(p4,BorderLayout.NORTH);
p3.add(p5,"Center");

//BackSpace버튼 생성
p4.setLayout(new GridLayout(1,3,5,5));
p4.setForeground(Color.red);

p4.add(new Button("Backspace"));
p4.add(new Button("CE"));
p4.add(new Button("C"));

//p5의 배치
p5.setLayout(new GridLayout(4,5,5,5));
//Color c = new Color(0,0,255);/////////////////////////
p5.setForeground(Color.blue);
p5.add(new Button("7"));
p5.add(new Button("8"));
p5.add(new Button("9"));

p5.setForeground(Color.red); //빨강색 버튼
p5.add(new Button("/"));

p5.setForeground(Color.blue);
p5.add(new Button("sqrt"));

//4,5,6계열의 버튼배치/////////////////////////

p5.setForeground(Color.blue);
p5.add(new Button("4"));
p5.add(new Button("5"));
p5.add(new Button("6"));

p5.setForeground(Color.red); //빨강색 버튼
p5.add(new Button("*"));

p5.setForeground(Color.blue);
p5.add(new Button("%"));
//1,2,3계열의 버튼배치/////////////////////////

p5.setForeground(Color.blue);
p5.add(new Button("1"));
p5.add(new Button("2"));
p5.add(new Button("3"));

p5.setForeground(Color.red); //빨강색 버튼
p5.add(new Button("-"));

p5.setForeground(Color.blue);
p5.add(new Button("1/x"));
//0,+/-계열의 버튼배치/////////////////////////

p5.setForeground(Color.blue);
p5.add(new Button("0"));
p5.add(new Button("+/-"));
p5.add(new Button("."));

//p5.setForeground(Color.blue); //빨강색 버튼
p5.add(new Button("+"));
p5.add(new Button("="));


//창의크기를
this.pack(); //배치된 컴포넌트에 창을 맞추는 메서드
this.setResizable(false); //창의 확장을 막는 메서드
setMenuBar(mb);
setVisible(true);


//innerclass
this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}

//계산기 정보(메뉴항목) 누를때 이벤트
public void actionPerformed(ActionEvent e){
System.out.println(e.getActionCommand());
String s = e.getActionCommand();
if(s.equals("계산기정보")){
new InfoWindow("계산기 V1.0 정보");
}else{
System.out.println(); //그냥 준것 줄것이없어서..
}
}

public static void main(String[] args)
{
new Calc("계산기1.0");
}
}

//도움말 메뉴 계산기정보 항목을 누를때 나오는 창(클래스)
class InfoWindow extends Frame implements ActionListener
{

Button bt;//버튼을 여기에 선언 actionPerformed 에서 참조하기 위해
public InfoWindow(String st){
super(st);
this.addWindowListener(
new WindowAdapter()
{
//윈도우가 닫히는 이벤트가 일어날경우
public void windowClosing(WindowEvent e)
{
//InfoWindow 안보이게 닫기
setVisible(false);

}
}
);

bt = new Button("확인");
setLayout(null);
bt.setBounds(350,300,70,40);
add(bt);
bt.addActionListener(this);
setBounds(300,200,450,350);
setVisible(true);
setResizable(false);
}
@Override
public void actionPerformed(ActionEvent e) {

// TODO Auto-generated method stub

if ( e.getSource() == bt) {
this.setVisible(false);//InfoWindow 안보이게 닫기
}

}

}


[질문]

계산기의 외부 컴포넌트를 만들고 이벤트를 배우는 중입니다.
계산기외장만 있는상태에서 메뉴중 ..도움말에서 계산기정보 메뉴항목을
눌렀을때 창이 하나더 뜨는 이벤트를 완성했는데요. ..
그창에서 확인 버튼을 눌렀을때 창이 닫히는 이벤트 생성을 하고픈데 잘 안되서 질문드려요.~

댓글 없음:

댓글 쓰기

-


Sidewinder


World


FishMusic


LaughingBaby