簡體   English   中英

從Java調用FXML文檔中定義的javascript函數

[英]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中定義函數。

看一下有關使用JavaFX和JavaFX的教程

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM