我试图通过单击单选按钮来更改背景颜色,但是第二个单选按钮," bt2"编译器找不到变量。
我不断收到此错误消息:
"cannot find symbol bt1" in the e.getSource()==bt1
这是我的代码:
public class ColorChooser extends JFrame implements ActionListener {
public static void main(String[] args) {
new ColorChooser();
}
public ColorChooser() {
super("ColorChooser");
Container content = getContentPane();
content.setBackground(Color.white);
content.setLayout(new FlowLayout());
JRadioButton bt1 = new JRadioButton("Red");
JRadioButton bt2 = new JRadioButton("Yellow");
bt1.addActionListener(this);
bt2.addActionListener(this);
content.add(bt1);
content.add(bt2);
setSize(300, 100);
setVisible(true);
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == bt1)
getContentPane().setBackground(Color.RED);
else
getContentPane().setBackground(Color.YELLOW);
}
}
答案 0 :(得分:2)
您应该将bt1声明为实例变量 像那样
{{1}}
答案 1 :(得分:1)
在构造函数之外声明bt1
JRadioButton bt1;
然后初始化内部构造函数
bt1 = new JRadioButton("Red");
你的代码中的问题是bt1在构造函数之外是不可见的。它被声明为块变量。你应该声明为实例varible [在类区域]。 示例
public class ColorChooser extends JFrame implements ActionListener {
JRadioButton bt1;//declare
public static void main(String[] args) {
new ColorChooser();
}
public ColorChooser() {
super("ColorChooser");
Container content = getContentPane();
content.setBackground(Color.white);
content.setLayout(new FlowLayout());
bt1 = new JRadioButton("Red");//initializing
JRadioButton bt2 = new JRadioButton("Yellow");
bt1.addActionListener(this);
bt2.addActionListener(this);
content.add(bt1);
content.add(bt2);
setSize(300, 100);
setVisible(true);
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == bt1) {
getContentPane().setBackground(Color.RED);
} else {
getContentPane().setBackground(Color.YELLOW);
}
}
}