Java布局管理器

3
我使用了一个2行6列的网格布局,第一列是标签,第二列是组合框。我的问题是,根据标签的大小,组合框的大小也会增加。我想要一个稳定的组合框大小,应该使用哪种布局?我希望设计如下:
*label1: combo1 label2: combo2 label3: combo3 label4: text1 label5: text2 label6: text3*

在combo3之后,所有其他内容都被放置在新的一行。 - Siddhu
1
简单(虽然可能不是你想听到的)答案是:学习哪个LayoutManager做什么,然后选择符合你要求的。Swing标签中引用的教程有一个关于布局的章节。 - kleopatra
5个回答

4

遍历所有标签,并将最大的大小应用到它们所有。

Label 1             |________________|
Label Label 2       |________________|
Label Label Label 3 |________________|
Label 1             |________________|

1
“set .. size”是什么意思?通常情况下,代码并不处理这个任务,而是由LayoutManager来完成...你很清楚的,对吧 ;-) - kleopatra

4
如果你需要手工编写布局且使用第三方库没有问题,可以尝试使用Miglayout
你也可以使用图形化编辑器来布置你的面板。目前有两个不错的免费工具可供选择:一个是随NetBeans一起提供的工具,另一个是Eclipse WindowBuilder

4
  1. 对于GridLayout,您可以使用JComboBox#setPrototypeDisplayValue,然后您可以非常舒适地在屏幕上设置JComboBox的初始大小。

  2. 您可以使用SpringLayoutGridBagLayout

  3. 使用当今的自定义LayoutManager,例如MigLayout

  4. 注意选择合适的LayoutManager,一切取决于内容是否应该与容器一起调整大小


3
您可以使用GridBagLayout布局,将GridBagConstraints.fill设置为HORIZONTAL来适应下拉框。

2
GridLayout 中,所有的瓷砖都具有相同的大小。
你应该考虑使用 GridBagLayout。你还需要为每个GUI元素使用 GridBagConstraints 来指定其位置。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接