【发布时间】:2016-04-07 14:53:05
【问题描述】:
我正在使用一个监听器来监听网络引擎的状态,它工作正常。此时文档也已填写,因为已达到状态 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 舞台上进行监听。因为此时 State 监听器会做出反应,然后我可以调用 setInitialState() 方法并使用 Web 引擎的文档模型。
选择ToggleButton的代码:
public void setInitialState() {
screenGroup.selectToggle(rbMasterScreen);
elementGroup.selectToggle(btnButton);
}
【问题讨论】:
-
我真的不明白你想做什么。如果你听状态,文件怎么可能是空的? ToggleButton 呢?或者贴一些代码示例,否则真的很难提供帮助。
标签: java javafx webview javafx-8 webengine