与setMinimumSize()一同讨论。顾名思义,这两个函数用于设置窗体的最大、最小值。然而测试发现,setMaximumSize()直接作用于JFrame时,无法实现其预定功能,setMinimumSize()功能正常。

测试代码如下:

import java.awt.Dimension;
import javax.swing.JFrame; /*
* 2015-06-17
*/
public class SetMaximumSizeDemo extends JFrame { public static void main(String[] args) {
// TODO Auto-generated method stub
SetMaximumSizeDemo setMaximumSizeDemo = new SetMaximumSizeDemo();
setMaximumSizeDemo.setMaximumSize(new Dimension(300, 300));
setMaximumSizeDemo.setMinimumSize(new Dimension(100, 100));
setMaximumSizeDemo.setBounds(100, 100, 200, 100);
setMaximumSizeDemo.setVisible(true);
}
}

运行效果图如下:

Swing-setMaximumSize()用法-入门-LMLPHP

图1 默认尺寸200x100

Swing-setMaximumSize()用法-入门-LMLPHP

图2 最小尺寸100x100

Swing-setMaximumSize()用法-入门-LMLPHP

图3 放大尺寸,超过300x300

google发现,setMaximumSize()确实是bug,参见:JDK-6464548 : Reopen 6383434: Frame.setMaximumSize() doesn't work

当然,也有人认为这两个函数都不可靠Java swing setMaximumSize not working

因此,笔者认为,如果确实想要对窗体或控件的最大、最小进行控制,需要在窗体的事件响应中来实现。

04-19 13:38