カテゴリ「Javanoobs」に移動する別の質問がありました。
今回の問題は次のとおりです
。ボタンをクリックできる人が必要で、JOptionPaneが表示されます。ただし、ボタンをクリックすると例外が発生します。
私のJButton:
inputChar = new JButton("Guess Letter");
add(inputChar);
this.add(Box.createVerticalStrut(10));
inputChar.setAlignmentX(Component.CENTER_ALIGNMENT);
inputChar.addActionListener(this);
public void actionPerformed(ActionEvent e) {
String action = e.getActionCommand();
if (action == "Guess Letter"){
gl.getChar();
}
これで、getChar()メソッドは別のクラスにあり、次のようになります。
public String getChar(){
inChar = JOptionPane.showInputDialog("Please enter letter (a-z)");
if (inChar.length() > 1){
JOptionPane.showMessageDialog(null, "Your Input is incorred, please input char", "Input warning", JOptionPane.WARNING_MESSAGE);
}
return inChar;
}
回線上の例外トリガーgl.getChar();
そして例外は次のとおりです:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at Interface.ButtonPanel$1.actionPerformed(ButtonPanel.java:34)
それを修正する方法はありますか?
編集注:
Loagansのヒントでなんとか修正できました。基本的に、GuessedLettersクラスでは、コンストラクターsetter / gettersを設定し、アクションリスナーではそれらを設定するメソッドを設定します。
次のActionListenerで解決される問題:
if (action == "Guess Letter"){
inputChar = JOptionPane.showInputDialog("Please enter letter (a-z)");
if (inputChar.length() > 1){
JOptionPane.showMessageDialog(null, "Your Input is incorred, please input char", "Input warning", JOptionPane.WARNING_MESSAGE);
}else{
GuessedLetters glr = new GuessedLetters(inputChar);
glr.setInChar(inputChar);
//For testing purposes
System.out.println(glr.getInChar());
}