2010-06-09 10 views
13

Diciamo che voglio usare un'immagine personalizzata per la freccia in JComboBox, come posso fare questo?Come posso cambiare lo stile della freccia in un JComboBox

Capisco che è possibile utilizzare i file xml di synth, o forse anche UIManager.put (...), ma non so come. Tutto quello che voglio fare in questo momento è cambiare l'immagine della freccia in qualcos'altro, programmaticamente o anche solo sovrascrivere l'immagine che usa. Come posso fare esattamente questo?

risposta

19

È possibile eseguire l'override di createArrowButton() in BasicComboBoxUI. BasicArrowButton è un comodo punto di partenza.

class ColorArrowUI extends BasicComboBoxUI { 

    public static ComboBoxUI createUI(JComponent c) { 
     return new ColorArrowUI(); 
    } 

    @Override protected JButton createArrowButton() { 
     return new BasicArrowButton(
      BasicArrowButton.SOUTH, 
      Color.cyan, Color.magenta, 
      Color.yellow, Color.blue); 
    } 
} 

Quindi installarlo.

JComboBox combo = new JComboBox(); 
combo.setUI(ColorArrowUI.createUI(combo)); 
+0

Non responsabile per combinazioni di colori sgargianti. :-) – trashgod

+0

Perfetto !! Grazie mille :) –

+1

per me ... è forse il più sicuro per estrarre JButton come JComponent da JComboBox e button.setIcon(), f.e. con ButtonModel per effetto mousehover anche per JComboBox .. +1 per BasicUI – mKorbel

Problemi correlati