我一直在寻找一下,但我还没有找到答案,关于它是否可能以及如何改变背景,文字,前景,选择,和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组件,我建议任何读这篇文章的人尽可能做同样的事情。
答案 0 :(得分:1)
我建议使用Swing组件:它们提供了更大的灵活性:
JMenuBar bar = new JMenuBar();
bar.setBackground(Color.RED);
bar.setForeground(Color.BLUE);
将Swing组件与现有AWT组件集成应该没有问题。