2015-08-14 2 views
0

У меня есть JRadioButtonMenuItem в моей программе, которую я могу проверить, чтобы сделать некоторые действия, поэтому мне нужно получить состояние этого предмета (CHECKED или UNCHECKED).Как получить состояние JRadioButtonMenuItem в другом классе?

Так что, когда я пытаюсь получить состояние с помощью метода isSelected() в том же классе, где объявлен JRadioButtonMenuItem, он работает.

Но когда я пытаюсь получить его в другом классе, благодаря получателя я получаю 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) 

Каждый имеет идея?

+2

Почему itemJour объявлен как статический? Почему getItemJour() объявлен как статический? Если это действительно статично, вы должны вызвать его, используя MainVue.getItemJour() – FredK

+0

Я действительно пробовал с MainVue.getItemJour(), но я получаю ту же ошибку. Спасибо за ваш ответ, хотя @FredK – DeveloppeurDuTurfu

ответ

2

ну, вы на самом деле не создаете экземпляр JRadioButton. Это вызывает исключение Null Pointer.

Кроме того, возможно, более эффективный способ проверки состояния памяти будет возвращать логическое значение, полученное из isSelected.

+1

Справа. Удостоверьтесь, что 'itemJour' в вашем классе' MainVue' фактически получает тот, который используется вашим приложением. Вероятно, что вы _are_ инициализируете 'JRadioButtonMenuItem' в другом месте, но на самом деле вы не назначаете его' itemJour' в классе. –

+0

Спасибо за ответы, ребята, но я не уверен, чтобы понять, что вы имеете в виду. Если бы у вас был пример для совместного использования, это было бы очень полезно, так как я довольно новичок в Java :) – DeveloppeurDuTurfu

+1

@DeveloppeurDuTurfu, если вы никогда не создадите новый экземпляр JRadioButton, значение по умолчанию вашей ссылки будет равно null. Вы должны написать что-то вроде этого: itemJour = new JRadioButton(); – andrewdleach

Смежные вопросы