如何为JavaFX舞台创建调整大小动画?

前端之家收集整理的这篇文章主要介绍了如何为JavaFX舞台创建调整大小动画?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我一直在尝试为 JavaFX阶段进行缩放转换,以替换应用程序主窗口的当前场景(在本例中为登录框).
当这种情况发生时,由于新场景更大,所以窗口以非优雅的方式突然重新大小.

有没有办法建立一个缩放或重新调整大小的过渡,以进行这样的阶段调整大小?

相关代码

  1. InputStream is = null;
  2. try {
  3. is = getClass().getResourceAsStream("/fxml/principal.fxml");
  4. Region pagina = (Region) cargadorFXML.load(is);
  5. cargadorFXML.<ContenedorPrincipal>getController().setEscenario(escenario);
  6.  
  7. final Scene escena = new Scene(pagina,900,650);
  8.  
  9. escena.setFill(Color.TRANSPARENT);
  10. escenario.setScene(escena);
  11. escenario.sizeToScene();
  12. escenario.centerOnScreen();
  13. escenario.show();
  14. } catch (IOException ex) {
  15. // log "Unable to load the main application driver"
  16. log.error("No fue posible cargar el controlador principal de la aplicación.");
  17. log.catching(ex);
  18. } finally {
  19. if (is != null) {
  20. try {
  21. is.close();
  22. } catch (IOException e) {}
  23. }
  24. }

解决方法

我真的很喜欢你的想法,所以我设法做了一些事情.
我希望这将有助于你.

我用一个Timer来改变舞台的宽度和高度每25ms,以给人一种动画的印象.

  1. import java.util.Timer;
  2. import java.util.TimerTask;
  3.  
  4. import javafx.application.Application;
  5. import javafx.scene.Group;
  6. import javafx.scene.Scene;
  7. import javafx.stage.Stage;
  8.  
  9. public class SmoothResize extends Application {
  10.  
  11. @Override
  12. public void start(final Stage stage) throws Exception {
  13. stage.setTitle("Area Chart Sample");
  14. Group root = new Group();
  15. Scene scene = new Scene(root,250,250);
  16. stage.setResizable(false);
  17.  
  18. Timer animTimer = new Timer();
  19. animTimer.scheduleAtFixedRate(new TimerTask() {
  20. int i=0;
  21.  
  22. @Override
  23. public void run() {
  24. if (i<100) {
  25. stage.setWidth(stage.getWidth()+3);
  26. stage.setHeight(stage.getHeight()+3);
  27. } else {
  28. this.cancel();
  29. }
  30. i++;
  31. }
  32.  
  33. },2000,25);
  34.  
  35. stage.setScene(scene);
  36. stage.show();
  37. }
  38.  
  39. public static void main(String[] args) {
  40. launch(args);
  41. }
  42. }

猜你在找的Java相关文章