我已将容器 JPanel 的背景颜色设置为部分透明。我有一个 JLabel,上面有一个透明背景的 PNG 图像。我还有另一张图片,当鼠标悬停在标签上时会显示该图片。我使用以下更改图标
private void settingsMouseEntered(java.awt.event.MouseEvent evt) {
this.settings.setIcon(new ImageIcon(getClass().getResource("/Resources/settingsIconHover.png")));
}
private void settingsMouseExited(java.awt.event.MouseEvent evt) {
this.settings.setIcon(new ImageIcon(getClass().getResource("/Resources/settingsIcon.png")));
}
每次更新图标时都会稍微改变不透明度。最终背景不再透明了。
我已经用下面的代码设置了 JPanel 的背景
content.setBackground(new Color(74, 137, 227, 60));
JPanel 位于 JFrame 中,该 JFrame 也具有特定的背景
setBackground(new Color(74, 137, 227, 80));
这是一张图片
怎么了?
最佳答案
It changes the [translucency] a little bit every time the icon is updated… What is wrong?
平台具体实现 Graphics2D
的默认复合模式是AlphaComposite.SRC_OVER
,这可能会产生您描述的效果。一个类似的问题,由于重复调用 repaint()
,已检查 here .
关于java - 更新 JLabel 图标会弄乱背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14671669/