Próbuję działać w JavaFX i napotkałem taki problem: mam okno aplikacji w fxml. Po naciśnięciu przycisku chcę wyświetlić okno z innego pliku fxml, ale są tu 2 problemy:
-powtarzam wtedy wywołanie funkcji initialize
kontrolera.
-za każdym razem przy wywoływaniu okienka od nowa wczytuję plik i je tworzę.
To raczej nie jest dobre podejście. Więc jak?
Mam jeszcze jedno pytanie, dlaczego stage
w w ostatniej funkcji ma wartość null
, jeżeli stworzyłem ten obiekt?
Tak wygląda kontroler
public class Controller {
private Stage stage;
@FXML
private TextField entr;
@FXML
public void initialize() {
System.out.printf("init");
}
@FXML
private void addpress() { /*uzytkownik chce wyswietlic okienko*/
System.out.printf("addpress\n");
try {
FXMLLoader loader = new FXMLLoader(getClass().getResource("view/dodaj_slowo.fxml"));
Parent root2 = loader.load();
stage = new Stage();
stage.setScene(new Scene(root2));
//stage.initModality(Modality.APPLICATION_MODAL);
stage.show();
} catch (IOException e) {
e.printStackTrace();
}
}
@FXML
private void add_return() {
System.out.printf("add: " + entr.getText());
/*
if (stage == null)
System.out.printf("dlaczego NULL?");
stage.close();
*/
Stage st = (Stage) entr.getScene().getWindow();
st.close();
}
}