Pregunta

¿Hay una manera de forzar una aplicación JavaFX volver a pintar en sí antes de proceder? Al igual que en la pintura de un panel batiente método (g gráfico) (Podría estar recibiendo las palabras clave mal allí).

Considere el siguiente ejemplo: se escribe una aplicación TicTacToe junto con el AI requerido para un jugador de equipo. ¿Le gustaría mostrar la capacidad de la computadora dos jugadores duque a cabo. Tal vez se pone en una pausa de dos segundos entre el ordenador se enciende para darle afectar a una similar a la vida. Al golpear el botón "Go", hay una gran pausa de la falta de respuesta (el tiempo que tarda el 9 vueltas para ir por con pausas falsos para que el equipo 'decidir') y de repente se actualiza de visual de la aplicación de la completado estado de juego.

Parece que JavaFX vuelve a dibujar una vez procesado en el hilo de la aplicación ha terminado? No estoy completamente seguro aquí.

Gracias!

¿Fue útil?

Solución

Tiene usted razón. JavaFX es orientado a eventos y único subproceso. Esto significa que repinte y la respuesta a eventos no se pueden realizar simultáneamente. De larga duración tarea debe ser ejecutado el hilo separado de modo que no bloqueen la prestación de la interfaz de usuario, la tarea Cuando esté terminado, puede volver a sincronizar el hilo FX llamando FX.deferAction () que se limitará a ejecutar el código en la principal hilo.

Otros consejos

Esto no va a ser la respuesta más útil como he jugado un poco con JavaFX para todos medio día, pero que no se utilice líneas de tiempo, fotogramas clave y vinculante para lograr sus repintados en lugar de llamar explícitamente como que tiene se describe?

este tutorial para un ejemplo .

El modelo de JavaFX es separarte de la pintura de la "materia" en la pantalla. Esto es muy potente, pero es un cambio de la forma en que podría estar familiarizado.

Whaley es correcto que la manera apropiada de hacer esto en JavaFX es hacer una línea de tiempo en el que el movimiento se hace cada X segundos y se dibujará en ese fotograma clave.

Si usted tiene una pregunta acerca de cómo hacer esto, probarlo y hacer una nueva pregunta con algo de código.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top