当用户单击饼图的一部分时,如何创建弹出屏幕?
例如;
- 我的饼图显示了语言的分布,例如英语 50% 德语 20% 法语 20% 和意大利语 10% 等。
- 当用户单击饼图中的英文部分时,必须显示一个显示有关英文分布信息的弹出屏幕。
我如何在 vaadin 中添加 invient 图表来做到这一点?
使用com.invient.vaadin.charts.InvientCharts.PointClickListener
这样的:
chart.addListener(new PointClickListener() {
@Override
public void pointClick(PointClickEvent pointClickEvent) {
Item item = pointItems.get(pointClickEvent.getPoint());
Window popupWindow = new Window();
// Add stuff to your window
getWindow().addWindow(popupWindow);
}
});
非常简单:) getWindow() 方法是在 Component 中定义的,所以调用类应该是实现它的类。如果您使用的是ThreadLocal 模式,您可以在代码中的任何位置获取对主窗口的引用。
编辑:我忘了提到 pointItems 在类中声明如下:
Map<Point, Item> pointItems = new HashMap<Point, Item>();
在创建点时,我将 Point 和 Item 对象放到地图上。您还可以创建自己的 Point 实现并将 Item 封装在其中。太糟糕了 Invient Charts 几乎声明了每个类 final 所以你不能扩展例如。日期时间点:/