如何更改JComboBox中箭头的样式

19

假设我想在JComboBox中使用自定义图像作为箭头,我该怎么做?

我了解可以使用synth xml文件或者UIManager.put(...)实现,但我不知道具体如何操作。我现在只想将箭头图像更改为其他图像,要么通过编程方式,要么仅覆盖它所使用的图像。我该如何做到这一点?

1个回答

25

您可以在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));

不负责太艳的配色方案。 :-) - trashgod
1
对我来说,从JComboBox中提取JButton作为JComponent并使用button.setIcon()可能是最安全的选择,例如使用ButtonModel实现JComboBox的鼠标悬停效果。对BasicUI点赞。 - mKorbel
@trashgod 谢谢您。 :) - UdayKiran Pulipati

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接