2010-06-09 91 views
13

假設我想爲JComboBox中的箭頭使用自定義圖像,我該怎麼做?如何更改JComboBox中的箭頭樣式

我明白這是可能的使用synth xml文件,或者甚至UIManager.put(...),但我不知道如何。我現在想要做的就是將箭頭圖像更改爲其他內容,無論是以編程方式還是僅僅覆蓋其使用的圖像。我該如何做到這一點?

回答

19

您可以覆蓋BasicComboBoxUI中的createArrowButton()BasicArrowButton是一個方便的起點。

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

然後安裝它。

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

對花色配色不負責任。 :-) – trashgod 2010-06-09 18:12:04

+0

完美!非常感謝你:) – 2010-06-09 18:51:43

+1

對我來說......也許是最容易從JComboBox和button.setIcon(),f.e.中提取JButton作爲JComponent的。與JComboBox的mousehover效果的ButtonModel太.. +1爲BasicUI – mKorbel 2011-07-02 18:45:43