如何为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); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |