How can I change the arrow style in a JComboBox
Asked Answered
O

1

19

Let's say I want to use a custom image for the arrow in JComboBox, how can I do this?

I understand it's possible using the synth xml files, or maybe even UIManager.put(...), but I don't know how. All I want to do at this time is change the arrow image to something else, either programatically or even just overriding the image it uses. How exactly can I do this?

Oleum answered 9/6, 2010 at 17:54 Comment(0)
H
25

You can override createArrowButton() in BasicComboBoxUI. BasicArrowButton is a convenient starting point.

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

Then install it.

JComboBox combo = new JComboBox();
combo.setUI(ColorArrowUI.createUI(combo));
Holoblastic answered 9/6, 2010 at 18:11 Comment(2)
Not responsible for garish color scheme. :-)Holoblastic
for me ... is maybe safiest to extract JButton as JComponent from JComboBox and button.setIcon(), f.e. with ButtonModel for mousehover effect for JComboBox too.. +1 for BasicUIAmative

© 2022 - 2024 — McMap. All rights reserved.