2014-09-19 15 views
2

프로젝트에서 JMenu 전경색을 설정하려고합니다. UIManager.put ("text", Color.RED) 모든 텍스트에 사용할 수 있지만 JMenu 텍스트 색상은 변경되지 않습니다.UIManager를 사용하여 JMenu 전경색을 설정하는 방법

나는가 작동하지만 UIManager.put ("Menu.foreground", Color.RED) 색상을 기입하지 않습니다 JMenu.setForeground ("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

당신은 별도의 구성 요소의 UI를 대체 할 수를 읽어 주셔서 감사합니다.

예 : 당신은 단순히 L로 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의 초기화 후

& 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(); 
    } 

는 단점 : 각을 위해 그것을 수행해야 F

L & 지원
+0

을 테스트 할 때 코드를 제 질문 코드에 넣을 수 있습니까? –

+0

@HArdik 제 예제를 수정했습니다 –

+0

보스 작품에 감사드립니다 ... –