Java 如何在另一个类中获取JRadioButtonMenuItem的状态?

Java 如何在另一个类中获取JRadioButtonMenuItem的状态?,java,nullpointerexception,jradiobutton,Java,Nullpointerexception,Jradiobutton,我的程序中有一个JRadioButtonMenuItem,我可以检查它以执行一些操作,因此我需要获取该项的状态(已选中或未选中) 因此,当我尝试在声明JRadioButtonMenuItem的同一类中使用isSelected()方法获取状态时,它是有效的 但是,当我尝试在另一个类中获得它时,多亏了一个getter,我得到了java.lang.NullPointerException 下面是我的JRadioButtonMenuItem所在的类: MainVue.java: public class

我的程序中有一个JRadioButtonMenuItem,我可以检查它以执行一些操作,因此我需要获取该项的状态(
已选中
未选中

因此,当我尝试在声明
JRadioButtonMenuItem
的同一类中使用
isSelected()
方法获取状态时,它是有效的

但是,当我尝试在另一个类中获得它时,多亏了一个getter,我得到了java.lang.NullPointerException

下面是我的JRadioButtonMenuItem所在的类:

MainVue.java

public class MainVue extends JFrame implements ActionListener {   
  private static  JRadioButtonMenuItem itemJour;

    this.itemJour = new JRadioButtonMenuItem("Jour");
    public static  JRadioButtonMenuItem getItemJour() {

    return itemJour;

 }
}
然后,这里是我想要获取项的实际状态的类

ModeleListePush.java

public class ModeleListePush extends AbstractTableModel {
 private MainVue mv;
 private  boolean jour = false;
public ModeleListePush(Modele modele, Controleur controleur) {
    super();
    this.modele = modele;
    this.controleur = controleur;

    jour = MainVue.getItemJour().isSelected();
    System.out.println(jour);

    }
   }
当我执行代码时,我会遇到以下问题:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at views.MainVue.getItemJour(MainVue.java:372)
at modele.ModeleListePush.<init>(ModeleListePush.java:30) 
线程“AWT-EventQueue-0”java.lang.NullPointerException中的异常 查看views.MainVue.getItemJour(MainVue.java:372) 在modele.ModeleListePush。(ModeleListePush.java:30)
有人有主意吗

实际上,您从未实例化过JRadioButton。这会导致空指针异常


此外,检查状态的内存效率更高的方法可能是返回从
isSelected

右侧派生的布尔值。确保类
MainVue
中的
itemJour
实际设置为应用程序正在使用的。很可能您在其他地方初始化了一个
JRadioButtonMenuItem
,但实际上并没有将其分配给类中的
itemJour
。感谢您的回答,伙计们,但我不确定您的意思。如果您有一个示例可以分享,这将非常有帮助,因为我对Java非常陌生:)@developperduturfu如果您从未创建JRadioButton的新实例,那么引用的默认值将为null。您必须这样编写:itemJour=newjradiobutton()@安德烈·里奇其实是我写的,我忘了在我的问题里写这句话了,哈哈。所以问题来自其他地方,我猜为什么itemJour声明为静态的?为什么getItemJour()声明为静态?如果它确实是静态的,那么应该使用MainVue.getItemJour()调用它。实际上,我也使用MainVue.getItemJour()调用了它,但我得到了相同的错误。谢谢你的回答@FredK