public class SetupFrame extends JDialog
{
GameStatus gameStatus = GameStatus.getGameStatus();
public SetupFrame(JFrame parent)
{
super(parent,"信息设置",true);


setSize(350,200);
setLocation(200, 200);
setVisible(true);
setResizable(false);

cancel.addActionListener(new ActionListener()
{ public void actionPerformed(ActionEvent arg0)
{
SetupFrame.this.dispose();
System.out.println("点击关闭");
}

});
}
}如果我将 extends JDialog 换成 extends JFrame 则可以顺利关闭?

解决方案 »

  1.   

    错了cancel 是SetupFrame 的对象?
      

  2.   

    public class SetupFrame extends JDialog implements ActionListener
    {
          GameStatus gameStatus = GameStatus.getGameStatus();
          public SetupFrame(JFrame parent)
          {
            super(parent,"信息设置",true);
            setSize(350,200);
            setLocation(200, 200);
            setVisible(true);
            setResizable(false);        cancel.addActionListener(this);
          }
          public void actionPerformed(ActionEvent arg0)
          {
           dispose();                        //不要用這個SetupFrame.this.dispose();
           System.out.println("点击关闭");
          }}
      

  3.   

    一直忘了看..楼上的..不行..根本执不到actionPerformed这个监听..System.out.println("点击关闭");也打印不出来 如果我将 extends JDialog 换成 extends JFrame 则完全没有问题
      

  4.   

    如果我把 super(parent,"信息设置",true); 写为super(parent,"信息设置",false);就是设置为非模式窗口.也能执行到actionPerformed这个监听
      

  5.   

    楼主,GameStatus gameStatus = GameStatus.getGameStatus();
    这个类是你自己定义的吗?
    我把你代码弄下来运行了一下,不要这一句就完全正常,到API里也没查到这个,
    你说明一下哈.