Сделайте JComboBox редактируемым, не затрагивая его ширину - PullRequest
3 голосов
/ 22 июля 2011

У меня есть JComboBox объект в моем JFrame, который ведет себя точно так, как ожидалось.Однако я хотел бы сделать его редактируемым, чтобы при необходимости пользователи могли вводить альтернативные значения.К сожалению, использование setEditable(true) для включения редактирования приводит к значительному увеличению его ширины.Как я могу разрешить редактирование JComboBox, сохраняя его ширину настолько широкой, насколько требуется для самого большого выбираемого элемента?

* JComboBox находится в JPanel с FlowLayout, однако я неНе думаю, что это важно, потому что изменение ширины JPanel не влияет на ширину JComboBox.

uneditable jComboBox editable jComboBox

Ответы [ 3 ]

5 голосов
/ 23 июля 2011
3 голосов
/ 25 июля 2011

JTextField имеет предпочтительный размер по умолчанию. Похоже, что если этот размер больше, чем предпочтительный размер рендеринга, то используется размер текстового поля. Вы можете изменить предпочтительный размер, указав количество столбцов для отображения в текстовом поле. Поэтому вам нужно манипулировать редактором с помощью кода, например:

JComboBox comboBox = new JComboBox( ... );
comboBox.setEditable( true );
ComboBoxEditor editor = comboBox.getEditor();
JTextField textField = (JTextField)editor.getEditorComponent();
textField.setColumns(3);
2 голосов
/ 22 июля 2011

Хммм ... Я не могу подсказать это поведение на моем Mac, но вы можете попробовать создать / добавить комбинированный список, а затем вызвать

Dimension size = box.getSize();
box.setEditable(true);
box.setSize(size); // or box.setMaximumSize(size);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...