如何使用JFreeChart在饼图中突出显示或聚焦特定饼图部分

时间:2017-02-06 10:32:33

标签: java swing jfreechart

我正在使用Swing应用程序中的JFreeChart开发一个简单的饼图。基于关键事件,我想要关注或突出显示饼图的特定饼图部分。 知道JFreeChart中的api提供了这样的功能吗?

1 个答案:

答案 0 :(得分:3)

您可以在PiePlot上使用setExplodePercent(),就像他们显示here一样。

JFreeChart chart = ChartFactory.createPieChart(…);
PiePlot plot = (PiePlot) chart.getPlot();
plot.setExplodePercent(KEY, PERCENT);
  

我需要一些方法来设置边框或根据某些事件将焦点设置到该部分,例如鼠标悬停在特定部分。

我在ChartMouseListener中向createDemoPanel()添加了PieChartDemo1,尝试了@ trashgod的想法。将鼠标悬停在每个部分上以查看效果。尝试使用percent的不同值来获得所需的效果。

pie chart

panel.addChartMouseListener(new ChartMouseListener() {

    private Comparable lastKey;

    @Override
    public void chartMouseMoved(ChartMouseEvent e) {
        ChartEntity entity = e.getEntity();
        if (entity instanceof PieSectionEntity) {
            PieSectionEntity section = (PieSectionEntity) entity;
            PiePlot plot = (PiePlot) chart.getPlot();
            if (lastKey != null) {
                plot.setExplodePercent(lastKey, 0);
            }
            Comparable key = section.getSectionKey();
            plot.setExplodePercent(key, 0.10);
            lastKey = key;
        }
    }

    @Override
    public void chartMouseClicked(ChartMouseEvent e) {
    }
});