我正在创建一个程序,它同时使用带有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;]
示例:
第1张和第2张图片显示没有色调的JMenu。
第3张图片:这就是我正在谈论的效果。
当我没有悬停在JMenuItem上时,第4张图片
第5张图片:这是我将setEnabled设为false时显示的内容,我希望它看起来像这样,而不会禁用它。
有谁知道如何删除它?