[英]Java Swing - set opacity for all children components?
我有一些帶孩子的Swing組件。 當我在父級上使用setOpaque(false)
時,子級仍然具有不透明度。
所以我破解了這個功能(感謝SOF用戶):
Component[] comps = this.getComponents();
for(Component c : comps) { if(c instanceof JComponent) {
((JComponent)c).setOpaque(false); }
}
但現在我被自我懷疑所困擾 - 這看起來有點笨拙,有沒有更好的方法呢?
您可以向面板添加ContainerListener,並在添加子項時設置子項的不透明度。
但是,此解決方案或您的解決方案都不會處理嵌套面板。
我不知道有什么簡單的解決方案。
你的方式還可以。 好一點是:
public void setOpaqueForAll(JComponent aComponent, boolean isOpaque) {
aComponent.setOpaque(isOpaque);
Component[] comps = aComponent.getComponents();
for (Component c : comps) {
if (c instanceof JComponent) {
setOpaqueForAll((JComponent) c, isOpaque);
}
}
}
但是,如果組件樹發生更改,則每次都需要調用此方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.