我尝试获取
XYChart.Data
的节点,但它是空的。
var a = new XYChart.Data<Number, Number>(10, 10);
if(a.getNode()==null){ System.out.println("true"); }
为什么
getNode()
返回null?我做错了什么?
XYChart.Data.node
属性的初始值为null
。如果您没有自己设置,那么一旦数据成为图表的一部分,就会设置它。来自文档(强调我的):
要为此数据项显示的节点。您可以创建自己的节点并将其设置在数据项上,然后再将项目添加到图表中。 否则图表将为您创建一个具有图表类型默认表示形式的节点。一旦数据添加到图表中,该节点就会被设置。 然后您可以使用它来添加鼠标侦听器等。图表将尽力适当地定位节点并调整其大小,例如在折线图或散点图上节点将定位在数据值位置的中心。对于条形图,其位置和大小调整为该数据项的条形图。
如果您需要使用默认
Node
执行某些操作,您可以向该属性添加一个侦听器(在将数据添加到图表之前),以便在它变为非 null
时收到通知。
data.nodeProperty().addListener((observable, oldValue, newValue) -> {
if (newValue != null) {
// do something...
}
});
或者在将数据添加到图表后获取
Node
。
只有在图表中设置系列后,XYChart.Data node才可用。
XYChart.Series<Number, String> series1 = new XYChart.Series<>();
Data<Number, String> data1 = new XYChart.Data<>(1, "A");
series1.getData().add(data1);
barChart.getData().add(series1);
data1.getNode();// will not be null
series1.getData().get(0).getNode(); will also not be null