getText部分でAWT-EventQueue-0が発生する
Javaのプログラムを勉強中で、テキストフィールドに入力した数字を取得しようとしているのですが、
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
が発生してしまいます。
他の質問サイトにて私の質問と類似した質問に対し「型があっていないため起きている」、といった指摘がなされていたのですが、エラーが発生している68行目でそのようなミスは起きていないようで困っています。デバッガで68行目にブレークポイントを設定してActionEvent型の変数eの内容を確認したところ、入力した値の情報が含まれていることが確認できました。
なぜエラーが起きているのか、またどうすればバグをなくせるのか、ご教授願います。
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import javax.swing.event.*;
public class PrintWindow extends JFrame implements ChangeListener, ActionListener{
JSlider r1Slider, r2Slider;
JTextField r1box, r2box;
public static void main(String args[]){
//タイマーIC 555の周辺部品の値を決めて出力を求める
PrintWindow IC555 = new PrintWindow();
IC555.setLocationRelativeTo(null); //画面中央にセットする
IC555.setVisible(true); //画面に表示する
}
PrintWindow(){
int initRValue = 1; //各値の初期値
setTitle("IC555");
setSize(600, 400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//抵抗R1用のスライダの初期設定
JSlider r1Slider = new JSlider(1, 1000, initRValue); //最小値1, 最大値1000, 初期値1
r1Slider.addChangeListener(this);
//抵抗R1の数値を表示かつ直接入力できるテキストボックス
JTextField r1Box = new JTextField(String.valueOf(initRValue), 5);
r1Box.addActionListener(this);
//抵抗R2用のスライダの初期設定
JSlider r2Slider = new JSlider(1, 1000, 1); //最小値1, 最大値1000, 初期値1
//抵抗R1の数値を表示かつ直接入力できるテキストボックス
JTextField r2Box = new JTextField(String.valueOf(initRValue), 5);
r2Box.addActionListener(this);
//スライダを表示するパネル
JPanel SlidersPanel = new JPanel();
SlidersPanel.add(r1Slider);
SlidersPanel.add(r2Slider);
//テキストボックスを表示するパネル
JPanel BoxPanel = new JPanel();
BoxPanel.add(r1Box);
BoxPanel.add(r2Box);
//各パネルを配置
getContentPane().add(BoxPanel, BorderLayout.SOUTH);
getContentPane().add(SlidersPanel, BorderLayout.BEFORE_FIRST_LINE);
}
//抵抗の値を入力するスライダが移動されたときに呼び出される
public void stateChanged(ChangeEvent e){
//抵抗R1のスライダが移動されたとき、R1のボックスの内容をスライダの値と一致させる
if(e.getSource() == r1Slider){
r1box.setText(Integer.toString(r1Slider.getValue()));
}
}
//抵抗の値を入力するボックスの内容が変更されたとき(Enterが押されたとき)呼び出される
public void actionPerformed(ActionEvent e){
//System.out.println("[DEBUG] actionPerformed function arrived");
System.out.println(r1box.getText());
//System.out.println("[DEBUG] r1 =" + r1box.getText() + "r2 =" + r2box.getText());
/*r1Slider.setValue(Integer.valueOf(r1box.getText()));
r2Slider.setValue(Integer.valueOf(r2box.getText()));*/
}
}