Eu estou tentando fazer uma arvore genealógica em java usando threads. Eu criei processos Pai, Filho1, Filho2 etc, e tava tudo dando certo enquanto eu só queria executar no terminal, mas quando eu tentei integrar em uma GUI, começou a dar problema.
Por exemplo, o processo Pai chama os processos filhos, quando um processo é chamado, eu quero que alguns elementos da tela mudem, mas como eu posso controlar a tela por outras classes? Digo, eu tenho um controller com os elementos e tudo mais, mas como posso controlá-los pelas threads? Eu tentei deixar os elementos públicos, deixá-los estáticos, criar um objeto da classe controller, usar getters e setters, mas nada funciona.
Como deixar threads controlarem uma tela fxml?
N
3 Respostas
S
Que problema?
Troca de mensagens entre objetos, ou seja, métodos e parâmetros.
Sem ver o seu código fica difícil, de antemão dá pra dizer que se deixou tudo estático, já está errado.
R
1 like
Bom, isso tá um pouco confuso … De qualquer maneira, o que posso adiantar é que manipulação de interface gráfica é sempre feita por uma única thread. O que você pode fazer é usar modelos assíncronos para enviar o processamento para woker threads e comunicar os eventos do processamento para a thread que atualiza a interface gráfica. No Swing essa thread se chama EventDispatch.
J
1 like
Se esta usando javaFX, dentro da Thread use :
Platform.runLater( () -> {
// exemplo
controller.seuMetodo();
controller.text1.setText("novo Conteudo");
} );
Mas cuidado com o uso excessivo de Threads, qq coisa dê uma olhada no pool de Threads.
Criado 22 de julho de 2018
Ultima resposta 23 de jul. de 2018
Respostas 3
Participantes 4
Alura Sistemas operacionais: entenda seu conceito e suas funções Descubra o que são sistemas operacionais, suas funções e tipos. Aprenda tudo de forma clara e objetiva. Não perca tempo!
Casa do Codigo Orientacao a Objetos: Aprenda seus conceitos e suas... Por Thiago Leite e Carvalho — Casa do Codigo