2010-06-09 11 views
13

Powiedzmy, że chcę użyć niestandardowego obrazu dla strzałki w JComboBox, jak mogę to zrobić?Jak zmienić styl strzałki w JComboBox

Rozumiem, że jest to możliwe przy użyciu plików XML synth, a może nawet UIManager.put (...), ale nie wiem jak. Wszystko, co chcę teraz zrobić, to zmienić obraz ze strzały na coś innego, albo programowo, albo nawet po prostu nadpisując obraz, którego używa. Jak dokładnie mogę to zrobić?

Odpowiedz

19

Można zastąpić createArrowButton() w BasicComboBoxUI. BasicArrowButton to wygodny punkt wyjścia.

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); 
    } 
} 

Następnie zainstaluj.

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

Nie ponoszę odpowiedzialności za jaskrawe kolory. :-) – trashgod

+0

Perfect !! Bardzo dziękuję :) –

+1

dla mnie ... może najbezpieczniej jest wyodrębnić JButton jako JComponent z JComboBox i button.setIcon(), f.e. z ButtonModel dla efektu myszki dla JComboBox też .. +1 dla BasicUI – mKorbel

Powiązane problemy