example ejemplos descargar java javafx javafx-2 javafx-8

java - ejemplos - Platform.runLater Issue-Delay Execution



javafx netbeans (1)

Tenga en cuenta que el botón onAction se onAction en el subproceso JavaFX, por lo tanto, está deteniendo eficazmente el subproceso de UI durante 5 segundos. Cuando el hilo de UI no se congela al final de estos cinco segundos, ambos cambios se aplican sucesivamente, por lo que termina viendo el segundo.

Puede solucionar esto ejecutando todo el código anterior en un nuevo hilo:

Button button = new Button(); button.setOnAction(event -> { Thread t = new Thread(() -> { Platform.runLater(() -> field.setText("START")); try { Thread.sleep(5000); } catch (InterruptedException ex) { Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex); } Platform.runLater(() -> field.setText("END")); }); t.start(); });

Button button = new Button("Show Text"); button.setOnAction(new EventHandler<ActionEvent>(){ @Override public void handle(ActionEvent event) { Platform.runLater(new Runnable(){ @Override public void run() { field.setText("START"); } }); try { Thread.sleep(5000); } catch (InterruptedException ex) { Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex); } Platform.runLater(new Runnable(){ @Override public void run() { field.setText("END"); } }); } });

Después de ejecutar el código anterior, field.setText("START") no se ejecuta, quiero decir que textfield no configuró su texto en "START", ¿POR QUÉ? ¿Cómo resolver esto?