我正在为某些数据编写表单。此表单的一行包含一个JComboBox,用于从中选择一个元素。它旁边是一个JButton,用于向此JComboBox添加元素。基本上一切正常,除了布局。
表单具有固定宽度,缩放完全禁用。我怎样才能实现JButton在JComboBox的右边,而JComboBox仍然尽可能大?
我在Windows和Mac OS上使用该程序并且按钮大小存在一些问题,因此为两个列/组件设置固定宽度并不是一种选择。
所以看起来应该是这样的:
|<------- fixed width ------->|
|-----------------------------|
| Form: |
|-----------------------------|
| ________________ ______ |
| |ComboBox v| |Button| |
| ```````````````` `````` |
| |
| ... |
| |
|-----------------------------|
或者当按钮较小时:
|-----------------------------|
| Form: |
|-----------------------------|
| _____________________ _ |
| |ComboBox v| |+| |
| ````````````````````` ` |
| |
| ... |
| |
|-----------------------------|
请注意,如果ComboBox中的内容太长,则应缩短它,类似于:
______________________
|ComboBoxContentFo... v|
``````````````````````
如果有人可以帮我解决这个问题会很高兴! :)
答案 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");