Web エンジンの状態のリスナーを使用していますが、正常に動作しています。また、状態が 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();
}
}
}
}
私の問題は、トグル ボタンで別のリスナーを使用することです。これは、Web エンジンのドキュメント モデルがまだ設定されていない場合に、(別のビューのコンストラクターで) メソッド selectToggle() によって手動で起動します。 JavaFX ステージがポップアップする前に状態 SUCCEED に到達しないため、状態リスナー。
だから今、UIがレンダリングされたときにJavaFXステージでリッスンする方法が必要です。この時点で State リスナーが反応し、その後 setInitialState() メソッドを呼び出して、Web エンジンのドキュメント モデルを操作できるからです。
ToggleButton を選択するコード:
public void setInitialState() {
screenGroup.selectToggle(rbMasterScreen);
elementGroup.selectToggle(btnButton);
}