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

时间:2015-04-04 16:55:57

标签: java layout combobox

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

表单具有固定宽度,缩放完全禁用。我怎样才能实现JButton在JComboBox的右边,而JComboBox仍然尽可能大?

我在Windows和Mac OS上使用该程序并且按钮大小存在一些问题,因此为两个列/组件设置固定宽度并不是一种选择。

所以看起来应该是这样的:

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

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

或者当按钮较小时:

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

请注意,如果ComboBox中的内容太长,则应缩短它,类似于:

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

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

2 个答案:

答案 0 :(得分:1)

利用布局管理器为您执行此操作。

一种方法是使用BorderLayout:

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

现在按钮将以其首选宽度显示,组合框将显示剩余的内容。

答案 1 :(得分:0)

你可以尝试这两件事。

comboBox.setPreferredSize(...)

comboBox.setPrototypeDisplayValue("XXXXXXXXXXXXXXXXXXXX");