title: Run later doesn't work JavaFX
body: <p>I'm doing a Platform.RunLater to update a TextField. Here you can see the code:</p>
  
  <pre><code>public class FXMLDocumentController implements Initializable {
  
      @FXML
      private TextField carlos;
      RXTX main = new RXTX();
  
      public void Test(){
      Platform.runLater(new Runnable() {
                      @Override public void run() {
                          carlos.setText("Test");    
                    }
                  });
  
      }
  
  
  
      @Override
      public void initialize(URL url, ResourceBundle rb) {
          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");
      }    
  
  }
  </code></pre>
  
  <p>And that:</p>
  
  <pre><code>public class RXTX implements SerialPortEventListener{
  
  
      private String Temperature;
  
          SerialPort serialPort;
          /** The port we're normally going to use. */
      private static final String PORT_NAMES[] = { 
              "COM4" // Windows
      };
      /**
      * A BufferedReader which will be fed by a InputStreamReader 
      * converting the bytes into characters 
      * making the displayed results codepage independent
      */
      private BufferedReader input;
      /** The output stream to the port */
      private OutputStream output;
      /** Milliseconds to block while waiting for port open */
      private static final int TIME_OUT = 2000;
      /** Default bits per second for COM port. */
      private static final int DATA_RATE = 9600;
  
      public void initialize() {
          CommPortIdentifier portId = null;
          Enumeration portEnum = CommPortIdentifier.getPortIdentifiers();
  
          //First, Find an instance of serial port as set in PORT_NAMES.
          while (portEnum.hasMoreElements()) {
              CommPortIdentifier currPortId = (CommPortIdentifier) portEnum.nextElement();
              for (String portName : PORT_NAMES) {
                  if (currPortId.getName().equals(portName)) {
                      portId = currPortId;
                      break;
                  }
              }
          }
          if (portId == null) {
              System.out.println("Could not find COM port.");
              return;
          }
  
          try {
              // open serial port, and use class name for the appName.
              serialPort = (SerialPort) portId.open(this.getClass().getName(),
                      TIME_OUT);
  
              // set port parameters
              serialPort.setSerialPortParams(DATA_RATE,
                      SerialPort.DATABITS_8,
                      SerialPort.STOPBITS_1,
                      SerialPort.PARITY_NONE);
  
              // open the streams
              input = new BufferedReader(new InputStreamReader(serialPort.getInputStream()));
              output = serialPort.getOutputStream();
  
              // add event listeners
              serialPort.addEventListener(this);
              serialPort.notifyOnDataAvailable(true);
          } catch (Exception e) {
              System.err.println(e.toString());
          }
      }
  
      /**
       * This should be called when you stop using the port.
       * This will prevent port locking on platforms like Linux.
       */
      public synchronized void close() {
          if (serialPort != null) {
              serialPort.removeEventListener();
              serialPort.close();
          }
      }
  
      /**
       * Handle an event on the serial port. Read the data and print it.
       */
      public synchronized void serialEvent(SerialPortEvent oEvent) {
          if (oEvent.getEventType() == SerialPortEvent.DATA_AVAILABLE) {
              try {
                  String inputLine=input.readLine();
                  System.out.println(inputLine);
                                  GetData(inputLine);
              } catch (Exception e) {
                  System.err.println(e.toString());
              }
          }
          // Ignore all the other eventTypes, but you should consider the other ones.
      }
  
          @FXML
      private void GetData(String Data) {
  
              if(Data.contains("Temperature")){
                  FXMLDocumentController main = new FXMLDocumentController();
                  main.Test();
              }
  
          }
  }
  </code></pre>
  
  <p>Well, so I doesn't work. It return an error like that: </p>
  
  <blockquote>
    <p>Exception in runnable java.lang.NullPointerException  at
    openpilot.FXMLDocumentController$1.run(FXMLDocumentController.java:35)
      at
    com.sun.javafx.application.PlatformImpl$4$1.run(PlatformImpl.java:182)
      at
    com.sun.javafx.application.PlatformImpl$4$1.run(PlatformImpl.java:179)
      at java.security.AccessController.doPrivileged(Native Method)   at
    com.sun.javafx.application.PlatformImpl$4.run(PlatformImpl.java:179)
      at
    com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:76)
      at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)  at
    com.sun.glass.ui.win.WinApplication.access$100(WinApplication.java:17)
      at
    com.sun.glass.ui.win.WinApplication$3$1.run(WinApplication.java:67)
      at java.lang.Thread.run(Thread.java:744)</p>
  </blockquote>