我尝试使用我在脚本中创建的自定义类(脚本是用Nashorn编写的),之后我尝试使用这个自定义类来填充组合框中的项目。我知道如果我想在组合框中看到正确的值,那么类必须覆盖方法toString,但在这种情况下,我不知道如何在我用Nahorn编写的自定义类中覆盖此方法。 下面我提供我的代码,其中变量cmbCategories是JavaFX组合框和CategoryItem,我尝试将其用作对象来填充组合框中的项目并显示为类别名称。 我很感激任何建议或想法如何解决这个问题。
var ClientBuilder = Java.type("javax.ws.rs.client.ClientBuilder")
var Platform = Java.type("javafx.application.Platform")
var Executors = Java.type("java.util.concurrent.Executors")
var Response = Java.type("javax.ws.rs.core.Response")
var String = Java.type("java.lang.String")
var List = Java.type("java.util.ArrayList")
Executors.newSingleThreadExecutor().execute(function () {
print("Calling for category data...")
var categoryData = ClientBuilder
.newClient()
.target(String.format("%s%s", "http://localhost:8080", "/client/action/categories"))
.request()
.get()
if(categoryData.getStatus() == Response.Status.OK.getStatusCode()) {
var categories = JSON.parse(categoryData.readEntity(String.class))
var categoryItems = new List();
for each (var category in categories) {
categoryItems.add(new CategoryItem(category.id, category.category))
}
Platform.runLater(function() {
cmbCategory.getItems().addAll(categoryItems);
});
} else {
print(categoryData.getEntity().toString());
}
})
function CategoryItem(id, name) {
this.id = id;
this.name = name;
this.toString = function () {
return this.name;
}
}
答案 0 :(得分:0)
使用ScriptEngine
在cellValueFactory
的{{1}}中检索相应的字符串。
简化示例
ComboBox
虽然我没有看到使用JavaScript的目的。你在javascript代码中所做的一切都可以更有效地从java代码中完成......