Impedir a abertura de duas janelas iguais no JAVAFX

6 respostas Resolvido
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:

@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);
    }
}

6 Respostas

Thallysson

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

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…

Thallysson

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_Oliveira

Cara consegui adaptar o design Pattern ao meu código e funcionou perfeitamente. Valeu mesmo.

Roberto_Oliveira

Valeu brother pela força!

Criado 4 de março de 2017
Ultima resposta 5 de mar. de 2017
Respostas 6
Participantes 3