Java Swing - 为所有子组件设置不透明度?
我有一些与孩子有关的 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以向面板添加一个 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.
你的方法没问题。更好一点的是:
但是如果组件树发生变化,则每次都需要调用此方法。
Your way is OK. A little bit better is:
But you need to call this method each time if your component tree changed.