6

私の問題では、不透明な JPanel と、最初の JPanel の上にある半透明 (半透明) の別の JPanel があります。上部の JPanel にラジオ ボタンを追加したとき。問題は、各ラジオ ボタンのラベルの領域にマウスを入力するたびに (およびマウスをラベルから離すたびに)、どんどん暗くなっていくということです。

package trial;

import java.awt.Color;
import javax.swing.ButtonGroup;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JRadioButton;

public class Test {

public static void main(String arg[]){
    JFrame rootframe = new JFrame("Test panel");
    rootframe.setSize(800, 550);
    rootframe.setExtendedState(JFrame.MAXIMIZED_BOTH);

    JPanel basePanel = new JPanel(); //fills rootFrame
    basePanel.setOpaque(true);
    basePanel.setBackground(Color.yellow );     

    JPanel panelContainingRadioButtons = new JPanel();//wraps radio buttons
    panelContainingRadioButtons.setOpaque(true);
    panelContainingRadioButtons.setBackground(new Color(0,0,0,100) );

    ButtonGroup buttonGroup1 = new ButtonGroup();

    JRadioButton jRadioButton1 = new JRadioButton();
    jRadioButton1.setText("Text A...............................");
    jRadioButton1.setOpaque(false);
    jRadioButton1.setForeground( Color.white);
    buttonGroup1.add(jRadioButton1);

    JRadioButton jRadioButton2 = new JRadioButton();
    jRadioButton2.setOpaque(false);
    jRadioButton2.setForeground( Color.white);
    buttonGroup1.add(jRadioButton2);
    jRadioButton2.setText("Text B.......................");

    JRadioButton jRadioButton3 = new JRadioButton();
    jRadioButton3.setOpaque(false);
    jRadioButton3.setForeground( Color.white);
    buttonGroup1.add(jRadioButton3);
    jRadioButton3.setText("Text C................................");

    panelContainingRadioButtons.add(jRadioButton1);
    panelContainingRadioButtons.add(jRadioButton2);
    panelContainingRadioButtons.add(jRadioButton3);

    basePanel.add(panelContainingRadioButtons);

    rootframe.add(basePanel);
    rootframe.setVisible(true);

}
}

これはラジオ ボタンの問題ではないと思います。別の機会に、同じ条件下で、JLabel をトップ JPanel に追加し、リスナーをトップ パネルに追加して、jLabel のテキストの色がマウスがホバーされると変更され、マウスが終了すると元の色にリセットされ、テキストは下の画像のように別の場所に再描画されます:-

http://s13.postimage.org/6yn3cw48n/Untitled.png

必要に応じて、そのコードも投稿します。どちらの場合にも同じ問題があると思います。

4

3 に答える 3

8

背景に使用される透明な色が原因で、これらのペイント アーティファクトが発生する可能性があります。JComponents は、透明色を背景色としてサポートしていません。問題を詳細に説明し、代替ソリューションも提供する @camickr による優れた記事を次に示します。

于 2012-07-17T03:50:11.323 に答える
4

Graphics2D デフォルトのコンポジットはであるため、結果は予期しないものではありませんAlphaComposite.SRC_OVER。別の結果が必要な場合は、別のモードを使用する必要があります。AlphaComposite.SRCたとえば、 は加法的ではありません。関連する例は、ここここ、およびここにあります。

于 2012-07-17T03:50:30.933 に答える
1

赤、緑、青、およびアルファを使用する代わりに、例: setBackground(new Color(236, 233, 216, 220)); setBackground(new Color(236,233,216)); を使用します。赤、緑、青です。それは完全に機能します。

于 2013-02-26T11:08:11.593 に答える