[英]How to set JMenu Foreground color using UIManager
我正在尝试在项目中设置JMenu前景色。 我使用UIManager.put(“ text”,Color.RED),它适用于所有文本,但在JMenu中,文本颜色不会更改。
我想将JMenu.setForeground(“ Color.RED”)设置为可工作,但UIManager.put(“ Menu.foreground”,Color.RED)无法填充颜色。 因此,请为以下代码提供帮助。
import java.awt.Color;
import javax.swing.UIManager;
public class Frame extends javax.swing.JFrame {
public Frame() {
setExtendedState(Frame.MAXIMIZED_BOTH);
setTitle("MENU COLOR");
initComponents();
}
private void initComponents() {
menu_bar = new javax.swing.JMenuBar();
jMenu1 = new javax.swing.JMenu();
jMenu1.setText("File");
jMenu1.setFont(new java.awt.Font("URW Bookman L", 0, 18));
jMenu1.setPreferredSize(new java.awt.Dimension(45, 25));
jMenu1.setForeground(Color.RED);
menu_bar.add(jMenu1);
setJMenuBar(menu_bar);
pack();
}
public static void main(String args[]) {
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager
.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
UIManager.put("Menu.foreground", Color.RED);
break;
}
}
} catch (Exception ex) {
ex.printStackStrace();
}
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Frame().setVisible(true);
}
});
}
private javax.swing.JMenu jMenu1;
private javax.swing.JMenuBar menu_bar;
}
谢谢您的阅读
您可以替换单独的组件UI。
例:
public class MyMenuUI extends SynthMenuUI {
public static ComponentUI createUI(JComponent aComponent) {
return new MyMenuUI();
}
@Override
public void installUI(JComponent c) {
super.installUI(c);
c.setForeground(UIManager.getColor("Menu.foreground"));
}
}
L&F初始化后,您只需将UI放入L&F
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager
.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
UIManager.put("Menu.foreground", Color.RED);
UIManager.put("MenuUI", MyMenuUI.class.getName());
break;
}
}
} catch (Exception ex) {
ex.printStackStrace();
}
缺点:您必须对每个受支持的L&F进行此操作
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.