Swing GroupLayout:调整和限制组件大小我在用GroupLayout管理动态生成的数据输入表单中的组件。布局大致如下:*-----------------------------------------------*| label A | field A | | label B | field B || label C | field C |*-----------------------------------------------*我在水平布局中使用两个并行组,对垂直布局使用一个顺序组。在大多数情况下,一切都很正常。我想限制标签的最大宽度(这只是JLabel)到父级宽度的1/3。JFrame..如果JFrame是一个固定的大小我在接ComponentListener.componentResized()事件JFrame但一旦我收到这样的一件事,我就会被困在该怎么做的问题上。我尝试过这种方法,但没有任何结果:public void componentResized(ComponentEvent e) {
int maxW = parentFrame.getWidth() / 3;
for (JLabel l : labels) {
l.setMaximumSize( // have also tried setSize() and setPreferredSize()
new Dimension(
Math.min(l.getSize().width, maxW),
l.getMaximumSize().height));
}
groupLayout.invalidateLayout(getContentSpace());}有人能建议一种限制标签宽度的方法吗?我可能每次都可以从头开始重建布局,但我觉得应该有一个更简单的方法。
2 回答
千巷猫影
TA贡献1829条经验 获得超7个赞
这是一个很明显的例子,所以谢谢你。您提供的代码与我自己已经实现的代码几乎相同,但关键是“您不需要为大多数组件…指定任何内容,因为组件本身具有默认的调整大小行为”。我认为我的标签需要是覆盖getPreferredSize()的自定义实现。
添加回答
举报
0/150
提交
取消