操作不会更改代码

dsekswqp  于 2021-06-29  发布在  Java
关注(0)|答案(1)|浏览(274)

我将在java教程中介绍如何在eclipse中使用windowbuilder来更改正在构建的gui的一些代码。
它说要使用鼠标右键单击我想要更改的按钮,然后在eclipse的弹出菜单中转到:

Add event handler -> action -> actionPerformed

在我的代码中带我到这个函数:

private JTextField txtGuess;
private JLabel lblOutput;
private int theNumber;
public void checkGuess() {
    String guessText = txtGuess.getText();
    String message = "";
    int guess = Integer.parseInt(guessText);
    if (guess < theNumber)
        message = guess + " is too low. Try again.";
    else if (guess > theNumber)
        message = guess + " is too high. Try again.";
    else {  
        message = guess + " is correct. Let's play again!";
        newGame();
    }
    lblOutput.setText(message);
}

根据这本书,它应该将此代码添加到此部分,但它没有:

txtGuess.addActionListener(new ActionListener() {
          public void actionPerformed(ActionEvent e) {
              checkGuess();
          }
      });

如何在eclipse中修复windowbuilder,使其在需要时自动添加代码?或者我做错了什么?

wgx48brx

wgx48brx1#

那是因为 txtGuess 变量超出了方法的范围,并且未初始化。因此,他不能对其调用任何方法,也不能在其内部创建新的匿名侦听器类。编译器可以感知对 txtGuess.addActionListener 将导致 NullPointer ,或者根本找不到方法范围内的变量(取决于这些框架的工作方式)。
请尝试以下操作:

public void checkGuess() 
{   
   /*create or reference it. But must be initialized*/
    JTextField txtGuess = new JTextField();
    //or
    JTextField txtGuess = yourTextfield;

    //...
 }

现在再次尝试从eclipse声明侦听器。

相关问题