gpt4 book ai didi

java - 更新 JavaFX 阶段的大小和位置不起作用

转载 作者:行者123 更新时间:2023-12-02 03:40:51 25 4
gpt4 key购买 nike

我是 JavaFX 的初学者,我了解 swing/JFrames,可以使用验证方法更新屏幕。 JavaFX 阶段库中是否存在等效方法?当我在以下代码中执行 Thread.sleep() 并更新舞台的大小和位置时,舞台会在时间过去后加载,然后立即移动。这不是我的本意。我希望加载舞台,等待时间,然后更新位置和大小。这里究竟出了什么问题?谢谢!

import javafx.application.Application;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.concurrent.Worker;
import javafx.scene.Scene;
import javafx.scene.layout.VBox;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebView;
import javafx.stage.Stage;

public class Driver extends Application
{
public static void main(String [] args) throws Exception
{
launch(args);
}

@Override
public void start(Stage stage) throws Exception
{
// Create the WebView
WebView webView = new WebView();

// Create the WebEngine
final WebEngine webEngine = webView.getEngine();

// LOad the Start-Page
webEngine.load("https://www.reddit.com");

// Update the stage title when a new web page title is available
webEngine.getLoadWorker().stateProperty().addListener(new ChangeListener<Worker.State>()
{
public void changed(ObservableValue<? extends Worker.State> ov, Worker.State oldState, Worker.State newState)
{
if (newState == Worker.State.SUCCEEDED)
{
//stage.setTitle(webEngine.getLocation());
stage.setTitle(webEngine.getTitle());
}
}
});

// Create the VBox
VBox root = new VBox();

// Add the WebView to the VBox
root.getChildren().add(webView);

// Create the Scene
Scene scene = new Scene(root);

// Add the Scene to the Stage
stage.setWidth(200);
stage.setHeight(200);
stage.setScene(scene);
stage.setX(500);
stage.setY(500);
stage.show();
Thread.sleep(5000);
stage.setX(800);
stage.setY(200);
stage.setWidth(60);
stage.setHeight(60);
}
}

最佳答案

PauseTransition应该管用。

Replace:

Thread.sleep(5000);
stage.setX(800);
stage.setY(200);
stage.setWidth(60);
stage.setHeight(60);

With:

PauseTransition wait = new PauseTransition(Duration.seconds(5));
wait.setOnFinished((e) -> {
/*YOUR METHOD*/
stage.setX(800);
stage.setY(200);
stage.setWidth(60);
stage.setHeight(60);
});
wait.play();

关于java - 更新 JavaFX 阶段的大小和位置不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56837553/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com