我正在尝试默认使用自定义外观制作所有JLabels
opaque。我可以设置前景(Label.foreground
),但是如何设置不透明属性?
编辑#1:
我正在创建一个自定义外观&觉得延伸MetalLookAndfeel
。我重写了initComponentDefaults(UIDefaults)
方法。但是,我对其他涉及使用外观和方式的方式持开放态度。感觉。
编辑#2:
我尝试了Vince Emigh的建议,但它没有用。看来JLabel
上的opaque属性存在错误 - 请参阅make-jlabel-backround-transparent-again。
编辑#3:代码示例
class Demo {
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
UIManager.put("Label.opaque", Boolean.valueOf(true));
UIManager.put("Label.background", new ColorUIResource(Color.RED));
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(3);
JLabel yoyo = new JLabel("YOYOYOYO");
yoyo.setOpaque(true);// try once with this commented out and note difference
JPanel panel = new JPanel();
panel.setSize(200, 200);
panel.setBackground(Color.BLUE);
panel.add(yoyo);
frame.add(panel);
frame.pack();
frame.setVisible(true);
}
});
}
}
我还尝试设置JPanel的opaque属性 - 结果相同。看来使用UIManager设置opaque属性对任何对象都没有影响。 :(
还有其他办法吗?
答案 0 :(得分:0)
UIManager.put("Label.opaque", Boolean.valueOf(true));
它与任何其他财产相同
class Demo {
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
UIManager.put("Label.opaque", Boolean.valueOf(true));
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(3);
JPanel panel = new JPanel();
panel.setSize(200, 200);
panel.setBackground(Color.BLUE);
panel.add(new JLabel("YOYOYOYO");
frame.add(panel);
frame.pack();
frame.setVisible(true);
}
});
}
}