我有例如。
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");
}
}
答案 0 :(得分:1)
这不是UI默认工作的方式:"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");