请问各位高手,下面这个程序为什么无法关闭模式对话框,而对非模式对话框却可以?import java.awt.*;
import java.awt.event.*;
public class Myframe {
public static void main(String argv[]){
final Frame f1=new Frame();
Button b1=new Button("click");
f1.add(b1);
f1.setVisible(true);
f1.pack();
b1.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e){
final Dialog d=new Dialog(f1,"dialog",false);
d.setSize(100,100);
d.setVisible(true);
d.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent evt) {
d.setVisible(false);
}
});
}
});
f1.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent evt) {
System.exit(0);
}
});
}
}

解决方案 »

  1.   

    System.exit(0); 退出程序d.setVisible(false); 隐藏不可见
      

  2.   

    但是final Dialog d=new Dialog(f1,"dialog",false); 
    改为final Dialog d=new Dialog(f1,"dialog",true);后却关闭不了对话框 
      

  3.   

    import java.awt.*; 
    import java.awt.event.*; 
    public class Test3 { 
    public static void main(String argv[]){ 
    final Frame f1=new Frame(); 
    Button b1=new Button("click"); 
    f1.add(b1); 
    f1.setSize(400,400);
    f1.setVisible(true); 
    final Dialog d=new Dialog(f1,"dialog",true);
    d.addWindowListener(new WindowAdapter(){ 
    public void windowClosing(WindowEvent evt) { 
    d.setVisible(false); 
    }
    });
    b1.addMouseListener(new MouseAdapter(){ 
    public void mouseClicked(MouseEvent e){ 
     
    d.setSize(100,100); 
    d.setVisible(true);  

    }); 
    f1.addWindowListener(new WindowAdapter() { 
    public void windowClosing(WindowEvent evt) { 
    System.exit(0); 

    }); 
    }
    }
      

  4.   

    对于模式对话框,setVisible或者show以后,是被blocked掉的,也就是这之后的addWindowListener根本不会执行,知道对话框被关闭。
    而addWindowListener不被执行的话,对话框是不会被关闭的。所以你的程序就永远关不了
    把addWindowListener放在setVisible之前就行了