我正在使用一个监听器来监听网络引擎的状态,它工作正常。此时也填写了文档,因为达到了 SUCCEEDED 状态。
状态监听器:
public class WebViewListener implements ChangeListener<Worker.State> {
public void changed(ObservableValue observable, State oldState, State newState) {
if (newState == State.SUCCEEDED) {
String style = "";
try {
style = cssModel.getRuntimeCSSFileAsString();
htmlModel.setDocument(view.getWebEngine().getDocument());
htmlModel.setStyleAttribute(style);
} catch (IOException e) {
e.printStackTrace();
} catch (HTMLDocumentNullException e) {
e.printStackTrace();
}
}
}
}
我的问题是,我在切换按钮上使用了另一个侦听器,我在较早的时间(在另一个视图的构造函数中)通过方法 selectToggle() 手动触发了该按钮,其中 Web 引擎的文档模型尚未设置状态监听器,因为在 JavaFX 阶段弹出之前未达到状态 SUCCEED。
因此,现在我需要一个解决方案,即如何在呈现 UI 时在 JavaFX Stage 上进行监听。因为此时状态监听器会做出反应,然后我可以调用 setInitialState() 方法并使用 Web 引擎的文档模型。
选择ToggleButton的代码:
public void setInitialState() {
screenGroup.selectToggle(rbMasterScreen);
elementGroup.selectToggle(btnButton);
}