关闭单个JFrame不工作的bug

时间:2013-10-02 17:18:23

标签: java swing jframe

我决定在我的JFrame上放置“关闭”按钮。如果我自己测试那个JFrame,它可以正常工作,但是当我在通过另一个类打开它之后尝试关闭它时,它将不会关闭。

以下是代码:

JButton btnClose = new JButton("Close");
btnClose.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent arg0) {
        frame.dispose();
    }
});
btnClose.setBounds(282, 666, 96, 50);
contentPane.add(btnClose);

我尝试过使用frame.dispose()frame.close()以及super.dispose(),但唯一可行的是system.exit(0);,但随后会退出整个程序。

问题:

  • 如果我自己测试JFrame,框架就会正常关闭。
  • 如果我打开程序并导航到特定的JFrame,则关闭按钮不执行任何操作。

请告知。

2 个答案:

答案 0 :(得分:1)

您是否在ActionListener中添加了一个显示语句以确保代码正在执行?

如果正在执行代码,则问题可能是帧变量具有无效引用。

您无需保留对框架的引用。而是使用类似的东西:

Window window = SwingUtilities.windowForComponent( e.getSource() );
window.dispose();

答案 1 :(得分:0)

在框架上使用setVisible(false);。然后致电处理。