2

コンテナ JPanel の背景色を部分的に透明に設定しました。背景が透明なPNG画像を含むJLabelがあります。マウスがラベルの上にあるときに表示される別の画像もあります。以下を使用してアイコンを変更します

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 にあります

setBackground(new Color(74, 137, 227, 80));

ここに画像があります

ここに画像の説明を入力

なにが問題ですか?

4

3 に答える 3

2

何が起こっているのか、および1つの解決策については、「透明性のある背景」を参照してください。

于 2013-02-03T18:30:43.437 に答える
2

アイコンが更新されるたびに【半透明度】が少しずつ変わっていくのですが…どうしたんですか?

プラットフォームの具体的な実装のデフォルトの複合モードはGraphics2DですAlphaComposite.SRC_OVER。これにより、説明した効果が得られる場合があります。への繰り返しの呼び出しによる同様の問題を、ここrepaint()で調べます

于 2013-02-03T13:05:55.067 に答える
2

このようにコンポーネントにアルファカラーを適用すると

content.setBackground(new Color(74, 137, 227, 60));

setBackground(new Color(74, 137, 227, 80));

コンポーネントの不透明度プロパティに影響を与えていません。これは、再描画マネージャーがその下のコンテンツを再描画する必要があることを認識していないことを意味します (これに関する限り、これらは不透明であるため)。

JComponent#setOpaquefalse 値を渡して、パネルも透明に設定してみてください。

次に、camickr が提供するリンクをお読みください。

于 2013-02-03T21:45:42.377 に答える