Java 单击透明JButton时变为浅蓝色

Java 单击透明JButton时变为浅蓝色,java,swing,jbutton,transparency,Java,Swing,Jbutton,Transparency,我试图制作透明的JButtons(带有可见文本),但是当按钮点击后,背景变成浅蓝色。(不要介意代码中的缩进,缩进都是正确的) 我已经成功地使按钮透明,但我担心问题可能是因为我将所有jbutton添加到JLabel(背景图像)中 不要使用透明颜色试图设置任何Swing组件的背景。使用透明颜色时,Swing无法正确绘制组件 通常,您使用: setOpaque( false ); 当您需要任何Swing组件上的完全透明时 但是,对于JButton,您还需要: setContentAreaFilled

我试图制作透明的JButtons(带有可见文本),但是当按钮点击后,背景变成浅蓝色。(不要介意代码中的缩进,缩进都是正确的)

我已经成功地使按钮透明,但我担心问题可能是因为我将所有jbutton添加到JLabel(背景图像)中

不要使用透明颜色试图设置任何Swing组件的背景。使用透明颜色时,Swing无法正确绘制组件

通常,您使用:

setOpaque( false );
当您需要任何Swing组件上的完全透明时

但是,对于JButton,您还需要:

setContentAreaFilled( false );
防止单击按钮时绘制按钮背景


如果您想要部分透明,请查看解决方案。

您的脸与外观相关,即如果您真的没有添加另一段代码来收听MVCE的点击并更改其外部颜色,您使用的是什么外观和感觉?如果它变成浅蓝色,我可以假设它是windows(焦点状态)或nimbus(模型武装状态),尝试更改外观,如果它仍然在更改,请告诉我们您使用的laf。可能的副本可以简单地覆盖并获得您想要的透明外观。^问题包含你的答案。我试过了,但按下按钮时,按钮的背景会失真。它会失真,因为你使用的是透明的颜色。如果您需要更多帮助,请在演示文章中说明问题,您只需要一个带有单个JButton的JFrame,然后设置上述属性来测试我的建议。
setOpaque( false );
setContentAreaFilled( false );