首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法覆盖Nimbus属性

无法覆盖Nimbus属性
EN

Stack Overflow用户
提问于 2013-04-30 18:30:29
回答 1查看 544关注 0票数 1

我有一个例子。

代码语言:javascript
复制
UIDefaults defaults = UIManager.getLookAndFeelDefaults();
defaults.put("text",Color.GREEN);`

文本仍然是黑色的,但是为什么呢?

代码语言:javascript
复制
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");
  }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-30 19:27:22

这不是UI默认值的工作方式:"text"不是一个有效的名称,并且任何组件都不能看到您的defaults实例。相反,尝试

代码语言:javascript
复制
jLabel1.setForeground(Color.red);

此外,不要使用setBounds();请使用合适的layout manager

附录:如here所示,"text"是有效的原色键,而不是组件键。

I…想要…覆盖nimbus默认值。

在大多数L&F中,您可以指定"Label.foreground"密钥:

代码语言:javascript
复制
UIManager.put("Label.foreground", Color.red);

在Nimbus上,你必须执行this

代码语言:javascript
复制
UIManager.put("text", Color.red);
UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16297734

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档