gpt4 book ai didi

java - 从 Java 调用 FXML 文档中定义的 javascript 函数

转载 作者:太空宇宙 更新时间:2023-11-04 06:44:05 25 4
gpt4 key购买 nike

我使用 FXML 文档来定义 JavaFX 布局,并且一直在使用 Java Controller ,但现在直接在 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()

我想解决方法是在幕后使用 Controller 类做一些魔法,但我仍然想在 JavaScript 中定义函数。

最佳答案

Take a look at this tutorial关于使用 JavaFX 和 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"));

正如教程所解释的:

The JavaScript snippet in [above] passes several values to the Java code [above the javascript snippet]. Before these values are used in the Java code, they are automatically converted to the closest Java type.

关于java - 从 Java 调用 FXML 文档中定义的 javascript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24257197/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com