это не так просто, но есть решение, вы должны создать подкласс JComboBox ...
Вы должны создать подкласс JComboBox
, чтобы получить доступ к ComboBoxUI
. Для этого вы установите свой собственный ComboBoxUI
во время объекта при создании экземпляра (мы делаем изменения в всех конструкторах см init()
в CustomComboBox
.
ComboBoxUI
требуется, чтобы получить доступ к ComboboxPopup
. Заменим просто по умолчанию ComboboxPopup
с нашим обычаем ComboboxPopup
. вы должны знать, что ComboboxPopup
отвечает за создание-понижающей раскрывающемся меню, которое появляется при нажатии на кнопку.
тогда мы, наконец, можно настроить JScrollPane
из всплывающего окна, мы захватить вертикальный JScrollBar
и изменить его внешний вид (настройка пользовательской ширины).
public class CustomComboBox<T> extends JComboBox<T> {
public CustomComboBox() {
super();
init();
}
public CustomComboBox(ComboBoxModel<T> aModel) {
super(aModel);
init();
}
public CustomComboBox(T[] items) {
super(items);
init();
}
public CustomComboBox(Vector<T> items) {
super(items);
init();
}
public void init(){
CustomComboBoxUI ccbui = new CustomComboBoxUI();
setUI(ccbui);
}
}
это обычай ComboboxUI
, который предоставляет вам Acces к ComboboxPopup
(довольно простой):
public class CustomComboBoxUI extends BasicComboBoxUI{
protected ComboPopup createPopup() {
return new CustomComboBoxPopup(comboBox);
}
}
thankgod обычай ComboboxPopup
потребности только основной конструктор перекрываться и только один способ изменить (устанавливает размер scrollpan к 40px):
public class CustomComboBoxPopup extends BasicComboPopup{
public CustomComboBoxPopup(JComboBox combo) {
super(combo);
}
@Override
protected void configureScroller() {
super.configureScroller();
scroller.getVerticalScrollBar().setPreferredSize(new Dimension(40, 0));
}
}
установить размер выпадающего списка просто нужно настроить его размер
String[] data = new String[]{"a","b","c","d","e","f","g","h","i"};
CustomComboBox<String> comboBox = new CustomComboBox(data);
comboBox.setPreferredSize(new Dimension(50,50)); //set the size you wish

смотри также setting size of scroller и setting size of combobox для дальнейшей помощи ...
Опубликовать свой код ... – Benjamin
Боковое примечание: это не JavaScript, а Java безопасен по типу. Вы можете просто вызвать 'toString()' на свой 'getItem()' вместо создания строки на лету. Каждый раз, когда вы объединяете строки, вы заполняете пул строк. –
Хм, может быть, JavaFX будет лучшим способом работы с планшетом Windows? Потому что в JavaFX вы можете использовать CSS для стилизации элементов: http://stackoverflow.com/questions/21379865/how-to-hide-the-down-arrow-button-on-a-combobox-in-javafx ... похоже, если combobox слишком мал, могут возникнуть другие проблемы, которые JavaFX может решить легче? – hamena314