No en el hilo de la aplicación FX en Java
Este tutorial demuestra el error Not on FX application thread
en Java.
el hilo Not on FX application
en Java
El error Not on FX application thread
ocurre cuando intentamos llamar a un método desde un hilo que no es un hilo FX y debe llamarse desde el hilo FX. Esto no fue un problema con las versiones anteriores de JavaFX.
Ocurre con la nueva implementación de JavaFX 8. Este error ocurre al cambiar la interfaz de usuario en diferentes hilos de la aplicación JavaFX.
Aquí hay un ejemplo que arrojará el error No en el hilo de la aplicación FX
.
Thread DemoThreadShow = new Thread(new Runnable() {
@Override
public void run() {
try {
newthread.setStyle("visibility: true");
Thread.sleep(10000);
Thread.interrupted();
} catch (Exception e) {
thread.setText("" + Integer.valueOf(thread.getText()) + 5);
newthread.setStyle("visibility: false");
}
}
});
DemoThreadShow.start();
El código anterior crea un hilo y aplica algunos métodos a ese hilo. Estos métodos son de la aplicación JavaFX.
Al aplicar el método setText
, arrojará el error Exception in thread "Thread-5" java.lang.IllegalStateException: Not on FX application thread; subproceso actual = subproceso-5
.
Se pueden realizar los siguientes cambios en el código para resolver este problema.
-
Para realizar cambios en la interfaz de usuario mientras trabaja en aplicaciones y subprocesos FX, use el siguiente método.
Platform.runLater(() -> { // GUI STUFF }); or : Platform.runLater(new Runnable() { @Override public void run() { // GUI STUFF } });
-
También podemos usar el
Servicio
y laTarea
en lugar delHilo
.Servicio
tiene muchas más funciones queHilo
.Cambiar la interfaz de usuario dentro de la tarea nunca generará el error
No en el hilo de la aplicación FX
. Aquí hay un ejemplo de código del uso deServicio
yTarea
para este propósito.Service New_Service = new Service() { @Override protected Task createTask() { return new Task() { @Override protected Object call() throws Exception { Platform.runLater(() -> { // GUI stuff here }); return null; } }; } }; New_Service.start();
El código anterior es una forma más conveniente que los hilos.
Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.
LinkedIn FacebookArtículo relacionado - Java Thread
- Descripción general de ThreadLocal en Java
- Hilo de demonio en Java
- Mata Thread en Java
- Obtener Thread Id en Java
Artículo relacionado - Java Error
- Arreglar Java fue iniciado por el código de salida devuelto = 1
- Arreglar JAVA_HOME no se puede determinar a partir del error de registro en R
- Arreglar java.io.IOException: No queda espacio en el dispositivo en Java
- Arreglar Java.IO.NotSerializableException en Java
- Arreglar Java.Lang.IllegalStateException de Android: no se pudo ejecutar el método de la actividad
- Arreglar Java.Lang.NoClassDefFoundError: No se pudo inicializar el error de clase