如何关闭JFrame而不关闭其他人

时间:2014-09-06 12:45:21

标签: java swing jframe

我想同时显示三个JFrame个对象。 当我从上角关闭其中一个时,其他框架应该仍然可见,但它们不是! 我搜索了它,我得知问题与这些有关:

  • setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
  • setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

我该怎么做?

1 个答案:

答案 0 :(得分:2)

您是否正在延长JFrame?不。

此外,当您继承JFrame时,将为每个人定义CLOSE操作 您创建的窗口,因此会导致窗口终止。

我对以下代码没有任何问题:

 JFrame j1=new JFrame();
 JFrame j2=new JFrame();
 JFrame j3=new JFrame();

 j1.setVisible(true);
 j2.setVisible(true);
 j3.setVisible(true);

 j1.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
 j2.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
 j3.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

修改

“我应该在哪里输入”

哪里适合你。我能想到什么(从你的结束问题)你的结构如下:

public class FooClass extends JFrame {

   FooClass()
    {

      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

    public static void main(String args[]) {

        new FooClass().setVisible(true);
        new FooClass().setVisible(true);
        new FooClass().setVisible(true);

    }
}

请勿强制您的类扩展JFrame,而是创建如上所示的对象 并使用'。'运算符以执行函数JSomeObject.SetThis...();

编辑2:

或者看看setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE)是否可以帮助您。

OR

您可以添加一个窗口侦听器,并在setVisible(false)上调用JFrame

 addWindowListener(new WindowAdapter() {
    @Override
  public void windowClosing(WindowEvent evt) {
    setVisible(false);
  }
});