我可以修改现有对象的JComboBox弹出背景颜色吗?

时间:2010-11-12 09:00:55

标签: java swing popup jcombobox

我有一个现有的JComboBox对象。我可以使用内部方法修改其许多属性。但是,我找不到类似的方法来自定义弹出窗口的外观 - 特别是弹出窗口的背景颜色。我有一个现有的对象,所以我希望使用它现有的方法/属性,而不是写一个专用的类。这可能吗?

注意:此问题与上面的链接问题相同(错误地指出此问题已有答案):该问题询问所选项目是bgcolor(在组合框的编辑框中);我问的是弹出框的bgcolor。

3 个答案:

答案 0 :(得分:3)

正如eugener所说,使用自定义ListCellRenderer绝对是正确的方法。您只需要创建一个扩展DefaultListCellRenderer的类。此默认渲染器扩展JLabel,因此无法更容易理解!您只需拨打setBackground()

即可
JComboBox combo = new JComboBox(new String[] { "A", "B", "C", "D" });
combo.setRenderer(new DefaultListCellRenderer() {
    public void paint(Graphics g) {
        setBackground(Color.YELLOW);
        setForeground(Color.RED);
        super.paint(g);
    }
});

答案 1 :(得分:1)

您必须创建自定义组合框渲染器。更多信息在这里: http://download.oracle.com/javase/tutorial/uiswing/components/combobox.html#renderer

答案 2 :(得分:0)

你试过了吗?

comboBox.setBackground(color);