使用FXML将文本设置为textfield JavaFX

使用FXML将文本设置为textfield JavaFX,java,javafx,javafx-2,scenebuilder,Java,Javafx,Javafx 2,Scenebuilder,我有那个java类。它在JavaClassContainer中初始化。问题是它返回错误:java.lang.NullPointerException。否将文本设置为文本字段 import gnu.io.CommPortIdentifier; import gnu.io.SerialPort; import gnu.io.SerialPortEvent; import gnu.io.SerialPortEventListener; import java.io.BufferedReader;

我有那个java类。它在
JavaClassContainer
中初始化。问题是它返回错误:
java.lang.NullPointerException
。否将文本设置为
文本字段

import gnu.io.CommPortIdentifier; 
import gnu.io.SerialPort;
import gnu.io.SerialPortEvent; 
import gnu.io.SerialPortEventListener; 
import java.io.BufferedReader;
import java.io.InputStreamReader; 
import java.io.OutputStream; 
import java.util.Enumeration;
import javafx.fxml.FXML;
import javafx.scene.control.TextField;

public class RXTX implements SerialPortEventListener{

    @FXML private static TextField carlos;

   // MORE CODE
@FXML
    private void GetData(String Data) {
            if(Data.contains("Temperature")){
                carlos.setText("Hola");
            }
        }
}
例如,如果我放一个System.Out.Println,它就会工作。因此,问题在于
GetData
类中的
setText
TextField
no

好的,我也会把主控制器:

public class FXMLDocumentController implements Initializable {

    @FXML
    private Label label;

    @FXML
    private void handleButtonAction(ActionEvent event) {
        System.out.println("You clicked me!");
        label.setText("Hello World!");
    }

    @Override
    public void initialize(URL url, ResourceBundle rb) {
        RXTX main = new RXTX();
        main.initialize();
        Thread t=new Thread() {
            public void run() {
                //the following line will keep this app alive for 1000 seconds,
                //waiting for events to occur and responding to them (printing incoming messages to console).
                try {Thread.sleep(1000000);} catch (InterruptedException ie) {}
            }
        };
        t.start();
        System.out.println("Started");
    }    

}

那么-是什么让你相信你的RXTX.carlos被注入了价值?您自己创建实例,因此您有责任为静态字段设置一个值

我认为你应该:

  • 了解如何在IDE中使用调试器
  • 了解有关FXML工作原理的更多信息

  • 可以添加完整的异常堆栈跟踪吗?它提供了行号,有助于理解NullPointerException中的空值。在if中如何实现这一点?您说过您有
    java.lang.NullPointerException
    。通常它是堆栈跟踪的一部分,比如:不,它只是给出那个。没别的了!我认为在clase中运行setText是个问题。我找到了其他类似的帖子,但没有找到解决方案。在按钮操作中添加测试输出:
    System.out.println(“Data=“+Data+”carlos=“+carlos”)以查看空值。还有,为什么卡洛斯是静态的?