5

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

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

4

3 回答 3

4

正如 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);
    }
});
于 2010-12-10T11:18:25.310 回答
1

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

于 2010-11-12T16:12:06.030 回答
0

你有没有尝试过:

comboBox.setBackground(color);
于 2010-11-12T09:06:52.893 回答