我有一个带有 Windows 外观和感觉的 Swing 应用程序,但我在使用 JComboBox 时遇到了困难。单击它时,默认的 Windows 按钮颜色更改功能可以正常工作(即众所周知的 Windows 冰蓝色)。
但是,当我单击相邻字段时,它的颜色不会改变。这是一个将两列连接在一起的自定义表格,颜色更改功能与 JTextFields 完美配合。
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
if (column == 0 || !isSelected || !table.hasFocus()) {
combobox.setForeground(table.getForeground());
combobox.setBackground(table.getBackground());
} else {
if (isSelected && table.hasFocus()) {
combobox.setForeground(table.getForeground());
combobox.setBackground(table.getSelectionBackground());
}
}
combobox.setFont(table.getFont());
combobox.getModel().setSelectedItem(value == null ? "" : value.toString());
return combobox;
}
现在这不起作用。当我单击相邻的文本字段时, isSelected && table.hasFocus 块被执行,但是组合框的颜色保持不变。的价值
UIManager.getLookAndFeelDefaults().get("Button.background");
仍然 [240; 240; 240] 即使我直接单击组合框,它的颜色也会变成冰蓝色。
如何触发 Windows 冰蓝色?