Próbowałem dokonać przejścia skalowania dla etapu JavaFX, aby zastąpić bieżącą scenę (w tym przypadku ramkę logowania) dla głównego okna aplikacji.
Kiedy to się dzieje, ponieważ nowa scena jest większa, okna zmieniają się gwałtownie w nie-elegancki sposób.Jak utworzyć animację zmiany rozmiaru dla etapu JavaFX?
Czy jest jakiś sposób ustawienia zmiany rozmiaru lub zmiany rozmiaru, aby zrobić to na etapie zmiany rozmiaru?
odpowiedni kod:
InputStream is = null;
try {
is = getClass().getResourceAsStream("/fxml/principal.fxml");
Region pagina = (Region) cargadorFXML.load(is);
cargadorFXML.<ContenedorPrincipal>getController().setEscenario(escenario);
final Scene escena = new Scene(pagina, 900, 650);
escena.setFill(Color.TRANSPARENT);
escenario.setScene(escena);
escenario.sizeToScene();
escenario.centerOnScreen();
escenario.show();
} catch (IOException ex) {
// log "Unable to load the main application driver"
log.error("No fue posible cargar el controlador principal de la aplicación.");
log.catching(ex);
} finally {
if (is != null) {
try {
is.close();
} catch (IOException e) {}
}
}
To dobry sposób na zrobienie tego. Zdecydowałem się na stworzenie nowego Etapu i używanie zaciekłych przejść między nimi, aby zrobić to w elegancko, ale twoja sugestia wydaje się dobra, więc spróbuję jak najszybciej. – fturizo
Lepiej używać wbudowanych mechanizmów animacji JavaFX, takich jak Oś czasu, a nie Zegar. Z zegarem masz inny wątek, a kod nie jest bezpieczny dla wątków, chyba że zawiniesz połączenia, które manipulują wykresem sceny lub sceny w wywołaniach Platform.runLater(). – jewelsea