1

我有一个带有 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 冰蓝色?

4

0 回答 0