2013-04-30 4 views
1

У меня есть, например,Не удается переопределить свойства Nimbus

UIDefaults defaults = UIManager.getLookAndFeelDefaults(); 
defaults.put("text",Color.GREEN);` 

Текст по-прежнему черный, но почему ?.

import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 
import javax.swing.event.*; 
import java.awt.event.*; 
import javax.swing.UIManager.*; 


public class test999 extends JFrame { 
    private JLabel jLabel1 = new JLabel(); 

    public test999(String title) { 
    super(title); 
    try { 
     for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) { 
     if ("Nimbus".equals(info.getName())) { 
      UIManager.setLookAndFeel(info.getClassName()); 
      UIDefaults defaults = new UIDefaults(); 
      defaults.put("text",new Color(255,0,0)); 
      break; 
     } 
     } 
    } catch (Exception e) { 
     // If Nimbus is not available, you can set the GUI to another look and feel. 
    } 
    setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); 
    int frameWidth = 300; 
    int frameHeight = 300; 
    setSize(frameWidth, frameHeight); 
    Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); 
    int x = (d.width - getSize().width)/2; 
    int y = (d.height - getSize().height)/2; 
    setLocation(x, y); 
    setResizable(false); 
    Container cp = getContentPane(); 
    cp.setLayout(null); 

    jLabel1.setBounds(72, 72, 147, 57); 
    jLabel1.setText("text"); 
    cp.add(jLabel1); 

    setVisible(true); 
    } 
    public static void main(String[] args) { 
    new test999("test999"); 
    } 
} 

ответ

1

Это не так, как интерфейс по умолчанию работает: "text" не является допустимым именем, и ни один из компонентов не может увидеть ваш defaults экземпляр. Вместо этого попробуйте

jLabel1.setForeground(Color.red); 

Также не используйте setBounds(); используйте подходящий layout manager.

Дополнение: Как показано here, "text" является действительным основным ключом цвета, а не ключевым компонентом.

Я ... хочу ... переопределить значение nimbus по умолчанию.

На большинстве L & F-х можно указать ключ "Label.foreground":

UIManager.put("Label.foreground", Color.red); 

На Nimbus вы должны сделать this:

UIManager.put("text", Color.red); 
UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel"); 
+0

Я не хочу, чтобы установить шрифт/TextColor для каждый отдельный компонент с одной строкой на один компонент, но переопределяет значения по умолчанию nimbus, теперь это работает: http://stackoverflow.com/a/2576230/753676, но только для текста, а не для progressbar –

+0

Я разработал выше. – trashgod

+0

isnt это то же самое, что и default.put ... из моего начального сообщения? –

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