Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 启用和禁用的菜单项不改变颜色_Java_Swing_Colors_Look And Feel_Jmenuitem - Fatal编程技术网

Java 启用和禁用的菜单项不改变颜色

Java 启用和禁用的菜单项不改变颜色,java,swing,colors,look-and-feel,jmenuitem,Java,Swing,Colors,Look And Feel,Jmenuitem,将Look&Feel设置为Nimbus,然后打印出所有可用的菜单选项,以更改启用和禁用菜单项的颜色 Menu:MenuItemAccelerator[MouseOver].textForeground MenuBar:Menu[Disabled].textForeground MenuBar:Menu[Enabled].textForeground MenuBar:Menu[Selected].textForeground MenuItem:MenuItemAccelerator[Disable

将Look&Feel设置为Nimbus,然后打印出所有可用的菜单选项,以更改启用和禁用菜单项的颜色

Menu:MenuItemAccelerator[MouseOver].textForeground
MenuBar:Menu[Disabled].textForeground
MenuBar:Menu[Enabled].textForeground
MenuBar:Menu[Selected].textForeground
MenuItem:MenuItemAccelerator[Disabled].textForeground
MenuItem:MenuItemAccelerator[MouseOver].textForeground
MenuItem[Disabled].textForeground
MenuItem[Enabled].textForeground
MenuItem[MouseOver].textForeground
Menu[Disabled].textForeground
Menu[Enabled+Selected].textForeground
Menu[Enabled].textForeground
执行以下代码时,它仅更改主菜单,而不更改菜单项

Menu:MenuItemAccelerator[MouseOver].textForeground
MenuBar:Menu[Disabled].textForeground
MenuBar:Menu[Enabled].textForeground
MenuBar:Menu[Selected].textForeground
MenuItem:MenuItemAccelerator[Disabled].textForeground
MenuItem:MenuItemAccelerator[MouseOver].textForeground
MenuItem[Disabled].textForeground
MenuItem[Enabled].textForeground
MenuItem[MouseOver].textForeground
Menu[Disabled].textForeground
Menu[Enabled+Selected].textForeground
Menu[Enabled].textForeground

此外,将鼠标移到禁用的菜单项上后,它实际上似乎已启用

import java.awt.*;
导入javax.swing.*;
导入javax.swing.UIManager.LookAndFeelInfo;
导入java.awt.event.*;
导入java.util.*;
导入java.util.Map.Entry;
导入java.util.List;
公共类JMenuTest1扩展了JFrame{
静态JMenuBar-mb;
静态jmenux;
静态项目m1、m2、m3;
静态jf帧;
公共静态void main(字符串[]args)
{ 
System.out.println(“默认L&F:+UIManager.getSystemLookAndFeelClassName());
尝试
{
for(LookAndFeelInfo:UIManager.getInstalledLookAndFeels())
{
System.out.println(info.getName());
if(“Nimbus”.equals(info.getName()))
{
UIManager.setLookAndFeel(info.getClassName());
打破
}
}
}
捕获(例外e)
{
//如果Nimbus不可用,您可以将GUI设置为其他外观。
}       
试一试{
列表颜色键=新的ArrayList();
Set entries=UIManager.getLookAndFeelDefaults().entrySet();
对于(条目:条目)
{
if(entry.getValue()instanceof Color&&entry.getKey().toString().startsWith(“菜单”))
{
添加((字符串)entry.getKey());
}
}
//对颜色键进行排序
集合。排序(颜色键);
//打印颜色键
用于(字符串颜色键:颜色键)
{
System.out.println(颜色键);
}           
}捕获(例外e)
{
System.out.println(e.getMessage());
}
UIManager.put(“菜单[已启用].textForeground”,颜色为.GREEN);
UIManager.put(“MenuItem[Enabled].textForeground”,Color.ORANGE);
UIManager.put(“菜单[已禁用].textForeground”,颜色为.RED);
UIManager.put(“MenuItem[Disabled].textForeground”,Color.RED);
f=新JFrame(“菜单演示”);
mb=新的JMenuBar();
x=新的JMenu(“菜单”);
m1=新的JMenuItem(“菜单项1”);
m2=新项目(“菜单项2”);
m3=新项目(“菜单项3”);
m2.启用(假);
x、 加(m1);
x、 添加(新的jsepator());
x、 加(m2);
x、 添加(新的jsepator());
x、 增加(m3);
mb.加上(x);
f、 setJMenuBar(mb);
f、 设置大小(500500);
f、 setVisible(真);
} 
}
问题: 1-为什么菜单项没有得到正确的颜色。 2-为什么将鼠标移到MenuItem2上后,它会显示为启用状态