non è così facile, ma c'è una soluzione, si deve creare una sottoclasse JComboBox ...
Devi sottoclasse JComboBox
per ottenere l'accesso al ComboBoxUI
. Per fare in modo da impostare il proprio personalizzato ComboBoxUI
durante oggetto instanciation (facciamo cambiamenti nelle tutti i costruttori, vedere init()
in CustomComboBox
.
Il ComboBoxUI
è necessario per ottenere l'accesso al ComboboxPopup
. Sostituiamo semplicemente il default ComboboxPopup
con il nostro costume ComboboxPopup
. dovete sapere che il ComboboxPopup
è responsabile per la creazione del down-menu, che si apre quando si fa clic sul pulsante.
allora abbiamo finalmente possibile regolare la JScrollPane
dal Popup, abbiamo afferrare la verticale JScrollBar
e alterarne l'aspetto (impostando una larghezza personalizzata)
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);
}
}
questo è l'usanza ComboboxUI
che le sovvenzioni si Accesso agli ComboboxPopup
(abbastanza semplice):
public class CustomComboBoxUI extends BasicComboBoxUI{
protected ComboPopup createPopup() {
return new CustomComboBoxPopup(comboBox);
}
}
thankgod l'usanza ComboboxPopup
esigenze solo il costruttore di base sovrascritto e solo un metodo modificato (imposta la dimensione lo scrollpan a 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));
}
}
per impostare la dimensione della casella combinata è sufficiente per regolare le dimensioni
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

vedi anche setting size of scroller e setting size of combobox per ulteriori informazioni ...
Inserisci il tuo codice ... – Benjamin
Side-note: Questo non è JavaScript, Java è sicuro dal tipo. Puoi semplicemente chiamare 'toString()' sul tuo 'getItem()' piuttosto che creare una stringa al volo. Ogni volta che si concatenano le stringhe, si sta compilando il pool di stringhe. –
Hm, forse JavaFX sarebbe un modo migliore per lavorare con un tablet Windows? Perché in JavaFX puoi usare i CSS per modellare gli elementi: http://stackoverflow.com/questions/21379865/how-to-hide-the-down-arrow-button-on-a-combobox-in-javafx ... sembra che se la casella combinata sia troppo piccola, potrebbero sorgere altri problemi che JavaFX potrebbe risolvere più facilmente? – hamena314