2012-08-29 174 views
1

可以限制GridBagLayout中的单元尺寸(高度/宽度)吗?GridBagLayout最大单元尺寸

我的意思是..我有2行有相同的权重x = 0.5,但是当我调整大小时,我不希望第一行得到高于300像素。

另外我不希望它不会占用任何可用空间,如果它小于300.(将weightx设置为0)。 在单元格中为我的组件设置最大尺寸是没有意义的,因为当我调整大小时,所有可用空间都被组件填充(组件被调整大小以填充单元格)。

+0

GBL不会,但[MiGLayout](http://www.miglayout.com)会为你做到这一点。 –

回答

2

据我所知,GridBagLayout无法完成。幸运的是有其他选择。 MiGLayout的作用类似于GridBagLayout,但功能更强大,表现力更强。它也是基于单元格的,可以让你设置单元格的最小值,首选值和最大值以及单元格的行数/列数

尽管我建议你制定自己的解决方案,因为这个解决方案过于依赖行限制并且基于几个关于你想要什么的假设,这里有一个例子:

JPanel panel = new JPanel(new MigLayout("flowy, fillx, filly", "[fill, grow]", "[fill, 0:100:300][fill, 0:100:max(100%,300)]")); 
JPanel redPanel = new JPanel(); 
redPanel.setBackground(Color.RED); 
JPanel bluePanel = new JPanel(); 
bluePanel.setBackground(Color.BLUE); 

panel.add(redPanel); 
panel.add(bluePanel); 

JFrame frame = new JFrame(); 
frame.add(panel); 
frame.pack(); 
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
frame.setVisible(true);