Impedir a abertura de duas janelas iguais no JAVAFX

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