Pergunta

Existe uma maneira de forçar um aplicativo JavaFX para repintar-se antes de prosseguir? Semelhante a uma pintura do painel de Swing (Gráfico g) método (eu poderia estar recebendo as palavras-chave errado lá).

Considere o seguinte exemplo: você escrever um aplicativo TicTacToe juntamente com o AI necessária para um jogador do computador. Você gostaria que a capacidade de mostrar dois computadores jogadores brigar. Talvez você colocar em uma pausa de dois segundos entre as curvas de computador para dar-lhe uma vida-como afetam. Quando você bate o botão "Go", há uma grande pausa de indiferença (o tempo que leva para os 9 voltas para passar com pausas falsos para o computador para 'decidir') e então de repente o aplicativo do Visual é atualizado com o concluída estado de jogo.

Parece que repaints JavaFX quando a transformação na linha do aplicativo está terminado? Eu não estou completamente certo aqui.

Obrigado!

Foi útil?

Solução

Você tem razão. JavaFX é roscada de um único accionado por evento e. Isto significa que redesenhar e resposta do evento não pode ser feito simultaneamente. Longa tarefa deve ser executado no segmento separado para que eles não bloqueiam o processamento da UI, Quando a tarefa for concluída, ela pode sincronizar volta para o segmento FX chamando FX.deferAction (), que irá simplesmente executar o código na principal fio.

Outras dicas

Esta não será a resposta mais útil como tenho brincado ao redor com JavaFX para todos metade de um dia, mas você não usaria Timelines, quadros-chave e vinculativa para realizar seus repaints em vez de chamá-los explicitamente como você tem descrito?

este tutorial para um exemplo .

O modelo de JavaFX é separar você da pintura do "material" na tela. Isso é muito poderoso, mas é uma mudança de como você pode estar familiarizado com.

Whaley é correto que a forma adequada de fazer isso em JavaFX é fazer um cronograma onde o movimento é feito a cada X segundos e serão sorteados naquele quadro-chave.

Se você tem uma pergunta sobre como fazer isso, experimentá-lo e fazer uma nova pergunta com algum código.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top