2014-09-19 14 views
2

Я пытаюсь установить цвет переднего плана JMenu в моем проекте. Я использую UIManager.put ("text", Color.RED) он работает для всего текста, но в JMenu цвет текста не изменяется.Как установить цвет переднего плана JMenu с помощью UIManager

Я хочу установить 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; 

} 

Спасибо за чтение

+0

должен использовать Menu.background, но для меня это тоже не работает. Хороший вопрос –

+0

Я сделал только 'jMenu1.setForeground (Color.RED);' Он отлично работает. Текст меню меню установлен на красный. – codebot

+0

Да, но я хочу использовать ** UIManager.put («Menu.foreground», Color.RED) ** для заданного цвета переднего плана JMenu. –

ответ

3

Вы можете заменить отдельный компонент пользовательского интерфейса.

Пример:

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

+0

вы можете ввести код в мой код вопроса? –

+0

@HArdik Я изменил свой пример –

+0

Спасибо, босс, его работы ... –

 Смежные вопросы

  • Нет связанных вопросов^_^