我有一个现有的 JComboBox 对象。我可以使用内部方法修改它的许多属性。但是,我找不到类似的方法来自定义弹出窗口的外观——特别是弹出窗口的背景颜色。我有一个现有的对象,所以我希望使用它现有的方法/属性,而不是编写一个专用的类。这可能吗?
注意:这个问题与上面的链接问题不同(错误地指出这个问题已经有了答案):那个问题询问了所选项目的 bgcolor (在组合框的编辑框中);我在问弹出框的 bgcolor。
正如 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);
}
});
您必须创建一个自定义组合框渲染器。更多信息在这里:http: //download.oracle.com/javase/tutorial/uiswing/components/combobox.html#renderer
你有没有尝试过:
comboBox.setBackground(color);