【问题标题】:Java - How to "unhide" a JFrameJava - 如何“取消隐藏” JFrame
【发布时间】:2016-12-16 10:45:44
【问题描述】:

我对 Java 很陌生,但熟悉原生 Android 开发,所以请多多包涵 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);。 当您想在windowDeiconified 事件中再次最大化应用程序时frame.setState(Frame.NORMAL);

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

【问题讨论】:

  • 通过创建这个JFrame的实例,然后调用setVisible(true)方法?

标签: java swing


【解决方案1】:
    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

【讨论】:

  • 谢谢,也许也可以将此添加到您的答案中(在我实施此答案时有效)-stackoverflow.com/questions/3965336/…。否则永远不会调用windowDeiconified 事件
  • 所以我发现了问题,一旦你 setVisible(false) 或 hide() 窗口,用户无法通过单击图标再次显示它,因为没有图标。你是怎么解决的?
  • 创建 JFrame 后,改为执行此操作(我今天将编辑我的问题)。 setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);。然后您需要使用frame.setState(Frame.ICONIFIED);frame.setState(Frame.NORMAL); 自行处理JFrame 的关闭。 Iconified 最小化和正常还原。用户不应该关闭我的应用程序,是的,很狡猾,但有充分的理由。客户订单。
猜你喜欢
  • 2012-12-15
  • 2012-12-17
  • 2020-02-21
  • 1970-01-01
  • 1970-01-01
  • 2021-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多