如果父进行大小调整或JComponent的内容发生变化,如何使JComponent始终填充父事件?

时间:2012-06-06 09:09:30

标签: java swing jcombobox

我有一个JCombobox,我在运行时添加了一些项目。其中一些很长,我的Jcombobox也长得很长。它位于带有BoxLayout(PAGE_AXIS)的JPanel容器中。我不知道如何阻止成长...
我想知道应该有一个像overflow这样的属性,如果它是“123456789”,在combobox项目中将显示为“123 ...”。

编辑:

我读了你的答案,非常感谢你。但问题是我的JPanel可以调整大小,我需要让它的孩子总是填充父级。因此我无法设置首选大小,因为我的JPanel大小可以在运行时更改 而且由于同样的原因,我也无法设置最大大小或使用setPrototypeDisplayValue()。

我尝试使用其他布局(GroupLayout,BorderLayout),但结果是一样的。

如果你愿意,我可以发布代码,但我认为没有必要。如果你还需要,请告诉我。
刚尝试使用JTextArea单行而不是JCombobox。结果是一样的。当我输入时,它正在增长。

3 个答案:

答案 0 :(得分:5)

  • 我通过overrode解决了类似的问题{{3p>

  • 并且有两种方式(如提到的@Stas)调整JComboBox或其派生的Popup或两者的大小

答案 1 :(得分:3)

你可以试试这个:

myCombo.setPreferredSize(new Dimension(myCombo.getHeight(), myCombo.getWidth()))

答案 2 :(得分:3)

该问题有多种解决方案。您可以更改布局以限制增长。

或以某种方式修复组合框的最大尺寸

或者添加自定义渲染器(扩展默认渲染器)并在那里设置首选大小。