繁体   English   中英

Java隐藏JFrame1和JFrame2,何时停用JFrame0?

[英]Java hide JFrame1 and JFrame2, when JFrame0 is deactivated?

当用户从“ mainFrame”中单击时,是否可以隐藏我的应用程序的所有其他JFrame?

我尝试了这个

   public void windowActivated(WindowEvent we) {
        frame1.setVisible(true);
        frame.setVisible(true);
    }

    public void windowDeactivated(WindowEvent we) {
        frame1.setVisible(false);
        frame2.setVisible(false);
    }`

但这不起作用。 我所有的Windows开始闪烁。 我无法将JFrame2设置为无法对焦。

还有其他方法吗?

改用非模式对话框,默认情况下会对问题进行排序。

import javax.swing.*;

class TestDialogMinimize {

    public static void main(String[] args) {
        Runnable r = new Runnable() {
            public void run() {
                JFrame f = new JFrame("Has a Dialog");

                f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                f.setSize(400,400);

                JDialog d = new JDialog(f);
                d.setSize(200,200);
                f.setVisible(true);
                d.setVisible(true);
            }
        };
        SwingUtilities.invokeLater(r);
    }
}

此答案中的非模式对话框建议是一种解决方法。 另请参见此答案

如果出于某些原因您需要继续使用框架,可以使用

frame1.setState(Frame.ICONIFIED)

并用

frame1.setState(Frame.NORMAL)

在代码块中处理这些内容,例如:

frame0.addWindowStateListener(new WindowStateListener() {

        @Override
        public void windowStateChanged(WindowEvent e) {
                // handle change
        }
    });

该问题的答案所述

如果要在关闭frame0时关闭所有框架,则可以使用:

frame0.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

当frame0关闭时,退出程序并关闭所有帧。 如果您只是隐藏在关闭状态,请使用窗口侦听器。 您可以在WindowListener使用frame1.setVisible(false)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM