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());
}

画面にアイコンは見えますが、色が間違っています。外部ビューアで表示すると、作成したように見えます。赤か緑のどちらか (2 つのバージョンがあり、どちらも GIF ファイルです) で、どちらも同じ問題を抱えています。アルファ チャネルに問題があるのではないかと思いますが、何が問題なのか、どのように修正するのか、または Java がデータをどのように解釈するのかわかりません。イメージを修正する必要がありますか、それとも Imageloader でいくつかのオプションを設定する必要がありますか?

アップデート

ここに画像をアップロードしました。それらをどのように作成したか、および Java アプリケーションの画面でどのように表示されるか。

スクリーンショットグリーン

正しい緑

スクリーンショット赤

正しい赤

4

1 に答える 1

2

ソース コードでイメージをバイト配列に変換したときに間違いがなかったと仮定すると、これは、Swing が無効な状態でアイコンをレンダリングしたように見えます。

setEnabled(false) でどこかでラベルを無効にしたため、無効な状態でレンダリングされたと思われます。これは、ラベルにテキストを設定することで簡単に確認できます。ゴーストが表示される場合は、ラベルが無効になっています。

于 2013-05-29T11:08:15.467 に答える