关闭副窗口,却把主窗口也关闭了???
下面是一个录取的程序,点击菜单中的 "录取 "后选择子菜单 "录取 ",会弹出一个子窗口,但是假如我把这个子窗口关掉的话,主窗口也部执行.郁闷 ...
代码如下:
====================================================
import java.awt.*;
import java.awt.event.*;
import javax.swing.JOptionPane;
class z_Launch{
TextField z_tName;
TextField z_tID ;
TextField z_tTotal ;
TextField z_tSports;
Label z_l1;//设置居中
Label z_l2 ;
Label z_l3 ;
Label z_l4;
Button z_bEnroll = new Button( "录取 ");
Button z_bReset = new Button( "重置 ");
z_Launch(){
////////////////////////////////
///设置登陆框
Frame z_Launch = new Frame( "登陆 ");
z_Launch.setLayout(new GridLayout(5,2));
z_tName = new TextField();
z_tID = new TextField();
z_tTotal = new TextField();
z_tSports = new TextField();
z_l1 = new Label( "用户名 ",Label.CENTER);//设置居中
z_l2 = new Label( "考号 ",Label.CENTER);
z_l3 = new Label( "综合成绩 ",Label.CENTER);
z_l4 = new Label( "体育成绩 ",Label.CENTER);
z_bEnroll = new Button( "录取 ");
z_bReset = new Button( "重置 ");
z_Launch.add(z_l1);
z_Launch.add(z_tName);
z_Launch.add(z_l2);
z_Launch.add(z_tID);
z_Launch.add(z_l3);
z_Launch.add(z_tTotal);
z_Launch.add(z_l4);
z_Launch.add(z_tSports);
z_Launch.add(z_bEnroll);
z_Launch.add(z_bReset);
z_Launch.pack();
z_Launch.setBounds(100,200,300,200);
z_Launch.setResizable(false);
z_Launch.setVisible(true);
z_Launch.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
}
class z_intferface extends WindowAdapter implements ActionListener{
Frame f;
MenuBar z_mb;
Menu z_Enroll;
Menu z_Stat;
Menu z_Exit;
TextArea z_t;
//
MenuItem z_mEnroll;
MenuItem z_mStat;
MenuItem z_mExit;
MenuItem z_mExit2;
z_intferface(){
f = new Frame( "登陆 ");
z_mb = new MenuBar();
z_t =new TextArea();
//
z_Enroll = new Menu( "录取 ");
z_Stat = new Menu( "统计 ");
z_Exit = new Menu( "退出 ");
//
z_mEnroll=
new MenuItem( "录取 ",new MenuShortcut(KeyEvent.VK_L));
z_mStat=
new MenuItem( "统计 ",new MenuShortcut(KeyEvent.VK_S));
z_mExit=
new MenuItem( "退出 ",new MenuShortcut(KeyEvent.VK_T));
z_mExit2=
new MenuItem( "退出 ",new MenuShortcut(KeyEvent.VK_T));
//
z_Enroll.add(z_mEnroll);
z_Enroll.addSeparator();
z_Enroll.add(z_mExit2);
z_Stat.add(z_mStat);
z_Exit.add(z_mExit);
//
z_mb.add(z_Enroll);
z_mb.add(z_Stat);
z_mb.add(z_Exit);
f.setMenuBar(z_mb);
f.add(z_t);
z_Exit.addActionListener(this);
z_mEnroll.addActionListener(this);
z_mExit.addActionListener(this);
z_mExit2.addActionListener(this);
z_Stat.addActionListener(this);
/*z_mStat.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
System.exit(0);
}
});
z_mExit.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
System.exit(0);
}
});
z_mExit2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
System.exit(0);
}
});
z_mEnroll.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
new z_Launch();
}
});*/
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
f.pack();
f.setVisible(true);
}
public void actionPerformed(ActionEvent e){//有问题
if(e.getSource() == z_Exit.getItem(0)){
System.exit(0);
}
else if(e.getSource() == z_Enroll.getItem(0)){
new z_Launch();
}
else if(e.getSource() == z_Enroll.getItem(2)){
System.exit(2);
}
}
}
public class Z_LuQu {
public static void main(String[] args) {
// TODO, add your application code
z_intferface z_i = new z_intferface();
//z_Launch z_l = new z_Launch();
}
}
[解决办法]
z_Launch.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
// System.exit(0);
z_Launch.dispose();
}
});
这样改的话 z_Launch 要声明为final