【问题标题】:Swing: hovering mouse over radio button label on translucent JPanelSwing:将鼠标悬停在半透明 JPanel 上的单选按钮标签上
【发布时间】:2012-07-15 23:11:16
【问题描述】:

在我的问题中,我有一个不透明的 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 上时会发生变化,当鼠标退出时会重置为原始颜色,文本会在不同的地方重新绘制,如下图所示:-

如有必要,我也会发布该代码。我认为这两种情况都存在同样的问题。

【问题讨论】:

    标签: java swing jpanel jradiobutton translucency


    【解决方案1】:

    您可能会因为用于背景的透明颜色而获得这些绘画制品。 JComponents 不支持透明色作为背景色。这是@camickr 的一个很好的article,它详细解释了这个问题并提供了一个替代解决方案。

    【讨论】:

    • 正是我需要的.. 非常感谢先生!
    【解决方案2】:

    您的结果并不意外,因为默认的 Graphics2D compositeAlphaComposite.SRC_OVER。如果您想要不同的结果,则需要使用不同的模式;例如,AlphaComposite.SRC不是加法。相关示例可在hereherehere 中找到。

    【讨论】:

      【解决方案3】:

      而不是使用红色、绿色、蓝色和 alpha 例如:setBackground(new Color(236, 233, 216, 220));使用 setBackground(新颜色(236,233,216));这是红色,绿色,蓝色。它会完美运行。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-07
        相关资源
        最近更新 更多