使JComboBox可编辑而不影响其宽度

时间:2011-07-22 18:23:10

标签: java swing width jcombobox

我的JComboBox中有一个JFrame对象,其行为完全符合预期。但是,我想让它可编辑,以便用户可以根据需要输入替代值。不幸的是,使用setEditable(true)启用编辑会导致其宽度显着增加。如何在保持宽度仅与最大可选项目所需宽度的同时允许编辑JComboBox

JComboBox位于带有JPanel的{​​{1}}中,但我不认为这是相关的,因为更改FlowLayout的宽度不会影响宽度JPanel

uneditable jComboBox editable jComboBox

3 个答案:

答案 0 :(得分:5)

答案 1 :(得分:3)

JTextField具有默认的首选大小。看来如果此大小大于首选渲染大小,则使用文本字段大小。您可以通过指定要在文本字段中显示的列数来更改首选大小。因此,您需要使用以下代码来操作编辑器:

JComboBox comboBox = new JComboBox( ... );
comboBox.setEditable( true );
ComboBoxEditor editor = comboBox.getEditor();
JTextField textField = (JTextField)editor.getEditorComponent();
textField.setColumns(3);

答案 2 :(得分:2)

嗯...我无法在Mac上提示这种行为,但你可能会尝试创建/添加组合框,然后调用

Dimension size = box.getSize();
box.setEditable(true);
box.setSize(size); // or box.setMaximumSize(size);