Is it possible to have a task automatically run after the WebEngine
finishes loading? I know I can get a Worker
from WebEngine
to indicate loading progress, but it seems like repeatedly polling the Worker
not an elegant solution (i.e. locking up program until page loads). I know I can do this with a Task
, so can I get the Task
for WebEngine
somehow, and add an execute on complete command?
有可能在WebEngine完成加载后自动运行任务吗?我知道我可以从WebEngine获得一个Worker来指示加载进度,但它似乎重复地轮询Worker,而不是一个优雅的解决方案(例如,在页面加载之前锁定程序)。我知道我可以用一个任务来完成这个任务,所以我可以以某种方式获得WebEngine的任务,并添加一个执行完成的命令吗?
1 个解决方案
#1
16
Sample based on the WebView documentation:
基于WebView文档的示例:
webView.getEngine().getLoadWorker().stateProperty().addListener(
new ChangeListener<Worker.State>() {
@Override
public void changed(
ObservableValue<? extends Worker.State> observable,
Worker.State oldValue, Worker.State newValue ) {
if( newValue != Worker.State.SUCCEEDED ) {
return;
}
// Your logic here
}
} );
As a lambda expression:
作为一个lambda表达式:
webView.getEngine().getLoadWorker().stateProperty().addListener(
(ObservableValue<? extends Worker.State> observable,
Worker.State oldValue,
Worker.State newValue) -> {
if( newValue != Worker.State.SUCCEEDED ) {
return;
}
// Your logic here
} );
#1
16
Sample based on the WebView documentation:
基于WebView文档的示例:
webView.getEngine().getLoadWorker().stateProperty().addListener(
new ChangeListener<Worker.State>() {
@Override
public void changed(
ObservableValue<? extends Worker.State> observable,
Worker.State oldValue, Worker.State newValue ) {
if( newValue != Worker.State.SUCCEEDED ) {
return;
}
// Your logic here
}
} );
As a lambda expression:
作为一个lambda表达式:
webView.getEngine().getLoadWorker().stateProperty().addListener(
(ObservableValue<? extends Worker.State> observable,
Worker.State oldValue,
Worker.State newValue) -> {
if( newValue != Worker.State.SUCCEEDED ) {
return;
}
// Your logic here
} );