当前位置: 代码迷 >> J2SE >> JFrame设置最小大小疑点
  详细解决方案

JFrame设置最小大小疑点

热度:247   发布时间:2016-04-23 19:47:35.0
JFrame设置最小大小问题、
[
		JFrame.setDefaultLookAndFeelDecorated(true);
JFrame frame=new JFrame("FlowLayout Demo"){
@Override
public Dimension getMinimumSize() {
Dimension prefSize=getPreferredSize();
return new Dimension(200,prefSize.height);
    }
};

课本上的代码:
正常设置最小大小,当然直接frame.setMaximumSize(new Dimension());

可以这里添加了这句 JFrame.setDefaultLookAndFeelDecorated(true);
怎么使得 @Override 的getMinimumSize() 方法也能设置最小大小啊??

我现在不理解的是,这个get返回的对象完全可以由我随便返回,并非是对象的属性啊。。怎么会能成功的设置了窗口的最小大小啊??纠结好几天了。
 
------解决思路----------------------
当jframe需要取得MinimumSize时,调用自身的getMinimumSize方法,取得Dimension得到值 。
默认使用set方法后,将参数保存起来到变量,调用get方法时,将值返回。
重写get方法,get方法没有取回变量值,set的值不再起作用。
------解决思路----------------------
不写也有效果,不要拿JFrame做。比如拿JSplitPane,左边的控件Override最小值
------解决思路----------------------
public class F extends JFrame {
public static void main(String[] args) {
F f = new F();
f.setLayout(new BorderLayout());
JSplitPane pane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, new Tree(), new JTable());
f.add(pane, BorderLayout.CENTER);
f.pack();
f.setVisible(true);
}
}

class Tree extends JTree {

@Override
public Dimension getMinimumSize() {
return new Dimension(500,500);
}

@Override
public Dimension getMaximumSize() {
// TODO Auto-generated method stub
return new Dimension(1000,1000);
}

@Override
public Dimension getPreferredSize() {
// TODO Auto-generated method stub
return new Dimension(700,700);
}
}