如何解决启用和禁用的菜单项不会改变颜色
将外观设置为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
此外,将鼠标移到禁用的菜单项上之后,它实际上似乎已启用。
import java.awt.*;
import javax.swing.*;
import javax.swing.UIManager.LookAndFeelInfo;
import java.awt.event.*;
import java.util.*;
import java.util.Map.Entry;
import java.util.List;
public class JMenuTest1 extends JFrame {
static JMenuBar mb;
static JMenu x;
static JMenuItem m1,m2,m3;
static JFrame f;
public static void main(String [] args)
{
System.out.println("Default L&F : " + UIManager.getSystemLookAndFeelClassName());
try
{
for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels())
{
System.out.println(info.getName()) ;
if ("Nimbus".equals(info.getName()))
{
UIManager.setLookAndFeel(info.getClassName());
break;
}
}
}
catch (Exception e)
{
// If Nimbus is not available,you can set the GUI to another look and feel.
}
try {
List<String> colorKeys = new ArrayList<String>();
Set<Entry<Object,Object>> entries = UIManager.getLookAndFeelDefaults().entrySet();
for (Entry entry : entries)
{
if (entry.getValue() instanceof Color && entry.getKey().toString().startsWith("Menu"))
{
colorKeys.add((String) entry.getKey());
}
}
// sort the color keys
Collections.sort(colorKeys);
// print the color keys
for (String colorKey : colorKeys)
{
System.out.println(colorKey);
}
} catch (Exception e)
{
System.out.println(e.getMessage());
}
UIManager.put("Menu[Enabled].textForeground",Color.GREEN);
UIManager.put("MenuItem[Enabled].textForeground",Color.ORANGE);
UIManager.put("Menu[disabled].textForeground",Color.RED);
UIManager.put("MenuItem[disabled].textForeground",Color.RED);
f = new JFrame("Menu demo");
mb = new JMenuBar();
x = new JMenu("Menu");
m1 = new JMenuItem("MenuItem1");
m2 = new JMenuItem("MenuItem2");
m3 = new JMenuItem("MenuItem3");
m2.enable(false);
x.add(m1);
x.add(new JSeparator());
x.add(m2);
x.add(new JSeparator());
x.add(m3);
mb.add(x);
f.setJMenuBar(mb);
f.setSize(500,500);
f.setVisible(true);
}
}
问题: 1-为什么菜单项的颜色不正确。 2-为什么在将鼠标移到MenuItem2上之后,为什么显示为启用状态?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。