java - 更新 JLabel 图标会弄乱背景

标签 java image swing background jpanel

我已将容器 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));

这是一张图片

enter image description here

怎么了?

最佳答案

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/

相关文章:

html - 什么在搜索引擎中会被索引得更好 : img tags or background-images with screenreader tags?

java - 如何禁用结果集中显示的 Jtable 的单元格编辑

java - 将 jtable 中编辑的值更新到 mysql 数据库

java - 检查字符串是否包含点

java - 调用重写的 super 方法会导致无限递归

Java 默认的 SecurityManager 策略

java - JPanel 如何创建实例/对象

java - 使用 itext 直接创建 pdf 到数据库

java - 单击按钮后在弹出窗口中显示图像 - Android/Java

facebook - 动态调整 og :image ok? 的图像大小