0

您好,我想知道如何从 Vaadin 14.1.17 的饼图中检索单击的元素。

我正在使用带有 DataSeries 和内部一些值的经典饼图,我想从点击侦听器中获取当前选定的项目

数据系列初始化

DataSeries ds = new DataSeries();

for (AssetClassModel a : p.getAssetClasses()) {
    ds.add(new DataSeriesItem(a.getDesc(), a.getPerc()));
}
conf.setSeries(ds);

我试过阅读selected里面的字段,DataSeriesItem但它总是false

单击侦听器

chart.addSeriesClickListener(
        e -> {
            List<DataSeriesItem> items = ((DataSeries) e.getSeries()).getData();

            for (DataSeriesItem item : items) {
                System.out.println(item.getName() + " selected: " + item.isSelected());
            }

        }
);

输出

value1 selected: false
value2 selected: false
value4 selected: false

您对如何管理这个有任何想法吗?

谢谢大卫

4

1 回答 1

0

这更像是一种解决方法,但似乎有效:)

SeriesClickEvent一个getMouseDetails().getyValue()方法。返回的值与y项目的值匹配。(这是 a 的第二个构造函数参数DataSeriesItem

chart.addSeriesClickListener(event->{
     series.getData().forEach( item->{
          if(event.getMouseDetails().getyValue()== ((DataSeriesItem)item).getY().doubleValue()){
              System.out.println("SELECTED : " +  ((DataSeriesItem)item).getName());
           }
     });
});

isSelected()方法似乎依赖于selected隐式使用的属性集item.setSelected(true);。这也让我感到困惑,因此它要么是错误,要么是未记录的行为。

于 2020-02-20T06:53:52.670 回答