【问题标题】:Change Color of MenuBar, Menu, and MenuItem in Java using the AWT Components使用 AWT 组件在 Java 中更改 MenuBar、Menu 和 MenuItem 的颜色
【发布时间】:2015-06-14 04:02:50
【问题描述】:

我一直在四处寻找,但我还没有找到关于是否可以以及如何更改菜单栏的背景、文本、前景、选择和文本选择颜色的答案, 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 组件,我建议任何阅读本文的人尽可能这样做。

【问题讨论】:

  • Swing 和 AWT 是有区别的。你真的需要使用(过时的)AWT API 吗?
  • 您是否尝试过只在组件本身(而不是可访问的组件)上调用 setBackground/foreground?
  • 正如其他人建议的那样去摇摆,没有简单的方法来实现它与 awt
  • @MadProgrammer 在某些情况下,我确实需要使用 AWT 组件,但我设法重新编写代码以使用 JFrame 而不是 Frame。这解决了这个问题。据我所见,从 AWT 组件的方法中,我找不到简单或清晰的方法来更改组件颜色。
  • @Arvind 谢谢,到目前为止,我已经设法将代码的主要部分切换到 Swing。希望它不会引起任何奇怪的问题。 =P

标签: java awt


【解决方案1】:

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

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

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

【讨论】:

  • 如果可以的话,我会使用 Swing,但我使用的 Frame 是 AWT 组件,据我所知,它不能与 JMenuBar 一起使用。这就是为什么我要费力尝试让它发挥作用。
  • @Valkryst, Frame 也是Container,因此您可以添加JMenuBar(也是AWT Component)作为子组件,而不是使用setMenuBar。但可能更好的方法是重构它并丢弃旧的 AWT 东西。
  • 哦,我从没想过要那样尝试。我查看的大多数页面似乎总是使用 setMenuBar,因为它们都使用 Swing 而不是 AWT。正如我在另一条评论中所说的那样,我现在正试图检查代码并将内容交换到 Swing。感谢您提供信息。
猜你喜欢
  • 2014-05-18
  • 2014-09-26
  • 1970-01-01
  • 2015-12-19
  • 1970-01-01
  • 1970-01-01
  • 2018-05-03
  • 2023-03-12
  • 1970-01-01
相关资源
最近更新 更多