我想删除我的JRadioButton的背景但仍然保持相同的外观&感觉。 图像会自行说明:
当我执行此代码时:
JRadioButton myJRadioButton = new JRadioButton("My JRadioButton");
add(myJRadioButton);
我明白了:
当我用这段代码运行它时:
JRadioButton myJRadioButton = new JRadioButton("My JRadioButton");
myJRadioButton.setForeground(Color.white); //To see it on the black background.
myJRadioButton.setOpaque(false);
add(myJRadioButton);
我明白了:
我有一个类似于"明星"而不是一个伟大而美丽的圈子。 而我想要的是保留第一张图片的伟大而美丽的圆圈,但没有根据它的默认背景。
答案 0 :(得分:2)
文件说
public void setOpaque(boolean isOpaque)
如果为true,则组件绘制其边界内的每个像素。除此以外, 组件可能无法绘制部分或全部像素,从而允许 显示底层像素。此属性的默认值 对于JComponent,它是假的。但是,此属性的默认值 在大多数标准JComponent子类(如JButton和JTree)上 依赖于外观。
它说的全部。
答案 1 :(得分:1)
您可以创建一个扩展JRadioButton的类,并在类中添加所有属性:
setOpaque(false);
setContentAreaFilled(false);
setBorderPainted(false);
setForeground(Color.white);
setBackground(Color.BLACK);
public class Sample extends JPanel {
public Sample() {
super(new BorderLayout());
setBackground(Color.BLACK);
TransparentButton testButton = new TransparentButton("hello");
testButton.setSelected(true);
add(testButton, BorderLayout.LINE_START);
setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20));
}
private static void createAndShowGUI() {
JFrame frame = new JFrame("Hello Word demo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JComponent newContentPane = new Sample();
newContentPane.setOpaque(true);
frame.setContentPane(newContentPane);
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
createAndShowGUI();
}
});
}
class TransparentButton extends JRadioButton {
public TransparentButton(String string) {
super(string);
setOpaque(false);
setContentAreaFilled(false);
setBorderPainted(false);
setForeground(Color.white);
setBackground(Color.BLACK);
}
}
}