加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-14 05:22:28 所属栏目:Java 来源:网络整理
导读:我一直在尝试为 JavaFX阶段进行缩放转换,以替换应用程序主窗口的当前场景(在本例中为登录框). 当这种情况发生时,由于新场景更大,所以窗口以非优雅的方式突然重新大小. 有没有办法建立一个缩放或重新调整大小的过渡,以进行这样的阶段调整大小? 相关代码: In
我一直在尝试为 JavaFX阶段进行缩放转换,以替换应用程序主窗口的当前场景(在本例中为登录框).
当这种情况发生时,由于新场景更大,所以窗口以非优雅的方式突然重新大小.

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

相关代码:

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) {}
    }
}

解决方法

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

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

import java.util.Timer;
import java.util.TimerTask;

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.stage.Stage;

public class SmoothResize extends Application {

    @Override
    public void start(final Stage stage) throws Exception {
        stage.setTitle("Area Chart Sample");
        Group root = new Group();
        Scene scene  = new Scene(root,250,250);
        stage.setResizable(false);

        Timer animTimer = new Timer();
        animTimer.scheduleAtFixedRate(new TimerTask() {
            int i=0;

            @Override
            public void run() {
                if (i<100) {
                    stage.setWidth(stage.getWidth()+3);
                    stage.setHeight(stage.getHeight()+3);
                } else {
                    this.cancel();
                }
                i++;
            }

        },2000,25);

        stage.setScene(scene);
        stage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读