摇摆:悬停鼠标悬停在半透明的JPanel单选按钮标签(Swing: hovering mouse o

2019-09-19 14:18发布

在我的问题我有一个不透明的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的文本的颜色会改变当鼠标悬停,和鼠标离开,文字被在不同的地方,如下图中重新绘制重置为原单颜色: -

如果需要的话我会后的代码了。 我认为这是有在这两种情况下相同的问题。

Answer 1:

如果你把这些画文物可能是因为这是用于背景透明色。 JComponents不支持透明的颜色作为背景颜色。 这里是一个很好的文章由@camickr解释在细节问题,还提供了一种替代解决方案。



Answer 2:

你的结果并不意外,因为默认Graphics2D 复合材料AlphaComposite.SRC_OVER 。 如果你想要一个不同的结果,你需要使用不同的模式; AlphaComposite.SRC ,例如,是添加剂。 相关的例子可以找到这里 , 这里和这里 。



Answer 3:

代替使用红色,绿色,蓝色,和α例如:的setBackground(新的色彩(236,233,216,220)); 采用的setBackground(新颜色(236233216)); 这是红,绿,蓝。 这将很好地工作。



文章来源: Swing: hovering mouse over radio button label on translucent JPanel