提问者:小点点

GridBagLayout最大单元格大小


是否可以限制GridBagLayout中的单元格大小(高度/宽度)?

我的意思是。。我有两行具有相同的权重x=0.5,但当我调整大小时,我不希望第一行超过300像素。

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


共1个答案

匿名用户

据我所知,它不能用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);