【发布时间】:2018-08-05 23:05:58
【问题描述】:
我正在使用我的 java fx 应用程序从串行端口写入/读取。一切都很好,直到我从端口读取数据。收到数据后,我将其传递给位于控制器中的方法进行处理。将数据传递给控制器中的方法后,我试图将其分配到我的文本框中,但它会引发 NPE 异常。我什至尝试使用 Platform.runLater() 但仍然给了我相同的 NPE 消息。请问有什么帮助吗?
//Serial data reader
@Override
public void serialEvent(SerialPortEvent event) {
if (event.getEventType() != SerialPort.LISTENING_EVENT_DATA_RECEIVED)
return;
packet = event.getReceivedData();
// Also tried this myController.processData(packet); Still NPE
Platform.runLater(()->
{
settingsController.processData(packet);
});
}
//The method in myController
@FXML
private JFXTextField dataTextField;
public void processData(int[] packet) {
dataTextField.textProperty().setValue(String.valueOf(packet[2])); //Here it throws NPE due to dataTextField
//dataTextField.textProperty().setValue(String.valueOf(5)); Also tried a dummy value to find out if it is text field or the packet data. I confirmed it is NPE of dataTextField
//I also tried this .Still the NPE. Also tried with combobox. so no hope
Platform.runLater(()->
{
dataTextField.textProperty().setValue(String.valueOf(packet[2]));
});
}
【问题讨论】:
-
请提供一个minimal reproducible example 来说明问题。
-
有人将此标记为重复。这不是一回事。在 public void processData(int[] packet){ dataTextField.setText("test") } // 这工作正常,但它不适用于从端口读取返回的数据。
-
代码有问题,您没有显示,正如我几个小时前已经建议的那样;)
标签: java javafx serial-port javafx-8