es ist nicht so einfach, aber es gibt eine Lösung, Sie haben JComboBox Unterklasse ...
Sie haben JComboBox
Unterklasse Zugriff auf die ComboBoxUI
zu bekommen. Um dies zu tun setzen Sie Ihre eigenen ComboBoxUI
während Objekt Instanciation (wir Änderungen an den alle Konstruktoren finden init()
in CustomComboBox
.
Die ComboBoxUI
ist erforderlich, um den Zugang zum ComboboxPopup
zu bekommen. Wir ersetzen Sie einfach die Standard-ComboboxPopup
mit unseren kundenspezifischen ComboboxPopup
. Sie müssen wissen, dass die ComboboxPopup
für die Schaffung der Drop-Down-Menü verantwortlich ist, das erscheint, wenn Sie auf den Button klicken.
dann endlich wir die JScrollPane
aus dem Popup einstellen können, greifen wir die vertikal JScrollBar
und ändern Sie das Aussehen (Einstellung einer benutzerdefinierten Breite).
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);
}
}
dies ist der Brauch ComboboxUI
, die Sie zum ComboboxPopup
gewährt acces (ganz einfach):
public class CustomComboBoxUI extends BasicComboBoxUI{
protected ComboPopup createPopup() {
return new CustomComboBoxPopup(comboBox);
}
}
gottlob die individuelle ComboboxPopup
Bedürfnisse nur die grundlegenden Konstruktor außer Kraft gesetzt und nur eine Methode geändert (setzt die Größe des die scrollpan zu 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));
}
}
die Größe der Combobox setzen Sie müssen einfach nur seine Größe
anpassen
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
siehe auch setting size of scroller und setting size of combobox für weitere Hilfe ...
Geben Sie Ihren Code ein ... – Benjamin
Randbemerkung: Dies ist kein JavaScript, Java ist typsicher. Sie können einfach 'toString()' auf Ihrem 'getItem()' aufrufen, anstatt einen String im laufenden Betrieb zu erstellen. Jedes Mal, wenn Sie Zeichenfolgen verketten, füllen Sie den Zeichenfolgenpool. –
Hm, vielleicht wäre JavaFX eine bessere Möglichkeit, mit einem Windows-Tablet zu arbeiten? Denn in JavaFX können Sie CSS verwenden, um die Elemente zu stylen: http://stackoverflow.com/questions/21379865/how-to-hide-the-down-arrow-button-on-a-combobox-in-javafx ... scheint, als ob die Combobox zu klein ist, könnten andere Probleme auftreten, die JavaFX einfacher beheben könnte? – hamena314