JavaFX2: Fechando um estágio (subestágio) de dentro de si
Eu sou novo no JavaFx e estou criando um aplicativo e estava precisando de algo semelhante ao JDialog que foi oferecido ao usar componentes do swing. Resolvi isso criando uma nova etapa, mas agora preciso de uma maneira de fechar o novo estágio de dentro de si mesmo clicando em um botão. (sim, o botão x também funciona, mas também o queria no botão). Para descrever a situação: Eu tenho uma classe principal a partir da qual eu crio o palco principal com uma cena. Eu uso o FXML para isso.
public void start(Stage stage) throws Exception {
Parent root = FXMLLoader.load(getClass().getResource("Builder.fxml"));
stage.setTitle("Ring of Power - Builder");
stage.setScene(new Scene(root));
stage.setMinHeight(600.0);
stage.setMinWidth(800.0);
stage.setHeight(600);
stage.setWidth(800);
stage.centerOnScreen();
stage.show();
}
Agora, na janela principal que aparece, eu tenho todos os itens de controle, menus e outras coisas, feitos através do FXML e da classe de controle apropriada. Essa é a parte em que decidi incluir as informações Sobre no menu Ajuda. Então eu tenho um evento acontecendo quando o menu Ajuda - Sobre está ativado, assim:
@FXML
private void menuHelpAbout(ActionEvent event) throws IOException{
Parent root2 = FXMLLoader.load(getClass().getResource("AboutBox.fxml"));
Stage aboutBox=new Stage();
aboutBox.setScene(new Scene(root2));
aboutBox.centerOnScreen();
aboutBox.setTitle("About Box");
aboutBox.setResizable(false);
aboutBox.initModality(Modality.APPLICATION_MODAL);
aboutBox.show();
}
Como visto, a janela Sobre a Caixa é criada via FXML com a classe de controle novamente. Há uma imagem, uma área de texto e um botão, e eu quero que esse botão feche o novo estágio que é o aboutBox de dentro da classe AboutBox.java, por assim dizer.
A única maneira que eu me encontrei para fazer isso, foi definir um estágio estático público sobre o Box; dentro da classe Builder.java e referência a essa de dentro do AboutBox.java no método que manipula o evento de ação no botão de fechamento. Mas de alguma forma não parece exatamente limpo e certo. Existe alguma maneira melhor?
Agradecemos antecipadamente por seus conselhos.