Непонятный java.lang.NullPointerException

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. Есть диалоговое окно, в нем 3 радиобаттона, которые объявляются в теле класса диалового окна, а инициализируются в конструкторе. Есть поле целочисленного типа kindOfStep. В зависимости от изначального значения поля (0, 1 или 2) по по умолчанию отмечается соответствующий радиобаттон. Если мы отмечаем другой радиобаттон, устанавливается соответствующее значение kindOfStep. Но диалоговое окно не запускается, так как вылетает экзепшн java.lang.NullPointerException Почему это и что исправить?
import ...;
 
public class ChangeStepOfDisplacement extends JDialog {
 
    /**
     * Create the dialog.
     */
    
    private static int kindOfStep = MainFrame.kindOfStep;  //Поле kindOfStep 
    
    private void TypeOfStep() {  //Диалоговое окно
        if (kindOfStep == 0)
            rdbtnNewRadioButton.setSelected(true);   //Именно то место, на которое ругается эксепшн
        else if (kindOfStep == 1)
            radioButton.setSelected(true);
        else if (kindOfStep == 2)
            radioButton_1.setSelected(true);
    }
    
    public ChangeStepOfDisplacement() { //Конструктор
        TypeOfStep();   //Вызов функции TypeOfStep()

        rdbtnNewRadioButton = new JRadioButton("\u041B\u0456\u043D\u0456\u0439\u043D\u0435 \u0440\u0456\u0432\u043D\u044F\u043D\u043D\u044F");
        rdbtnNewRadioButton.addItemListener(new ItemListener() {
            public void itemStateChanged(ItemEvent arg0) {
                kindOfStep = 0;
            }
        });
        rdbtnNewRadioButton.setFont(new Font("Verdana", Font.PLAIN, 12));
 
        buttonGroup.add(rdbtnNewRadioButton);
        
        radioButton = new JRadioButton("\u041D\u0435\u043B\u0456\u043D\u0456\u0439\u043D\u0435 \u0440\u0456\u0432\u043D\u044F\u043D\u043D\u044F");
        radioButton.addItemListener(new ItemListener() {
            public void itemStateChanged(ItemEvent e) {
                kindOfStep = 1;
            }
        });
        
        buttonGroup.add(radioButton);

        radioButton_1 = new JRadioButton("\u0413\u0430\u0441\u043B\u043E");
        radioButton_1.addItemListener(new ItemListener() {
            public void itemStateChanged(ItemEvent e) {
                kindOfStep = 2;
            }
        });
        
        buttonGroup.add(radioButton_1);
        
    }
    private final ButtonGroup buttonGroup = new ButtonGroup();
    private JRadioButton rdbtnNewRadioButton;  //объявление радиобаттонов
    private JRadioButton radioButton;
    private JRadioButton radioButton_1;
    
}

Решение задачи: «Непонятный java.lang.NullPointerException»

textual
Листинг программы
import ...;
public class MainPanel extends JPanel {  //Панель
    private static Scrambler scrambler = new Scrambler();
    private JTextField textField;
    
    private void setDoing(boolean toShifr, boolean toRozshifr, boolean toDeshifr) {
        
        if (toDeshifr == true) {
            spinner.setVisible(false);  //Спиннер прячется
        }
        else {
            spinner.setVisible(true);   //Спиннер появляется
        }
    }
    
    public MainPanel() {
        
        JRadioButton radioButton = new JRadioButton("\u0428\u0438\u0444\u0440\u0443\u0432\u0430\u043D\u043D\u044F");
        radioButton.addItemListener(new ItemListener() {
            public void itemStateChanged(ItemEvent arg0) {
                setDoing(true, false, false);
            }
        });
        
        add(radioButton);
        buttonGroup.add(radioButton);
 
        JRadioButton radioButton_1 = new JRadioButton("\u0420\u043E\u0437\u0448\u0438\u0444\u0440\u0443\u0432\u0430\u043D\u043D\u044F");
        radioButton_1.addItemListener(new ItemListener() {
            public void itemStateChanged(ItemEvent e) {
                setDoing(false, true, false);
            }
        });
        
        add(radioButton_1);
        buttonGroup.add(radioButton_1);
        
        JRadioButton radioButton_2 = new JRadioButton("\u0414\u0435\u0448\u0438\u0444\u0440\u0443\u0432\u0430\u043D\u043D\u044F");
        radioButton_2.addItemListener(new ItemListener() {
            public void itemStateChanged(ItemEvent e) {
                setDoing(false, false, true);
            }
        });
        
        add(radioButton_2);
        buttonGroup.add(radioButton_2);
        
        
        label_2 = new JLabel("\u041A\u043B\u044E\u0447");
        add(label_2);
        
        spinner = new JSpinner();
        add(spinner);
    }
    private final ButtonGroup buttonGroup = new ButtonGroup();
    private JLabel label_2;
    private JLabel label_3;
    private JSpinner spinner;  //Спиннер здесь, он не инициализирован за пределами конструктора, на работает. Почему так?
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.2 из 5