XYChart.Data getNode() 为空

问题描述 投票:0回答:2

我尝试获取

XYChart.Data
的节点,但它是空的。

var a = new XYChart.Data<Number, Number>(10, 10);

if(a.getNode()==null){ System.out.println("true"); }

为什么

getNode()
返回null?我做错了什么?

java javafx
2个回答
3
投票

XYChart.Data.node
属性的初始值为
null
。如果您没有自己设置,那么一旦数据成为图表的一部分,就会设置它。来自文档强调我的):

要为此数据项显示的节点。您可以创建自己的节点并将其设置在数据项上,然后再将项目添加到图表中。 否则图表将为您创建一个具有图表类型默认表示形式的节点。一旦数据添加到图表中,该节点就会被设置。 然后您可以使用它来添加鼠标侦听器等。图表将尽力适当地定位节点并调整其大小,例如在折线图或散点图上节点将定位在数据值位置的中心。对于条形图,其位置和大小调整为该数据项的条形图。

如果您需要使用默认

Node
执行某些操作,您可以向该属性添加一个侦听器(在将数据添加到图表之前),以便在它变为非
null
时收到通知。

data.nodeProperty().addListener((observable, oldValue, newValue) -> {
    if (newValue != null) {
        // do something...
    }
});

或者在将数据添加到图表后获取

Node


0
投票

只有在图表中设置系列后,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
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.