Java 如何打开无限多个阶段

Java 如何打开无限多个阶段,java,javafx,Java,Javafx,基本上,我只是试图在程序启动后,每秒自动打开一个阶段。我打算继续沿着这条路线走下去,同时有多个使用不同阶段的时间线,这样我就可以在其中放置不同的图像。更实际的方法是什么 mediaPlayer.play(); int seconds = 1; Timeline timeline = new Timeline( new KeyFrame(Duration.seconds(seconds), e -> { Bord

基本上,我只是试图在程序启动后,每秒自动打开一个阶段。我打算继续沿着这条路线走下去,同时有多个使用不同阶段的时间线,这样我就可以在其中放置不同的图像。更实际的方法是什么

    mediaPlayer.play();
    int seconds = 1;
    Timeline timeline = new Timeline(
            new KeyFrame(Duration.seconds(seconds), e -> {
                BorderPane bpnew = new BorderPane();
                Scene repscene = new Scene(bpnew, 400, 450);
                Stage repstage = new Stage();
                repstage.setScene(repscene);
                repstage.show();
            })
        );
    timeline.setCycleCount(Animation.INDEFINITE);
    timeline.play();

    BorderPane root = new BorderPane();

    Scene scene = new Scene(root, 400, 450);
    primaryStage.setScene(scene);
    primaryStage.setTitle("Popup Test");
    primaryStage.show();
}

像这样的代码怎么样。您可以创建一个。然后把它放在你的计时器里。您也可以使用。工作原理类似于TimeLine,但每秒调用60次,没有其他限制

    Timeline timeline = new Timeline(
            new KeyFrame(Duration.seconds(5), e -> {
                Dialog< Void> dialog = new Dialog<>();
                dialog.setTitle( "Image");
                dialog.getDialogPane().getButtonTypes().add(ButtonType.OK);

                ImageView view = new ImageView("https://upload.wikimedia.org/wikipedia/commons/1/11/Cheetah_Kruger.jpg");

                ScrollPane root = new ScrollPane( view);
                root.setPrefWidth( 800);
                root.setPrefHeight( 600);

                dialog.getDialogPane().setContent( root);
                dialog.setResizable( true);
                dialog.show();
            })
        );
    timeline.setCycleCount(Animation.INDEFINITE);
    timeline.play();
时间线=新时间线(
新关键帧(持续时间。秒(5),e->{
DialogDialog=newdialog();
对话框。设置标题(“图像”);
dialog.getDialogPane().getButtonTypes().add(ButtonType.OK);
ImageView=新的ImageView(“https://upload.wikimedia.org/wikipedia/commons/1/11/Cheetah_Kruger.jpg");
ScrollPane root=新的滚动窗格(视图);
根宽度(800);
根高度(600);
dialog.getDialogPane().setContent(根目录);
对话框。可设置大小(true);
dialog.show();
})
);
timeline.setCycleCount(Animation.unfinite);
timeline.play();

它必须是舞台吗?你为什么需要它?目的何在?您可以使用JavaFXAlert来实现这一点,也可以编写自己的内部框架,如下面的回答中所示,每个窗口都应该是独立的,这样内部窗口就无法工作。警报窗口看起来很有趣,但如何实现计时器循环。我用的是舞台,所以我可以在上面放个图像。关键是让窗口弹出不同的图像。所以基本上使用时间线是一个合适的方法?阅读文档后,我知道timeline()用于动画,这就是为什么我问是否有更推荐的方法可用作触发器。但从你的回答来看,我认为时间线确实是最常用的方法,或者在这种情况下是可行的?我不会说最常用的,它实际上取决于你在做什么。就像我说的,你也可以使用AnimationTimer,它的功能较少,需要你来完成。现在在你的情况下,我认为时间线是可行的,但因为我不太理解你的逻辑,比如为什么你想无限期地打开这么多窗口,很难说这是不是最好的。通常假设这是某种图像查看器,我会通过某种按钮动作而不是计时器来显示下一个。在这里,你可以找到一些更为周期性的计时器解决方案,哈哈,那么你想得太多了。选择任何一种方法,尽情享受。我的建议是用每种方法制作你的应用程序,然后选择你喜欢的方法。这是我收到的最好的建议。我知道你不应该在这里说谢谢,但我无论如何都在做,谢谢。