我試圖使所有JLabels
在默認情況下都具有不透明的自定義外觀和感覺。我可以設置像前景(Label.foreground
),但你如何設置不透明的屬性?使用外觀將所有JLabels設置爲不透明
編輯#1: 我正在創建自定義外觀&感覺延伸MetalLookAndfeel
。我重寫了initComponentDefaults(UIDefaults)
方法。不過,我開放其他方式,涉及使用看看&的感覺。
編輯#2: 我試過Vince Emigh的建議,但它沒有奏效。看起來,JLabel
上的不透明屬性存在一個錯誤 - 請參閱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的不透明性質 - 同樣的結果。看來使用UIManager設置不透明屬性對任何對象都沒有影響。 :(
是否有另一種方式做到這一點?
看起來和感覺管理您使用的?Synth的? – markspace 2014-09-03 15:31:39
我假設你不能在構造函數中繼承JLabel和'setOpaque(true)'? – remi 2014-09-03 15:44:39