如何在JFreeChart上仅显示所选类别的值?

时间:2013-09-19 08:22:38

标签: java swt jfreechart

是否可以在JFreeChart上仅显示所选类别的值?

chart http://img200.imageshack.us/img200/8329/2npa.png

例如,我在上面的图片中有三个类别,我想给用户一个选择选项,只能看到所选类别的值。

这是我的JFreeChart创建代码:

    lineDataset = new XYSeriesCollection();
    JFreeChart result = ChartFactory.createXYAreaChart("", "Mesafe", "Seviye", lineDataset, PlotOrientation.VERTICAL, true, true, false);
    plot = (XYPlot) result.getPlot();
    ValueAxis axis = plot.getDomainAxis();
    axis.setAutoRange(true);

1 个答案:

答案 0 :(得分:2)

从情节中获取渲染器让我们有机会通过

设置系列的可见性
renderer = plot.getRenderer();
renderer.setSeriesVisible(int indexOfSeries, Boolean isSelected);

为每个系列创建复选框并向这些复选框添加选择或操作侦听器是图表与用户之间交互的好方法。

对于SWT:

        Button btnCheckButton = new Button(parent, SWT.CHECK);
        btnCheckButton.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                if(btnCheckButton.getSelection()) {
                    setSeriesVisibility((Integer)btnCheckButton.getData(seriesName), true);
                } else {
                    setSeriesVisibility((Integer)btnCheckButton.getData(seriesName), false);
                }
            }
        });
        btnCheckButton.setText(seriesName);
        btnCheckButton.setData(seriesName, index);
        btnCheckButton.setSelection(true);

这是setter功能

public void setSeriesVisibility(int i, boolean isSelected) {
    renderer.setSeriesVisible(i, isSelected);
}