2010-06-09 7 views
13

Sagen wir, ich möchte ein benutzerdefiniertes Bild für den Pfeil in JComboBox verwenden, wie kann ich das tun?Wie kann ich den Pfeilstil in einer JComboBox ändern?

Ich verstehe, dass es möglich ist, die Synth Xml-Dateien verwenden, oder vielleicht sogar UIManager.put (...), aber ich weiß nicht wie. Alles, was ich zu diesem Zeitpunkt tun möchte, ist, das Pfeilbild in etwas anderes zu ändern, entweder programmatisch oder einfach nur das Bild, das es verwendet, zu überschreiben. Wie genau kann ich das machen?

Antwort

19

Sie können createArrowButton() in BasicComboBoxUI überschreiben. BasicArrowButton ist ein günstiger Ausgangspunkt.

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

Dann installieren Sie es.

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

Nicht verantwortlich für grelles Farbschema. :-) – trashgod

+0

Perfekt !! Vielen Dank :) –

+1

für mich ... ist vielleicht am sichersten, JButton als JComponent aus JComboBox und button.setIcon(), f.e. mit ButtonModel für Mauseffekt auch für JComboBox. +1 für BasicUI – mKorbel

Verwandte Themen