【问题标题】:Java - JLabel background isn't fully transparent?Java - JLabel 背景不是完全透明的?
【发布时间】:2010-11-18 02:45:04
【问题描述】:

我有一个带有方框图标的 JLabel。我在 Photoshop 中创建图标的图像。这是一张背景已完全擦除的 png-24 图像。

但是当在深色背景上移动时,您会看到背景不是完全透明的:


编辑#2:

图像是透明的。我什至浏览了 Photoshop 教程,以确保我以正确的方式创建透明图像。问题似乎出在 Java(和 JLabels)上。

我该如何解决这个问题?

【问题讨论】:

  • 如果图像 IS 是透明的,那么为什么它在 html 页面中不显示为透明呢?

标签: java image transparency transparent jlabel


【解决方案1】:

我已经测试了您的图片,它不透明。肯定是这个原因。

<html>
<body style="background-color:#99cccc;">
    <table>
    <tr>
        <th>your one isn't transparent</th>
        <th>this one is</th></tr>
    <tr>
        <td><img src="http://i.stack.imgur.com/BvYxM.png" style="border:5px solid green;"/></td>
        <td><img src="http://www.axdn.com/redist/axpssp_logo.png" style="border:5px solid green;"/></td></tr>
    </table>
</body>
</html>

@Gabe:将其粘贴到 html 文件中并在浏览器中加载。这显然不是任何与 java 相关的问题。

这是一个 java 证明,证明您的图像不透明,并且正确的透明 PNG 可以正常工作。

public static void main(String[] args) throws Throwable
{
    JFrame frame = new JFrame();
    frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    Container cp = frame.getContentPane();
    cp.setBackground(Color.RED);
    cp.setLayout(new FlowLayout());

    cp.add(new JLabel(new ImageIcon(new URL("http://i.stack.imgur.com/BvYxM.png"))));
    cp.add(new JLabel(new ImageIcon(new URL("http://www.axdn.com/redist/axpssp_logo.png"))));

    frame.pack();
    frame.setVisible(true);
}

【讨论】:

  • 那我该如何解决呢?我在Photoshop中删除了所有背景?看起来 Java 处理图像的方式不同。
  • 使用 File / Save for Web 以透明方式保存 PNG。
  • @Gabe “Java 处理图像的方式似乎不同” - 你没有抓住重点。图像不透明。与java无关。您应该阅读 Photoshop 帮助或使用其他程序。见编辑。
  • 我确信他是在 Photoshop 中将其作为“透明度”进行的。就像我一样。
【解决方案2】:

您可以尝试使用 GIF 格式并相应地设置 alpha 值。 我现在看不到你的图像。 好吧,请确保您创建的图像是透明的。 否则你不会得到你需要的。

透明图片制作指南:LINK

【讨论】:

  • 那也没用。我知道它必须是PNG。 (我之前读过Java transparenc 只适用于PNG。)
  • 嘿....我想我在这里遇到了同样的事情。一旦我的png首先显示OK,但是当我重新粉刷它时,它也会给我黑色背景......那么,如何解决它? :(
猜你喜欢
  • 2012-07-27
  • 1970-01-01
  • 2023-03-05
  • 1970-01-01
  • 2013-05-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-21
  • 1970-01-01
相关资源
最近更新 更多