【问题标题】:How to minimize a JFrame window from Java?如何从 Java 最小化 JFrame 窗口?
【发布时间】:2011-04-27 07:00:21
【问题描述】:

在我的 Java 应用程序中,我有一个 JFrame 窗口,如何从我的 Java 程序中最小化它?

【问题讨论】:

    标签: java swing jframe minimize


    【解决方案1】:

    frame.setState(Frame.ICONIFIED)最小化

    使用frame.setState(Frame.NORMAL)恢复

    【讨论】:

    • @rogerdpack 不,它可以显示(可视化)隐藏窗口,但不能从最小化中恢复
    【解决方案2】:

    您可以通过两种方式做到这一点:

    JFrame frame = new JFrame("Test");
    
    frame.setExtendedState(JFrame.ICONIFIED); // One way
    frame.setState(JFrame.ICONIFIED); // Another way
    

    【讨论】:

      【解决方案3】:

      如果您尝试为组件的事件编写代码,请尝试以下代码。并确保包含此代码的类由 Frame 类扩展

      private void closeMouseClicked(java.awt.event.MouseEvent evt){                        
          this.setState(1);
      }
      

      或者创建一个Frame类的实例并调用setState(1);

      【讨论】:

      • this.setState(1); 魔术常量规则,既然可以直接写1,为什么还要浪费时间写JFrame.ICONIFIED? :)
      • @kajacx 因为其他从事该项目的开发人员不知道1 是什么意思;它很神秘并且会损害可读性,这就是为什么
      • 此外,如果他们决定更改常量的值,您的代码将无缘无故地中断。享受调试的乐趣
      【解决方案4】:

      您可以使用以下代码:

      this.setState(YourJFrame.ICONIFIED);
      

      你可以使用这段代码来最大化它:

      this.setExtendedState(MAXIMIZED_BOTH);
      

      【讨论】:

        【解决方案5】:

        最小化:

        frame.setState(Frame.ICONIFIED);
        

        另一种最小化方法:

        frame.setExtendedState(JFrame.ICONIFIED);
        

        正常尺寸:

        frame.setState(Frame.NORMAL);
        

        正常大小的另一种方法:

        frame.setExtendedState(JFrame.NORMAL);
        

        最大化:

        frame.setState(Frame.MAXIMIZED_BOTH);
        

        另一种最大化方式:

        frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
        

        全屏最大化:

        GraphicsDevice device = GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices()[0];
        try { device.setFullScreenWindow((Window) frame); } finally { device.setFullScreenWindow(null); }
        

        有关详细信息,请参阅JFrame documentation

        【讨论】:

          【解决方案6】:

          另一种方法

          frame.dispatchEvent(new WindowEvent(frame, WindowEvent.WINDOW_ICONIFIED));
          

          【讨论】:

          • 没用。 ICONFIED 做到了。也许我提前触发了这个事件,但另一个确实有效。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-10-03
          • 1970-01-01
          • 2012-02-24
          • 2020-10-01
          • 2021-03-14
          相关资源
          最近更新 更多