无法为 JFrame 设置最大大小在 Windows 下

问题描述

我正在尝试限制 JFrame 的最大大小。但是,这只适用于 Linux。在 Windows 下,JFrame 可以自由调整大小。代码很简单:

public class TestMaxSize extends javax.swing.JFrame {
    public TestMaxSize() {
        setSize(new java.awt.Dimension(400,400));
        setDefaultCloSEOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setMaximizedBounds(new java.awt.Rectangle(0,400,400));
        setMaximumSize(new java.awt.Dimension(400,400));
        setVisible(true);
    }                     
    public static void main(String args[]) {    
        new TestMaxSize();
    }                  
}

解决方法

来自方法setMaximizedBounds的{​​{3}}

注意,给定的最大化边界用作对本机系统的提示,因为底层平台可能不支持设置最大化窗口的位置和/或大小。如果是这种情况,提供的值不会影响框架在最大化状态下的外观。

例如,虽然 JFrame 扩展了 java.awt.Component,但它与 JPanel 不同。您会注意到它的超类 java.awt.Window 覆盖了方法 setMinimumSizeWindow 类与主机操作系统的窗口管理器交互。因此,该窗口管理器需要支持限制 Window 的最大大小。在Windows平台上,这似乎不是一件简单的事情。我只能找到一个旧的第三方实用程序,它允许您为所有窗口配置最大大小。请参阅此网页:javadoc 来自近七年前。