2

This may sound very basic as a question, but i am stuck in JFreechart use.

Let me lay out my problem :

  1. I have a CombinedDomainXYPlot to which I add my subplots as and when required.
  2. I have used my custom JPopup menu and have included a menu item that is intended to provide user the facility to delete a particular subplot
  3. I am assuming that one can find a subplot using findSubplot method of the main plot. I am able to get mouse positions but not able to do anything with PlotRenderingInfo that's required as input.

Would appreciate some help.

Makarand
  • 183
  • 11
  • I would like to locate a subplot of a combineddomainxyplot. I assume that it can be done using findSubplot(PlotRenderingInfo info,Point2D source) method. I am able to locate the 2DPoint so that's not the problem. How do I get the PlotRendering info parameter? – Makarand Dec 15 '11 at 18:33

1 Answers1

2

You can get a List of subplots using getSubplots(). To learn which subplot was clicked, examine the ChartMouseEvent that was sent from the ChartPanel, as suggested here.

Addendum: Here's a simple implementation of ChartMouseListener that will show each ChartEntity as it is clicked.

ChartPanel panel = ...
panel.addChartMouseListener(new ChartMouseListener() {

    @Override
    public void chartMouseClicked(ChartMouseEvent e) {
        System.out.println(e.getEntity().getClass());
    }

    @Override
    public void chartMouseMoved(ChartMouseEvent event) {}
});
Community
  • 1
  • 1
trashgod
  • 203,806
  • 29
  • 246
  • 1,045
  • Thanks for the code @trashgod . I am able to get the chart entity now and I already have the List of subplots. I am confused how to remove the subplot because code above gives me Chart Entity. I tried using the `getClass` as described above. What am I missing? – Makarand Dec 16 '11 at 15:45
  • 1
    Oh Got it solved. `PlotEntity entity = (PlotEntity) event.getEntity(); XYPlot subplot = (XYPlot) entity.getPlot(); plot.remove(subplot);` Where `plot` represents my CombinedDomainXYPlot. Thanks a million @trashgod – Makarand Dec 16 '11 at 16:12
  • 2
    There is another simple way to do this that can be called from anywhere ... `plot.findSubplot(chartPanel.getChartRenderingInfo().getPlotInfo(), chartPanel.getMousePosition());` Where "chartPanel" is your `ChartPanel` object – Makarand Dec 19 '11 at 04:45