Impedir a abertura de duas janelas iguais no JAVAFX
6 respostasResolvido
javafx
Roberto_Oliveira
Boa tarde caros amigos,
Como eu posso impedir a abertura de duas scenes iguais no JavaFX? Segue o código implementado até o momento para o botão de menu:
@FXMLpublicvoidhandleMenuItemCadastroClientes(){try{Parentroot=FXMLLoader.load(getClass().getResource("/view/FXMLCadastroClientes.fxml"));Stagestage=newStage();stage.setTitle("STAY HAMBURGUERIA PREMIUM - Cadastro de Clientes");stage.setResizable(false);stage.setScene(newScene(root));stage.show();}catch(IOExceptionex){JOptionPane.showMessageDialog(null,"Erro ao abrir a tela de cadastro: "+ex);}}
Até onde eu sei, por padrão, se você chamar essa janela mais de uma vez será exibida essa mensagem em uma exceção:
JavaFX: application Launch Must not be called more than once
Roberto_Oliveira
Sério? Mas aqui na minha aplicação eu consigo abrir várias instâncias, gostaria de impedir isso…
L
Solucao aceita
LostSoldier1 like
Para esse tipo de problema, creio que o design pattern Singleton possa ajudar…
Uma coisa que temos de ter em mente é que pelo fato do java ser orientado a objetos, cada vez que usamos new, existe um novo objeto na memóra… logo o controle das instâncias para essa situação torna-se crucial…
Thallysson2 likes
Bom, eu não sei como essa tua aplicação funciona. Mas essa janela é uma classe que estende de Application? Se não for, é por isso que o erro não é exibido.
“LostSoldier:
Uma coisa que temos de ter em mente é que pelo fato do java ser orientado a objetos, cada vez que usamos new, existe um novo objeto na memória… logo o controle das instâncias para essa situação torna-se crucial…
Realmente. Porém instanciar uma classe que estende de Application dá na mesma, pois a Application é estática.
Roberto_Oliveira1 like
Cara consegui adaptar o design Pattern ao meu código e funcionou perfeitamente. Valeu mesmo.