Java 使用set不透明(false)是否会影响Swing组件的绘制性能?

Java 使用set不透明(false)是否会影响Swing组件的绘制性能?,java,swing,jcomponent,Java,Swing,Jcomponent,我的问题是,使用setOpaque(false)(我与JPanel一起使用)在Swing中布局UI是否会比保持所有内容的不透明(其中isOpaque()返回true)更影响绘画性能 我不太熟悉Swing如何渲染UI,但我想如果JComponent不是不透明的,那么渲染组件背后的内容将比简单地在组件上绘制不透明背景更困难。是的,绘制时确实会增加额外的工作,但我怀疑您是否需要担心 基本上,无论何时重新绘制透明组件,都需要沿着链向上查找不透明的父组件,然后在绘制子组件之前先绘制该组件 所以底线是不要担

我的问题是,使用
setOpaque(false)
(我与
JPanel
一起使用)在Swing中布局UI是否会比保持所有内容的不透明(其中
isOpaque()
返回
true
)更影响绘画性能


我不太熟悉Swing如何渲染UI,但我想如果JComponent不是不透明的,那么渲染组件背后的内容将比简单地在组件上绘制不透明背景更困难。

是的,绘制时确实会增加额外的工作,但我怀疑您是否需要担心

基本上,无论何时重新绘制透明组件,都需要沿着链向上查找不透明的父组件,然后在绘制子组件之前先绘制该组件

所以底线是不要担心。如果你有理由使用透明度,那么就使用它。如果你没有理由,那么你就不应该使用它


你可能想退房。它更详细地介绍了不透明属性的含义及其对绘画的影响,以及如果使用透明背景会出现的问题。

这基本上归结为我的懒惰,即是在用作容器的JPanel上刻上与它包含的容器相同的背景色,还是将所有容器设置为相同的颜色透明的。很高兴知道,如果可能的话,我应该更多地保持内容不透明。@SammyGuergachi
,或者只是将所有容器设置为透明。
,我认为这没有什么大问题。我只会担心当你有大量的动画和面板是重新粉刷自己很多次一秒钟。通常一次只重新绘制一个零部件。即在文本字段中键入文本时,即使你的面板是透明的,也只会将文本字段重新绘制到,这无关紧要。在我的例子中,我有一个非常缓慢的计算机限制,需要运行这个命令,还有一个更具体的限制,我在一个JScrollPane中有数百个JPanel,我希望尽可能保持一切顺利,以实现良好的滚动。我想象在JScrollPane中滚动需要重新绘制子组件,对吗?@SammyGuergachi,
我想象在JScrollPane中滚动需要重新绘制子面板对吗?
否。再次尝试,然后再假设出现问题。