Identificare lo Stage corrente in JavaFX
JavaFX ha una struttura un pò particolare quando si parla di layout e controller.
Quando siamo appunto nel controller, di default, non sappiamo nulla dello Stage corrente.
E' possibile recepirlo in diversi modi.
Io mi sono trovato bene così: prima di tutto impostiamo un id nel componente top del nostro file FXML:
<VBox fx:id="uno"
xmlns="http://javafx.com/javafx/8.0.112"
xmlns:fx="http://javafx.com/fxml/1"
fx:controller="com.mp.testfx.ControllerUno">
.....................
</VBox>
Poi, nel controller, possiamo fare una cosa del genere:
public class ControllerUno {
@FXML
VBox uno;
@FXML
private void onBtnClicked() throws IOException {
Stage ss = (Stage) uno.getScene().getWindow();
ss.setIconified(true);
}
}
Un altro modo, che non è un granchè però, è questo:
public class ControllerUno {
@FXML
private void onBtnClicked(ActionEvent event) throws IOException {
Stage thisStage = (Stage)((Node)event.getSource()).getScene().getWindow();
thisStage.setIconified(true);
}
}
Ma andiamo ad usare ActionEvent quasi inutilmente.
Infine, mi è stato consigliato di usare FXMLLoader, non passando per il metodo statico load.
Ma non l'ho provato.
Enjoy!
java javafx stage fxml fxmlloader actionevent
Commentami!