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:
@FXML
public void handleMenuItemCadastroClientes() {
try {
Parent root = FXMLLoader.load(getClass().getResource("/view/FXMLCadastroClientes.fxml"));
Stage stage = new Stage();
stage.setTitle("STAY HAMBURGUERIA PREMIUM - Cadastro de Clientes");
stage.setResizable(false);
stage.setScene(new Scene(root));
stage.show();
} catch (IOException ex) {
JOptionPane.showMessageDialog(null, "Erro ao abrir a tela de cadastro: " + ex);
}
}
1 curtida
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
Sério? Mas aqui na minha aplicação eu consigo abrir várias instâncias, gostaria de impedir isso…
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…
1 curtida
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.[quote=“LostSoldier, post:4, topic:344238”]
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…
[/quote]
Realmente. Porém instanciar uma classe que estende de Application dá na mesma, pois a Application é estática.
2 curtidas
Cara consegui adaptar o design Pattern ao meu código e funcionou perfeitamente. Valeu mesmo.
1 curtida
Valeu brother pela força!
1 curtida