我得到了另一个问题,该问题将转到“Java noobs”类别
这次我的问题如下:
我需要人能够单击按钮,它会显示 JOptionPane。但是,一旦我单击按钮,它就会给我例外。
我的按钮:
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/getter,在动作监听器中,我放入设置它们的方法。
使用以下 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());
}