当前位置: 首页 > 知识库问答 >
问题:

Vaadin 14.1.17 - 获取图表中选择的元素 - Java

徐瀚
2023-03-14

你好,我想知道如何在Vaadin 14.1.17中从饼图中检索被点击的元素

我使用了一个经典的饼图,里面有数据系列和一些值,我想从一个点击监听器中获取当前选中的项目

数据系列初始化

DataSeries ds = new DataSeries();

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

我已经尝试读取DataSeriesItem中的selected字段,但总是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

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

谢谢大卫

共有1个答案

公冶京
2023-03-14

这更像是一种变通方法,但似乎行得通:)

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

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

< code>isSelected()方法似乎依赖于使用< code>item.setSelected(true)隐式设置的< code>selected属性;。这也让我很困惑,所以这要么是一个错误,要么是一个没有记录的行为。

 类似资料:
  • 问题内容: 我想创建一个类似记录器的东西,它可以跟踪用户的所有动作。为此,我需要确定用户与之交互的元素,以便在以后的会话中可以引用这些元素。 我用伪代码说过,我希望能够做以下事情 HTML示例(可能很复杂): 用户单击链接之类的内容。现在,我需要确定被单击的元素并将其位置保存在DOM树中,以备后用: 现在,uniqueSelector应该是这样的(我不在乎它是xpath还是css选择器样式): 这

  • 本文向大家介绍从Perl的列表中选择元素,包括了从Perl的列表中选择元素的使用技巧和注意事项,需要的朋友参考一下 Perl中的列表符号与数组的列表符号相同。您可以通过在列表中添加方括号并给出一个或多个索引来从数组中提取元素- 示例 输出结果 这将产生以下结果- 同样,我们可以提取切片,尽管不需要前导@字符- 示例 输出结果 这将产生以下结果-

  • 问题内容: 我很难找到从jquery选择器中获取实际DOMElement的时间。样例代码: 在另一段代码中,我试图确定复选框的选中值。 而且,我不想做: 这使我无所适从,但有时我需要真正的DOMElement。 问题答案: 您可以使用以下方法访问原始DOM元素: 或更简单地说: 实际上,根据我的经验,实际上并不需要很多。以您的复选框为例: 更“ jquery’ish”和(imho)更简洁。如果要给

  • 本文向大家介绍jQuery 选择元素的子元素,包括了jQuery 选择元素的子元素的使用技巧和注意事项,需要的朋友参考一下 示例 要选择元素的子代,可以使用children()方法。 更改元素所有子.parent元素的颜色: 该方法接受一个可选selector参数,该参数可用于过滤返回的元素。            

  • 问题内容: 您可以使用鼠标选择网页的一部分。 我知道可以获取当前选择的文本,但是如何获取包含当前选择的开始或结束的DOM元素? 问题答案: 在IE中,使用document.selection.createRange()。parentElement(),在实际的浏览器中,使用window.getSelection()。getRangeAt(0).startContainer.parentNode。像

  • 问题内容: 我正在尝试通过JavaScript / CSS修改页面(很像Fashiony或Greasemonkey一样)。这是一个非常复杂的页面(我没有构建或无法修改预渲染),这使得构造CSS选择器变得很困难(手动查看文档结构)。我该如何实现? 问题答案: 在安装了FireBug的情况下使用FireFox。 右键单击任何元素 选择“检查元素” 右键单击HTML树中的元素 选择“复制XPath”或“

  • 问题内容: 是否有可能在CSS2中获得有序列表的第n个元素? (类似于CSS3) 仅供参考:我正在尝试将德语版本的Parcheesi编程为XHTML 1.1和CSS2兼容,并尝试通过使用有序列表来生成运动场,因此移动选项由数据结构预先确定。为了围绕中心定位,我想通过数字选择列表元素。 问题答案: 您可以将相邻的同级组合器与伪类一起使用,重复组合器的次数可以达到第n个孩子。 对于任何元素,均以开头,

  • 我正在使用TestCafe选择器来选择元素。这是一个复杂的Custin Child嵌套场景。 下面是HTML以了解我上面提到的内容: 在图片中,我提到了和,它们是父元素(具有相同的DOM),有一个grand grand child,而另一棵树中相同父元素的grand grand child是。我需要,但需要链接,因为所有父节点都有相同的DOM。