JavaFX:为节点创建自定义数据属性

时间:2016-10-03 08:32:45

标签: java javafx fxml

我目前需要随时可以获取的自定义属性。有没有办法为节点创建自定义数据属性,然后在javafx中获取这些值?

让我们假设我有以下按钮。

<Button text="Im a button" fooBar="I hold some value" />

类似于:https://developer.mozilla.org/de/docs/Web/Guide/HTML/Using_data_attributes

现在在HTML中,我可以简单地执行以下操作:

<div id="example" data-foobar="I hold some value"></div>

然后我可以很容易地得到这样的数据:

document.getElementById("example").dataset.foobar;

编辑:我需要一个节点的多个数据属性,因为节点可以保存各种信息。

2 个答案:

答案 0 :(得分:4)

数据可以存储在the properties ObservableMap of a Node

Node node = ...
node.getProperties().put("foo", "bar");
...
Object foo = node.getProperties().get("foo");

但请注意,某些布局属性也使用此贴图,因此没有类似于javafx属性的属性名称/&#34;静态&#34;属性应该用作关键。如果将另一种类型的对象作为参数传递给true,请确保您可以创建不返回equals的自定义键类。

答案 1 :(得分:3)

要解决您的问题,您应该使用userData它可以是您需要的任何对象。

node.setUserData("Hello world");
node2.setUserData(123);

如果需要设置多个值,可以将值保存在数组,列表,json等中。

ArrayList<String> vals = new ArrayList();
vals.add("Hello");
vals.add("World");
node3.setUserData(vals);
//some code
ArrayList<String> result = (ArrayList) node3.getUserData();