Я работаю над приложением, которое считывает метод (println()
) из кода Java в коде JavaScript в локальном файле HTML, который загружается WebEngine, когда пользователь выбирает элемент в ComboBox.
Метод успешно вызывается в первый раз, когда пользователь выбирает элемент в ComboBox (это первый раз, когда контент загружается в WebEngine), но после первого раза метод больше не выполняется.
Если вы можете объяснить мне, как написать код таким образом, чтобы метод выполнялся даже после первой загрузки содержимого в WebEngine.
My Controller. java:
public class Controller {
ObservableList<String> months = FXCollections.observableArrayList
("Tishrei", "Cheshvan", "Kislev", "Tevet", "Shevat", "Adar",
"Nisan", "Iyar", "Sivan", "Tammuz", "Av", "Elul");
public ComboBox<String> month;
public WebView webView;
public void println(String s){
System.out.println(s);
}
@FXML
public void initialize() {
month.setItems(months);
WebEngine webEngine = webView.getEngine();
JSObject win = (JSObject) webEngine.executeScript("window");
win.setMember("app", this);
month.setOnAction(event -> {
String loadFile = this.getClass().getResource("index.html").toString();
webEngine.load(loadFile);
});
}
}
Скрипт в HTML файле:
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
<script type="text/javascript">
app.println("Hallow World!");
</script>
</body>
</html>