JavaFX TextField 抛出 NullPointerException

标签 java javafx nullpointerexception textfield

这是我第一次使用 JavaFX,我尝试创建一个对整个场景使用react的 KeyListener (KeyTyped),因为我不喜欢总是点击文本字段/区域等。

所以我得到了以下代码:

package view;

import controller.Function;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
import javafx.scene.Node;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.TextField;
import javafx.scene.input.KeyEvent;
import javafx.stage.Stage;

import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.util.ResourceBundle;


public class MainGame implements Initializable {

    public TextField txtText;
    protected String word = "ABC";

    void start(ActionEvent event) throws IOException {
        URL url = new File("src/main/java/view/MainGame.fxml").toURI().toURL();
        Parent MainGame_parent = FXMLLoader.load(url);
        Scene MainGame_scene = new Scene(MainGame_parent);
        Stage primaryStage_stage = (Stage) ((Node) event.getSource()).getScene().getWindow();
        primaryStage_stage.setScene(MainGame_scene);
        primaryStage_stage.show();

        MainGame_scene.addEventFilter(KeyEvent.KEY_TYPED, (KeyEvent ev) -> {
            //System.out.println(Function.decrypt(word, txtText.getText(), ev.getCharacter().charAt(0)));
            //txtText.setText(Function.decrypt(word, txtText.getText(), ev.getCharacter().charAt(0)));
            //Function.won(word, txtText.getText());
        });
    }

    @Override
    public void initialize(URL url, ResourceBundle rb) {
        txtText.setText(Function.encrypt(word));
    }

}

现在,这段代码本身可以工作,只是如果按下某个键,它不会执行任何操作。这三个注释是造成这种情况的原因,但是每当我取消注释一个或多个注释时,它们都会导致 NullPointerException。我已经尝试过打印不同的值。除了 txtText 之外的每个值都有效,这会导致 NullPointerException。

我尝试将它移动到不同的地方,将其放入自己的函数中,将其放入初始化中,而不是在类主体中声明它,而是在函数中声明它,并且我还尝试将 start 方法的其余部分放入构造函数中。遗憾的是这些方法都不起作用。

我不知道该怎么做以及如何解决这个问题。 感谢您的帮助!

最佳答案

您的 TextField txtText 在您尝试使用它之前尚未初始化。你应该这样做

public TextField txtText = new TextField();

而不是

public TextField txtText;

关于JavaFX TextField 抛出 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59601138/

相关文章:

java - Spring 4.3.3 - 不再支持 ParameterizableViewController POST 方法

java - Collectors.toMap 中的 NullPointerException 具有空条目值

带有 Canvas 类的 Java GUI NullPointerException

java - spring 指标中的@Timed 注释

Java Thread.sleep

silverlight - JavaFX 和 Silverlight 的缺点是什么?

java - 从 JFrame 中的 JFXPanel 打开 JavaFX 子对话框

java - 嵌入式 JavaFX、注入(inject) View 和 Dagger 2

java - 为什么我会收到 NullPointerException?

java - 如何让ImageView出现在圆内的随机位置?