![](/img/trans.png)
[英]How to call a java method from inside JavaScript inside fxml for javaFX
[英]Call javascript function defined in FXML document from Java
我正在使用FXML文檔定義JavaFX布局,並且一直在使用Java控制器,但現在直接在FXML文檔中查看javascript事件處理程序。
我想知道是否有人知道如何從應用程序調用FXML文檔中定義的Javascript函數?
即給定一個FXML文檔F.FXML
<BorderPane>
<fx:script>
function something() {}
</fx:script>
</BorderPane>
由FXMLLoader加載的多數民眾贊成:
FXMLLoader fxml = new FXMLLoader("F.FXML");
BorderPane root = (BorderPane)fxml.load();
是否有可能做到以下幾點:
root.something()
我想解決的辦法是在幕后用控制器類做一些魔術,但是我仍然想在javascript中定義函數。
public class MapApp extends Application {
public static int ZOOM_STREET = 10;
public static class City {
public City(String name) {...}
...
}
public int currentZipCode;
public void navigateTo(City location, int zoomLevel) {...}
....
}
和javascript:
function navigateTo(cityName) {
//Assumes that the Ant task uses "myMapApp" as id for this application
var mapApp = document.getElementById("myMapApp");
if (mapApp != null) {
//City is nested class. Therefore classname uses $ char
var city = new mapApp.Packages.testapp.MapApp$City(cityName);
mapApp.navigateTo(city, mapApp.Packages.testapp.MapApp.ZOOM_STREET);
return mapApp.currentZipCode;
}
return "unknown";
}
window.alert("Area zip: " + navigateTo("San Francisco"));
如本教程所述:
[以上]中的JavaScript代碼段將多個值傳遞給Java代碼[在javascript代碼段之上]。 在Java代碼中使用這些值之前,它們會自動轉換為最接近的Java類型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.