to nie jest tak łatwe, ale nie jest to rozwiązanie, trzeba podklasy JComboBox ...
Trzeba podklasy JComboBox
, aby uzyskać dostęp do ComboBoxUI
. Aby to zrobić można ustawić swój własny ComboBoxUI
podczas obiektu instanciation (wykonujemy zmiany w wszystkich konstruktorów, zobacz init()
w CustomComboBox
.
ComboBoxUI
jest wymagane, aby uzyskać dostęp do ComboboxPopup
. Zamieniamy prostu domyślne ComboboxPopup
z naszym zwyczajem ComboboxPopup
. trzeba wiedzieć, że ComboboxPopup
jest odpowiedzialny za utworzenie listy rozwijalnej menu, które pojawia się po kliknięciu na przycisk.
potem wreszcie można regulować JScrollPane
z Podręczne, możemy chwycić pionowe JScrollBar
i zmień jego wygląd (ustawienie niestandardowej szerokości)
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);
}
}
to zwyczaj ComboboxUI
że udziela Ci Dostęp do ComboboxPopup
(dość proste):
public class CustomComboBoxUI extends BasicComboBoxUI{
protected ComboPopup createPopup() {
return new CustomComboBoxPopup(comboBox);
}
}
thankgod zwyczaj ComboboxPopup
potrzeby tylko podstawowe konstruktor nadpisane i tylko jeden sposób zmienione (ustawia rozmiar scrollpan do 40 pikseli):
public class CustomComboBoxPopup extends BasicComboPopup{
public CustomComboBoxPopup(JComboBox combo) {
super(combo);
}
@Override
protected void configureScroller() {
super.configureScroller();
scroller.getVerticalScrollBar().setPreferredSize(new Dimension(40, 0));
}
}
aby ustawić rozmiar combobox wystarczy dostosować jej wielkość
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

zobaczyć również setting size of scroller i setting size of combobox dla dalszej pomocy ...
Wpisz swój kod ... – Benjamin
Notatka poboczna: To nie jest JavaScript, Java jest typu bezpiecznego. Możesz po prostu wywołać 'toString()' na 'getItem()' zamiast tworzyć ciąg w locie. Za każdym razem, gdy łączysz ciągi, wypełniasz pulę ciągów. –
Hm, może JavaFX byłby lepszym sposobem pracy z tabletem z systemem Windows? Ponieważ w JavaFX można używać CSS do stylizowania elementów: http://stackoverflow.com/questions/21379865/how-to-hide-the-down-arrow-button-on-a-combobox-in-javafx ... wydaje się, że jeśli combobox jest zbyt mały, mogą pojawić się inne problemy, które JavaFX może naprawić łatwiej? – hamena314