有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何使用UIManager设置JMenu前景色

我正在尝试在我的项目中设置JMenu前景色。 我使用UIManager。put(“text”,Color.RED)它适用于所有文本,但在JMenu中文本颜色不变

我想设置JMenu。设置前景(“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;

}

谢谢你的阅读


共 (1) 个答案

  1. # 1 楼答案

    您可以替换一个单独的组件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你必须简单地将你的用户界面放入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