0

我在 Gimp2 中创建了一个简单的图标并对其进行了转换,因此我可以将其显示在标签上。

图标是这样的:

public static final byte[] RedButton16 = 
{
    71, 73, 70, 56, 57, 97, 16, 0, 
    16, 0, -95, 2, 0, 0, 0, 0, 
    -1, 0, 0, -1, -1, -1, -1, -1, 
    -1, 33, -7, 4, 1, 10, 0, 2, 
    0, 44, 0, 0, 0, 0, 16, 0, 
    16, 0, 0, 2, 37, -108, 29, -87, 
    113, -67, -97, 28, -124, 6, 76, 42, 
    -18, -76, -6, -15, -82, 124, 96, 32, 
    -126, 101, 119, 106, 64, -118, -79, 79, 
    -27, 70, -57, -102, 2, -51, 76, -45, 
    119, 1, 0, 59
};

要将图标加载到标签中,我使用以下代码:

private ImageIcon getRedIcon()
{
    if(MainPanel.mRedIcon == null)
        MainPanel.mRedIcon = new ImageIcon(GUIIcons.RedButton16);

    return MainPanel.mRedIcon;
}

foo()
{
    mStatusLabel.setIcon(getRedIcon());
}

我可以看到屏幕上的图标,但颜色不对。当我使用外部查看器查看它时,它看起来就像我创建它一样。红色或绿色(我有两个版本,都是 GIF 文件)并且都有相同的问题。我认为 alpha 通道可能存在问题,但我不知道出了什么问题以及如何修复它,或者 Java 如何解释数据。我必须修复图像,还是必须在 Imageloader 上设置一些选项?

更新

我在这里上传了图片。我如何创建它们以及它们在我的 Java 应用程序中的屏幕显示方式。

截图绿色

正确的绿色

截图红色

正确的红色

4

1 回答 1

2

假设您在源代码中将图像转换为字节数组时没有出错,这看起来更像是 Swing 将图标呈现为禁用状态。

我怀疑你用 setEnabled(false) 在某处禁用了标签,导致它呈现为禁用状态。您可以通过在标签上设置文本来轻松检查这一点,如果出现重影,则标签被禁用。

于 2013-05-29T11:08:15.467 回答