Java - 如何“取消隐藏”JFrame

时间:2016-12-16 10:45:44

标签: java swing

我是Java的新手,但熟悉原生的Android dev,所以请耐心等待xD。我创建了一个创建JFrame的应用程序。然后我将closeOperation设置为:setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);

它按预期执行,框架被隐藏,这就是我想要的(当我关闭时)。我需要应用程序继续运行(只有一次实例),因为我在后台运行一个执行操作的线程。

我的JFrame中我的按钮上的actionListener目前执行此操作:setVisible(false);

我的问题是,如何在隐藏JFrame之后再次最大化它?当用户点击任务栏中的最小化应用程序时,是否可以显示框架?我需要实现某种类型的监听器吗?

在此先感谢,任何建议将不胜感激

更新

要使此解决方案正常工作,您需要执行以下操作。另外看看XtremeBaumer的答案是有意义的。

在JFrame创建setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);上。 当您想最小化应用程序时(可能点击)frame.setState(Frame.ICONIFIED);。 如果您想在frame.setState(Frame.NORMAL);活动中再次最大化应用windowDeiconified

最后一件事是,如果您想在用户点击退出按钮(红色x)时最小化您的应用,请将其添加到windowClosing事件frame.setState(Frame.ICONIFIED);

1 个答案:

答案 0 :(得分:2)

    this.addWindowListener(new WindowListener(){

        @Override
        public void windowActivated(WindowEvent e) {
        }

        @Override
        public void windowClosed(WindowEvent e) {
        }

        @Override
        public void windowClosing(WindowEvent e) {
            setState(Frame.ICONIFIED)
        }

        @Override
        public void windowDeactivated(WindowEvent e) {
        }

        @Override
        public void windowDeiconified(WindowEvent e) {
            this.setVisible(true);
            //this should be what you want
        }

        @Override
        public void windowIconified(WindowEvent e) {
        }

        @Override
        public void windowOpened(WindowEvent e) {
        }

    });

我希望这能解决你的问题。将其添加到您的JFrame