使用AWT组件在Java中更改MenuBar,Menu和MenuItem的颜色

时间:2015-06-14 04:02:50

标签: java awt

我一直在寻找一下,但我还没有找到答案,关于它是否可能以及如何改变背景,文字,前景,选择,和MenuBar,Menu和MenuItem AWT组件的文本选择颜色。

到目前为止,我已尝试过以下解决方案,但不会影响任何菜单相关组件的任何颜色。第一个解决方案只是尝试抓取组件并更改颜色,第二个尝试通过UIManager更改它。

// Just an example of what I did, this is not from the code I'm working with.    
MenuBar bar = new MenuBar();
Menu menu = new Menu();
MenuItem item = new MenuItem();

bar.getAccessibleContext().getAccessibleComponent().setBackground(Color.RED);
bar.getAccessibleContext().getAccessibleComponent().setForeground(Color.BLUE);

menu.getAccessibleContext().getAccessibleComponent().setBackground(Color.RED);
menu.getAccessibleContext().getAccessibleComponent().setForeground(Color.BLUE);

item.getAccessibleContext().getAccessibleComponent().setBackground(Color.RED);
item.getAccessibleContext().getAccessibleComponent().setForeground(Color.BLUE);

-

UIManager.put("MenuItem.background", Color.RED);
UIManager.put("MenuItem.foreground", Color.BLUE);

我之前没有使用AWT组件,如果答案显而易见,那就很抱歉。

更新

如果您希望能够轻松更改组件颜色,那么使用AWT组件似乎是一个坏主意。我将重构我的代码,以消除尽可能多的AWT组件,转而使用Swing组件,我建议任何读这篇文章的人尽可能做同样的事情。

1 个答案:

答案 0 :(得分:1)

我建议使用Swing组件:它们提供了更大的灵活性:

JMenuBar bar = new JMenuBar();
bar.setBackground(Color.RED);
bar.setForeground(Color.BLUE);

将Swing组件与现有AWT组件集成应该没有问题。