首页 > 解决方案 > 我们可以在 Java Scene Builder 2.0 中在 5 秒后不使用按钮来更改场景吗

问题描述

基本上我使用的是 JavaFX 场景构建器 2.0,我想在不使用任何按钮的情况下将场景从一个更改为另一个。主文件公共类 OurFirstProject 扩展应用程序 {

public void start(Stage stage) throws Exception {
    Parent root = FXMLLoader.load(getClass().getResource("FXMLDocument.fxml"));
    stage.setFullScreenExitHint("");
    //stage.setFullScreenExitKeyCombination(KeyCombination.NO_MATCH);
    Rectangle2D screenBounds = Screen.getPrimary().getVisualBounds();
    Scene scene = new Scene(root, screenBounds.getWidth(), screenBounds.getHeight());
    stage.setScene(scene);
    stage.setFullScreen(true);
    stage.show();

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

}

} 公共类 FXMLDocumentController 实现 Initializable {

@FXML
private void change(ActionEvent event) throws IOException {
    Parent sceneChange = FXMLLoader.load(getClass().getResource("Change.fxml"));
    Rectangle2D screenBounds = Screen.getPrimary().getVisualBounds();
    Scene changeScene = new Scene(sceneChange, screenBounds.getWidth(), screenBounds.getHeight());
    Stage Window = (Stage) ((Node) event.getSource()).getScene().getWindow();
    Window.setScene(changeScene);
    Window.setFullScreen(true);
    Window.show();
}

int a = 0;
@FXML
public Button helloButton;
@FXML
private Label ourLabel;

@FXML
private void printHello(ActionEvent e) {
    a++;
    if (a % 2 == 0) {
        ourLabel.setText("Hello World! Kyun" + a);
    } else {
        ourLabel.setText("Hello Dunia" + a);
    }
}

@Override
public void initialize(URL url, ResourceBundle rb) {

在此处输入代码 }

FXML 文件名中提到的场景“更改”,我想在不使用按钮的情况下运行这个场景我想在第一个场景的五秒延迟时运行这个。

标签: scenebuilder

解决方案


您可以使用 Timer() 之类的,

Timer timer = new Timer();
timer.schedule(new TimerTask() {
        @Override
        public void run() {
            Platform.runLater(new Runnable() {
                @Override
                public void run() {// After this you can add your change.fxml load code
                    Parent root = null;
                    try {
                        root = fxmlLoader.load();
                    }catch(Exception e)
                    {
                        //Exception catch code here
                    }
                    primaryStage.show();//Here you can write your show code like window.show()
                }
            });
        }
    },5000);// 5000- time delay in milliseconds

推荐阅读