如何更改 JComboBox 中的箭头样式

Posted

技术标签:

【中文标题】如何更改 JComboBox 中的箭头样式【英文标题】:How can I change the arrow style in a JComboBox 【发布时间】:2011-03-01 19:24:48 【问题描述】:

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

我知道可以使用合成器 xml 文件,甚至 UIManager.put(...),但我不知道如何。此时我想做的就是将箭头图像更改为其他内容,以编程方式或什至只是覆盖它使用的图像。我该怎么做?

【问题讨论】:

【参考方案1】:

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

【讨论】:

不负责花哨的配色方案。 :-) 完美!!非常感谢:) 对我来说......从 JComboBox 和 button.setIcon() 中提取 JButton 作为 JComponent 可能是最安全的,f.e.使用 ButtonModel 也可以为 JComboBox 提供鼠标悬停效果.. BasicUI 的 +1 @trashgod 谢谢。 :)

以上是关于如何更改 JComboBox 中的箭头样式的主要内容,如果未能解决你的问题,请参考以下文章

在不更改应用样式的情况下更改 QSpinBox 箭头大小

如何修改鼠标箭头的样式

在 JPanel 中获取组件的值

选择箭头样式更改

怎么更改电脑上的鼠标箭头,让它更可爱?

如何更改焦点 JComboBox 的突出显示颜色