在特定情况下,如何使JRadioButton透明?

我的意志

我有几个JRadioButton:rb1,rb2; 包含在透明的JPanel p1中,而p1包含在一个名为mainPanel的彩色面板中。我也想使这些JRadioButton透明,这就是我要做的:

在mainPanel中: mainPanel.setBackground(Color.RED);

在p1中: p1.setBackground(new Color(0,0,0,0));

并在rb1和rb2中:

rb1.setOpaque(false);
        rb1.setContentAreaFilled(false);
        rb1.setBorderPainted(false);
        rb2.setOpaque(false);
        rb2.setContentAreaFilled(false);
        rb2.setBorderPainted(false);

如果在mainPanel中包含rb1和rb2或p1不是透明的JPanel,也可以,但是在我的情况下,结果不是我期望的: 结果

我该如何解决这个问题?提前致谢!

卢卡斯·罗特(Lukas Rotter)

您看到的奇怪的绘画伪像是由以下原因引起的:

p1.setBackground(new Color(0,0,0,0));

这样,将不会通知父容器清除其背景并重新绘制。因此,如果您希望面板完全透明,请setOpaque(false)改为使用您还只需要在单选按钮上调用此方法,就无需进行其他操作。

setOpaque会通知父级重新粉刷,但是如果您要使用半透明面板,则必须覆盖paintComponentsuper.paintComponent(Graphics)手动调用

在此处输入图片说明


import java.awt.Color;
import java.awt.EventQueue;

import javax.swing.ButtonGroup;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JRadioButton;

public class Example {

    public void createAndShowGUI() {    
        JRadioButton encryptButton = new JRadioButton("Encrypt");
        encryptButton.setOpaque(false);

        JRadioButton decryptButton = new JRadioButton("Decrypt");
        decryptButton.setOpaque(false);

        ButtonGroup group = new ButtonGroup();
        group.add(encryptButton);
        group.add(decryptButton);

        JPanel subPanel = new JPanel();
        subPanel.setOpaque(false);
        subPanel.add(encryptButton);
        subPanel.add(decryptButton);

        JPanel mainPanel = new JPanel();
        mainPanel.setBackground(Color.CYAN);
        mainPanel.add(subPanel);

        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setContentPane(mainPanel);
        frame.pack();
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                new Example().createAndShowGUI();
            }
        });
    }

}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在特定情况下如何抑制声纳法则?

在特定情况下如何使用高阶结构

在特定情况下如何合并数据框?

如何在特定情况下捕获OnTouchEvent?

特定情况下的时序图

特定情况下的开关盒

在特定情况下替换字符

特定情况下的分段错误

如何在特定情况下使用JavaScript加载特定的CSS文件?

在这种特定情况下,如何使用 javascript 删除 HTML 元素

在特定情况下,实体框架4.0死锁而不是块。如何解决这个问题?

后缀运算符在这种特定情况下(JAVA)如何工作?

在这种特定情况下,如何使用流获取列表列表?

jQuery:在这种特定情况下,如何恢复点击事件的初始状态?

Three.js:在特定情况下如何添加autoRotate?

在这种特定情况下,如何阻止Eclipse缩进多余的空格?

在特定情况下如何在python中舍入任何数字

如何在特定情况下的Django注册自定义字段中使required = false

在我的特定情况下,如何在C#中选择正确的循环语句?

在这种特定情况下,如何设计类以共享其方法声明?

在特定情况下如何避免内存不足问题

Jenkins脚本化管道:如何在此特定情况下应用@NonCPS注释

在这种特定情况下,如何修复损坏的包装?

如何在整个游戏的特定情况下使用玩家的输入

如何在特定情况下将while循环转换为递归方法

如何在我的特定情况下形成嵌套数组的数组?

htaccess:仅在特定情况下添加斜杠

在特定情况下未绘制视图

选择器在特定情况下的独占CSS