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
相关产品推荐
相关产品推荐

