JMenuItem不需要的色彩

时间:2016-12-27 16:02:29

标签: java swing windows-7 jmenu jmenuitem

我正在创建一个程序,它同时使用带有Windows LaF(外观)的JMenuBar和JPopupMenu。

以下是简化的LaF代码:

    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
    UIManager.put("MenuItem.selectionBackground", Color.BLUE);
    UIManager.put("MenuItem.selectionForeground", Color.WHITE);
    UIManager.put("MenuItem.background", Color.BLACK);
    UIManager.put("MenuItem.foreground", Color.WHITE);

MouseListener代码:

@Override
public void mouseExited(MouseEvent e) {
    if (e.getSource() instanceof JMenuItem) {
        JMenuItem i = (JMenuItem) e.getSource();
        i.setBackground(UIManager.getColor("MenuItem.background"));
    }
}

@Override
public void mouseEntered(MouseEvent e) {
    if (e.getSource() instanceof JMenuItem) {
        JMenuItem i = (JMenuItem) e.getSource();
        i.setBackground(UIManager.getColor("MenuItem.selectionBackground"));
    }
}

我正在尝试删除看似所选的JMenuItem白色的Windows LaF工件。当我禁用组件时,它们不再接收所述色调。

我似乎无法在网上找到任何关于此效果的内容,并且当它们的弹出窗口处于活动状态时,它似乎也只显示在JMenus上(可能是较暗的颜色)。

编辑:我认为它在java.beans.PropertyChangeEvent中称为“HOT”:

例如: [oldValue = NORMAL; / newValue = HOT;]

示例:

example

第1张和第2张图片显示没有色调的JMenu。

第3张图片:这就是我正在谈论的效果。

当我没有悬停在JMenuItem上时,

第4张图片

第5张图片:这是我将setEnabled设为false时显示的内容,我希望它看起来像这样,而不会禁用它。

有谁知道如何删除它?

0 个答案:

没有答案