簡體   English   中英

Java Swing - 為所有子組件設置不透明度?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM