You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vaadin 14.1.17饼图点击元素获取问题求助

解决Vaadin 14.1.17饼图点击获取元素的问题

我之前也碰到过类似的问题,你当前的思路其实走偏了——DataSeriesItem的selected字段并不是用来响应点击事件的,它主要是用来设置初始选中状态的,所以点击后不会自动更新这个值,这就是为什么你遍历后全是false的原因。

直接从点击事件获取目标元素

Vaadin的SeriesClickEvent已经封装了你需要的点击信息,直接调用e.getPoint()就能拿到被点击的DataSeriesItem,根本不用遍历所有项:

chart.addSeriesClickListener(e -> {
    // 将事件中的Point强转为DataSeriesItem
    DataSeriesItem clickedItem = (DataSeriesItem) e.getPoint();
    System.out.println("被点击的元素: " + clickedItem.getName() + ", 占比: " + clickedItem.getY());
});

如果需要高亮选中的饼图块

要是你希望点击后让对应的饼图块保持选中高亮状态,可以手动更新selected属性并刷新图表:

chart.addSeriesClickListener(e -> {
    DataSeries ds = (DataSeries) e.getSeries();
    // 先取消所有项的选中状态,避免多个高亮
    for (DataSeriesItem item : ds.getData()) {
        item.setSelected(false);
    }
    // 获取当前点击的项并设置选中
    DataSeriesItem clickedItem = (DataSeriesItem) e.getPoint();
    clickedItem.setSelected(true);
    // 更新图表,让选中状态生效
    ds.update(clickedItem);
    // 输出选中信息
    System.out.println("选中的元素: " + clickedItem.getName());
});

内容的提问来源于stack exchange,提问作者dBocca

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 17:28:14