【问题标题】:Closing single JFrame not working bug关闭单个 JFrame 不起作用的错误
【发布时间】:2013-10-09 04:32:27
【问题描述】:

我决定在我的 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,则关闭按钮不会执行任何操作。

请指教。

【问题讨论】:

  • “当我通过另一个类打开它后尝试关闭它时,”- 这部分的邮政编码
  • 您是否检查过执行是否到达该代码点?
  • 如需尽快获得更好的帮助,请发布SSCCE“..那个特定的JFrame..”The Use of Multiple JFrames, Good/Bad Practice?
  • 你可以试试JFrame.this.dispose();
  • @Rajesh 我正在使用 .visible(true); 从一个类中打开 JFrame;。然后类显示,就是这样。

标签: java swing jframe


【解决方案1】:

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

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

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-03
      相关资源
      最近更新 更多