public class NewJDialog extends javax.swing.JDialog {
private JButton jb;

public NewJDialog(JFrame frame) {
super(frame, "111", true);
initGUI();
}

private void initGUI() {
JPanel jp = new JPanel();
jb = new JButton("按钮");
jp.add(jb);
jb.setText("jButton1");
setSize(400, 300);
setVisible(true);
jb.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
                                        System.out.println("aaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
System.exit(0);
}
});
this.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.out.println("bbbbbbbbbbbbbbbbbbbbbbbbb");
System.exit(0);
}
});
}

public static void main(String[] args) {
new NewJDialog(new JFrame());
}
}上面的代码 窗口关闭 和 按钮事件 都没有监听到
而当我把super(frame, "111", true);改成 super(frame, "111", false);

把public class NewJDialog extends javax.swing.JDialog 改成 public class NewJDialog extends javax.swing.JFrame
都没问题请问这是为什么???
有没有什么办法能解决???
我需要的是super(frame, "111", true);望指点~!!!

解决方案 »

  1.   

    上面的代码有两个问题:1、jp 根本没有添加到上上面的按钮上去。2、initGUI()--->setVisible(true); 不应该写在initGUI()中前面,应该在初始化后的最后一句在写上该句(这种方式不推荐;一般采用在main中 NewJDialog d=new NewJDialog(new JFrame());
     d.setVisible(true);),因为super(frame,   "111 ",   true)中的true表示是模式对话框,阻止后面的执行。
      

  2.   

    非常感谢~!!!!jp   根本没有添加到上上面的按钮上去
    不好意思,贴子是直接写的,没有经过编译问题找到了,正如你说的: 因为super(frame,       "111   ",       true)中的true表示是模式对话框,阻止后面的执行。再次感谢~!!!
      

  3.   

    我本人是做web的,因公司现在对swing的需求,经理特地让我去研究一下swing,以后可能还会面临很多问题,希望能再次向你请教~!!!