Cannot set maximum size for JFrame (under Windows)

好久不见. 提交于 2021-01-27 20:52:52

问题


I am trying to limit the maximum size of a JFrame. However, this works only under Linux. Under Windows, the JFrame is freely resized. The code is pretty simple:

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, 0, 400, 400));
        setMaximumSize(new java.awt.Dimension(400, 400));
        setVisible(true);
    }                     
    public static void main(String args[]) {    
        new TestMaxSize();
    }                  
}

回答1:


From the javadoc of method setMaximizedBounds

Note, the given maximized bounds are used as a hint for the native system, because the underlying platform may not support setting the location and/or size of the maximized windows. If that is the case, the provided values do not affect the appearance of the frame in the maximized state.

Although JFrame extends java.awt.Component it is not the same as JPanel, for example. You will notice that its superclass, java.awt.Window, overrides method setMinimumSize. Class Window interacts with the window manager of the host operating system. Hence limiting the maximum size of a Window needs to be supported by that window manager. On the Windows platform, it appears that this is not a simple thing to do. I could only find an old, third party utility that allows you to configure a maximum size for all windows. Refer to this Web page: Change The Maximum Window Size from nearly seven years ago.



来源:https://stackoverflow.com/questions/65524291/cannot-set-maximum-size-for-jframe-under-windows

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!