JComboBox 和 JButton(2 列)并使 JComboBox 尽可能大?

JComboBox and JButton (2 columns) and keep JComboBox as big as possible?

我正在为一些数据编写表单。此表单的一行包含一个 JComboBox 以从中选择一个元素。它旁边是一个 JButton,用于将元素添加到此 JComboBox。基本上一切正常,除了布局。

表单有固定宽度,完全禁用缩放。如何实现 JButton 在 JComboBox 的右侧,而 JComboBox 仍然尽可能大?

我在 Windows 和 Mac OS 上使用该程序,按钮大小有一些问题,因此为这两个设置固定宽度 columns/components不是真正的选择。

所以它应该是这样的:

|<------- fixed width ------->|

|-----------------------------|
| Form:                       |
|-----------------------------|
|  ________________   ______  |
| |ComboBox       v| |Button| |
|  ````````````````   ``````  |
|                             |
| ...                         |
|                             |
|-----------------------------|

或者当按钮较小时:

|-----------------------------|
| Form:                       |
|-----------------------------|
|  _____________________   _  |
| |ComboBox            v| |+| |
|  `````````````````````   `  |
|                             |
| ...                         |
|                             |
|-----------------------------|

注意如果ComboBox里面的内容太长,应该缩短类似这样:

 ______________________
|ComboBoxContentFo... v|
 ``````````````````````

如果有人能帮我解决这个问题,我会很高兴! :)

你可以试试这两个东西。

comboBox.setPreferredSize(...)

comboBox.setPrototypeDisplayValue("XXXXXXXXXXXXXXXXXXXX");

利用布局管理器为您完成这项工作。

一种方法是使用 BorderLayout:

JPanel row = new JPanel( new BorderLayout() );
row.add(comboBox, BorderLayout.CENTER);
row.add(button, BorderLayout.LINE_END);
mainPanel.add( row );

现在按钮将以其首选宽度显示,组合框将得到剩余的部分。