JFrame中setMaximumSize失效的原因,以及getMinimumSize()重写的困惑

Haisen大王 2015-06-02 11:24:32
import java.awt.ComponentOrientation;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JFrame;

public class Test03 {
public static void addComponents(Container contentPane) {
contentPane.setLayout(new FlowLayout());
contentPane.add(new JButton("Button 1"));
contentPane.add(new JButton("Button 2"));
contentPane.add(new JButton("Button 3"));
contentPane.add(new JButton("long-name Button 4"));
contentPane.add(new JButton("5"));
}

private static void createAndShowGUI() {
JFrame.setDefaultLookAndFeelDecorated(true);
JFrame frame = new JFrame("FlowLayout Demo") {
@Override
public Dimension getMinimumSize() {
return new Dimension(100, 100);
}
};
frame.setMinimumSize(new Dimension(200,200));
frame.setMaximumSize(new Dimension(300,300));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
addComponents(frame.getContentPane());
frame.setVisible(true);
}
public static void main(String[] args) {
createAndShowGUI();
}
}


第一种问题(仅有这两句设置大小代码时):
设置最小大小frame.setMinimumSize(new Dimension(200,200));可以实现。
frame.setMaximumSize(new Dimension(300,300));什么原因导致无效的?
第二个问题(当重写public Dimension getMinimumSize() 时),如果没有frame.setMinimumSize(new Dimension(200,200)); 或者JFrame.setDefaultLookAndFeelDecorated(true); 其中的一句。 也无法成功设置,这又是为什么?
次问题困惑我多日了,求指导。。以往的认识是get是获取属性,如今怎么会涉及到可以修改属性了!实在搞不懂!具体导致的原理是什么?
...全文
194 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
alan19931103 2015-06-02
  • 打赏
  • 举报
回复
文档里这么说的:顶层窗口的位置和大小受桌面窗口管理系统的控制。这个方法的调用是转发到窗口管理系统的一个请求(不是命令),它会尽量响应这个请求。但是某些情况下他会忽略这个请求,使之与桌面设置相匹配。 具体不是非常清楚。

50,526

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧