Java Swing - 为所有子组件设置不透明度?

发布于 2024-12-07 18:08:49 字数 324 浏览 0 评论 0原文

我有一些与孩子有关的 Swing 组件。当我在父级上 setOpaque(false) 时,子级仍然具有不透明度。

所以我破解了这个功能(感谢 SOF 用户):

Component[] comps = this.getComponents();

for(Component c : comps) { if(c instanceof JComponent) {
    ((JComponent)c).setOpaque(false); }
}

但现在我被自我怀疑所困扰 - 这看起来有点笨拙,有没有更好的方法来做到这一点?

I've got some Swing components with children. When I setOpaque(false) on the parent, the children still have opacity.

So I hacked up this function (thanks SOF users):

Component[] comps = this.getComponents();

for(Component c : comps) { if(c instanceof JComponent) {
    ((JComponent)c).setOpaque(false); }
}

But now I'm plagued with self-doubt - this seems sort of clunky, is there a better way to do it?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

如若梦似彩虹 2024-12-14 18:08:49

您可以向面板添加一个 ContainerListener,并在添加子项时设置其不透明度。

但是,此解决方案或您的解决方案都无法处理嵌套面板。

据我所知,没有简单的解决方案。

You could add a ContainerListener to the panel and the set the opacity of the children as they are added.

However neither this solution or yours will handle nested panels.

There is no easy solution that I'm aware of.

夏の忆 2024-12-14 18:08:49

你的方法没问题。更好一点的是:

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);
    }
  }
}

但是如果组件树发生变化,则每次都需要调用此方法。

Your way is OK. A little bit better is:

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);
    }
  }
}

But you need to call this method each time if your component tree changed.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文