2013-10-02 45 views
0

我决定在我的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,关闭按钮不起作用。

请指教。

+0

“当我试图通过另一个类,打开后关闭它” - 邮政编码为这部分 – Rajesh

+0

你有没有检查如果执行到达的代码点? –

+1

为了更快地获得更好的帮助,请发布[SSCCE](http://sscce.org/)。 *“..具体的'JFrame' ..”*请参阅[使用多个JFrames,良好/坏习惯?](http://stackoverflow.com/a/9554657/418556) –

回答

0

在框架上使用setVisible(false);。然后调用处置。

+0

我试过了,它不像上面说的那样工作 – VaMoose

1

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

如果代码正在执行,那么问题可能是该框架变量具有无效的引用。

您不需要保留对帧的引用。相反,使用类似:

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