Combobox использует JList для рендеринга элементов во всплывающем окне.По умолчанию каждый элемент отображается в одной строке.Вы можете получить доступ к этому списку напрямую, используя:
Object child = comboBox.getAccessibleContext().getAccessibleChild(0);
BasicComboPopup popup = (BasicComboPopup)child;
JList list = popup.getList();
Теперь, когда у вас есть доступ к списку, вы сможете изменить отображение по умолчанию, используя:
list.setLayoutOrientation(JList.HORIZONTAL_WRAP);
Надеемся, что элементы будуттеперь переносим, когда ширина раскрывающегося списка достигнута.Ширина раскрывающегося списка зависит от ширины поля со списком, поэтому вам может потребоваться поиграть с шириной поля со списком, используя:
list.setPrototypeDisplayValue(....);
Редактировать:
Собственно, забудьтенасчет использования setPrototypeDisplayValue (...), я думаю, вам нужно будет вручную установить размер всплывающего окна.
По умолчанию ширина всплывающего окна всегда равна ширине поля со списком.Вы можете изменить это поведение, используя PopupMenuListener, чтобы переопределить размер всплывающего окна.Чтобы начать, вы можете посмотреть в Combo Box Popup запись.Ваш код будет намного проще, так как все, что вам нужно будет сделать, это жестко задать желаемую ширину вашего всплывающего окна.