Java 在最终JRadioButton上使用.setText

Java 在最终JRadioButton上使用.setText,java,jradiobutton,Java,Jradiobutton,当JRadioButton设置为final时,如何更改其标签 这是来自构造函数的一段代码,其中单选按钮被初始化,当按下检查按钮时,所选单选按钮的值被发送到验证用户答案的方法: final JRadioButton ANSWER1 = new JRadioButton("Empty 1"); final JRadioButton ANSWER2 = new JRadioButton("Empty 2"); final JRadioButton ANSWER3 = new JRadioButton(

当JRadioButton设置为final时,如何更改其标签

这是来自构造函数的一段代码,其中单选按钮被初始化,当按下检查按钮时,所选单选按钮的值被发送到验证用户答案的方法:

final JRadioButton ANSWER1 = new JRadioButton("Empty 1");
final JRadioButton ANSWER2 = new JRadioButton("Empty 2");
final JRadioButton ANSWER3 = new JRadioButton("Empty 3");
final JRadioButton ANSWER4 = new JRadioButton("Empty 4");

JButton CHECK = new JButton("Check");
CHECK.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent e) {
        if (ANSWER1.isSelected()){
            qAnswered(1);
        }
        if (ANSWER2.isSelected()){
            qAnswered(2);
        }
        if (ANSWER3.isSelected()){
            qAnswered(3);
        }
        if (ANSWER4.isSelected()){
            qAnswered(4);
        }

    }   

});
选择“下一个问题”按钮时,单选按钮的文本标签需要更改为下一组答案。不幸的是,由于单选按钮设置为final,这会导致应用程序崩溃


如何继续?

变量的
final
关键字意味着该变量只能初始化一次,但这并不意味着该对象中的字段不能更改。即使
JRadioButton
引用是
final
ANSWER4.setText()
也不会抛出任何与final相关的错误

if (ANSWER1.isSelected()){
    qAnswered(1);
    ANSWER1.setText("New Text 1"); // This will work
}
有关
最终
变量的更多信息,请参阅(重点)

变量可以声明为final。最后一个变量只能指定一次。声明变量final可以作为有用的文档,它的值不会改变,并且可以帮助避免编程错误

如果将最终变量赋值给,则为编译时错误,除非在赋值之前明确未赋值(§16)

空final是其声明缺少初始值设定项的final变量

一旦分配了最终变量,它总是包含相同的值。如果最后一个变量包含对对象的引用,则对象的状态可以通过对该对象的操作来更改,但该变量将始终引用同一对象。


变量的
final
关键字意味着该变量只能初始化一次,但这并不意味着该对象中的字段不能更改。即使
JRadioButton
引用是
final
ANSWER4.setText()
也不会抛出任何与final相关的错误

if (ANSWER1.isSelected()){
    qAnswered(1);
    ANSWER1.setText("New Text 1"); // This will work
}
有关
最终
变量的更多信息,请参阅(重点)

变量可以声明为final。最后一个变量只能指定一次。声明变量final可以作为有用的文档,它的值不会改变,并且可以帮助避免编程错误

如果将最终变量赋值给,则为编译时错误,除非在赋值之前明确未赋值(§16)

空final是其声明缺少初始值设定项的final变量

一旦分配了最终变量,它总是包含相同的值。如果最后一个变量包含对对象的引用,则对象的状态可以通过对该对象的操作来更改,但该变量将始终引用同一对象。


变量的
final
关键字意味着该变量只能初始化一次,但这并不意味着该对象中的字段不能更改。即使
JRadioButton
引用是
final
ANSWER4.setText()
也不会抛出任何与final相关的错误

if (ANSWER1.isSelected()){
    qAnswered(1);
    ANSWER1.setText("New Text 1"); // This will work
}
有关
最终
变量的更多信息,请参阅(重点)

变量可以声明为final。最后一个变量只能指定一次。声明变量final可以作为有用的文档,它的值不会改变,并且可以帮助避免编程错误

如果将最终变量赋值给,则为编译时错误,除非在赋值之前明确未赋值(§16)

空final是其声明缺少初始值设定项的final变量

一旦分配了最终变量,它总是包含相同的值。如果最后一个变量包含对对象的引用,则对象的状态可以通过对该对象的操作来更改,但该变量将始终引用同一对象。


变量的
final
关键字意味着该变量只能初始化一次,但这并不意味着该对象中的字段不能更改。即使
JRadioButton
引用是
final
ANSWER4.setText()
也不会抛出任何与final相关的错误

if (ANSWER1.isSelected()){
    qAnswered(1);
    ANSWER1.setText("New Text 1"); // This will work
}
有关
最终
变量的更多信息,请参阅(重点)

变量可以声明为final。最后一个变量只能指定一次。声明变量final可以作为有用的文档,它的值不会改变,并且可以帮助避免编程错误

如果将最终变量赋值给,则为编译时错误,除非在赋值之前明确未赋值(§16)

空final是其声明缺少初始值设定项的final变量

一旦分配了最终变量,它总是包含相同的值。如果最后一个变量包含对对象的引用,则对象的状态可以通过对该对象的操作来更改,但该变量将始终引用同一对象。


谢谢你的回复。当调用ANSWER1.setText(“废话…);”时,我们实际上得到了一个空指针异常。你能帮个忙吗?我不明白为什么它应该抛出一个NPE,除非在执行
ANSWER1.setText()
时,
JRadioButton
没有初始化。我们也不知道,每当执行nextQuestion()调用的方法包含ANSWER1.setText…可能是您在
nextQuestion()中访问的
ANSWER1
方法未初始化?感谢您的响应。当调用ANSWER1.setText(“废话…);”时,我们实际上得到了一个空指针异常。你能帮个忙吗?我不明白为什么它应该抛出一个NPE,除非在执行
ANSWER1.setText()
时,
JRadioButton
没有初始化。我们也不这样认为,它在任何时候都会发生