可以在GridBagLayout中限制单元格大小(高度/宽度)吗?
我的意思是..我有2行具有相同的权重x = 0.5,但是当我调整大小时我不希望第一行高于300像素。
如果它小于300,我也不希望它不占用任何可用空间。(将weightx设置为0)。 在单元格中设置组件的最大大小是没有意义的,因为当我调整大小时,所有可用空间都填充了组件(组件被调整大小以填充单元格)。
答案 0 :(得分: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);