我的JComboBox
中有一个JFrame
对象,其行为完全符合预期。但是,我想让它可编辑,以便用户可以根据需要输入替代值。不幸的是,使用setEditable(true)
启用编辑会导致其宽度显着增加。如何在保持宽度仅与最大可选项目所需宽度的同时允许编辑JComboBox
?
JComboBox
位于带有JPanel
的{{1}}中,但我不认为这是相关的,因为更改FlowLayout
的宽度不会影响宽度JPanel
。
答案 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);