Java-如何;“取消隐藏”;JFrame

Java-如何;“取消隐藏”;JFrame,java,swing,Java,Swing,我对Java相当陌生,但熟悉本地Android开发,所以请耐心听我说xD。我创建了一个创建JFrame的应用程序。然后我将closeOperation设置为:setDefaultCloseOperation(JFrame.HIDE\u ON\u CLOSE) 它按预期执行,帧被隐藏,这是我想要的(当我关闭时)。我需要应用程序继续运行(只有一个实例),因为我正在后台运行一个正在执行操作的线程 JFrame中按钮上的actionListener当前执行以下操作:setVisible(false) 我

我对Java相当陌生,但熟悉本地Android开发,所以请耐心听我说xD。我创建了一个创建JFrame的应用程序。然后我将closeOperation设置为:
setDefaultCloseOperation(JFrame.HIDE\u ON\u CLOSE)

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

JFrame中按钮上的actionListener当前执行以下操作:
setVisible(false)

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

提前感谢,如有任何建议,将不胜感激

更新

要使此解决方案正常工作,您需要执行以下操作。还可以看看XtremeBaumer的答案,看看是否有道理

在JFrame创建时
setDefaultCloseOperation(JFrame.DO\u NOTHING\u\u On\u CLOSE)。
当你想最小化应用程序时(点击可能)
frame.setState(frame.ICONIFIED)。
当您想再次最大化应用程序时
frame.setState(frame.NORMAL)
窗口中取消确认
事件

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


我希望这能解决你的问题。通过创建此JFrame的实例将其添加到JFrame中,然后调用
setVisible(true)
方法?谢谢,也许还可以将其添加到您的答案中(在我实现此答案时工作)-。否则,将永远不会调用
windowDeiconified
事件。因此,我发现了一个问题,即一旦设置了可见(false)或隐藏()窗口,用户就无法通过单击图标再次显示它,因为没有图标。你是如何解决这个问题的?当JFrame被创建时,改为这样做(今天我将编辑我的问题)<代码>设置默认关闭操作(JFrame.DO\u NOTHING\u ON\u CLOSE)。然后,您需要使用
frame.setState(frame.ICONIFIED)自行处理JFrame的关闭
帧设置状态(帧正常)。图标化最小化和正常还原。用户应该不能关闭我的应用程序,是的,狡猾,但有很好的理由。客户点菜。
    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) {
        }

    });