import java.awt.*;
import java.awt.event.*;public class DialogTest extends Frame {
TextField tf = new TextField();
DialogTest() {
setBounds(300,100,400,400); Button b1 = new Button("保护的临时对话框");
Button b2 = new Button("临时对话框");
add(tf,BorderLayout.NORTH);
add(b1,BorderLayout.CENTER);
add(b2,BorderLayout.EAST);

b1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
MyDialog md = new MyDialog(DialogTest.this,"保护的临时对话框",true);
md.setVisible(true); //为什么要放在外面,不能在类中定义   显示
//我放在 MyDialog 类中定义 , 打开的窗口就无法关闭
//但是放在这里定义 就可以, 请问是什么问题
}
});
setVisible(true);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
dispose();
System.exit(0);
}
});
}


public static void main(String[] args) {
DialogTest dt = new DialogTest();

}
}
import java.awt.*;
import java.awt.event.*;public class MyDialog extends Dialog {
TextField tf = new TextField();
MyDialog(Frame owner, String title, boolean modal) {
super(owner,title,modal);
Button b1 = new Button("应用");
Button b2 = new Button("确定");
add(tf,BorderLayout.NORTH);
add(b1,BorderLayout.CENTER);
add(b2,BorderLayout.EAST);
setBounds(200,300,200,200);

//setVisible(true); //窗口无法关闭

b1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
dispose();
}
});
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
dispose();
}
});
}
}
我的问题在 // 后面

解决方案 »

  1.   

    我语文不好,不太会描述
    各位运行下
    我只添加了第一个按钮的事件响应
      

  2.   

    这是一个内部类!
    你去查一下内部类,你就明白了
      

  3.   

    没人跟我说一下吗??
    还是太简单了?不想说啊?
      

  4.   

    我是新手个人理解啊
    内部类只调用一次就不在调用了
    你的监听器写在类的内部当然就只能调用一次
      

  5.   

    谢谢2位了 其实不是内部类的问题
    只是代码的顺序问题