Непонятный 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; //Спиннер здесь, он не инициализирован за пределами конструктора, на работает. Почему так?
}