ChartMouseEvent and corresponding data

A discussion forum for JFreeChart (a 2D chart library for the Java platform).
Locked
daniel_henrique
Posts: 16
Joined: Mon Feb 20, 2006 3:52 pm

ChartMouseEvent and corresponding data

Post by daniel_henrique » Sun Jul 09, 2006 10:27 pm

Hi, everybody.

How can i write a ChartMouseListener to retrieve the same information showed by a XYToolTipGenerator ? Should i write a "fake" XYToolTipGenerator to get the data ?

Thanks.

daniel_henrique
Posts: 16
Joined: Mon Feb 20, 2006 3:52 pm

Post by daniel_henrique » Sun Jul 09, 2006 11:00 pm

I've look how XYToolTipGenerator works and i've figured out how to proceed.

Code: Select all


(...)
cp.addChartMouseListener(new ChartMouseListener() {
  public void chartMouseClicked(ChartMouseEvent event) {
    printEntity(event.getEntity());
  }
  public void chartMouseMoved(ChartMouseEvent event) {
    printEntity(event.getEntity());
  }
});

(...)
private void printEntity(final ChartEntity chartEntity) {
    if (chartEntity != null && XYItemEntity.class.isInstance(chartEntity)) {
        XYItemEntity xyItemEntity = (XYItemEntity) chartEntity;
        Dataset ds = xyItemEntity.getDataset();
        if (OHLCDataset.class.isInstance(ds)) {
            OHLCDataset ohclDs = (OHLCDataset) ds;

            Number x = ohclDs.getX(xyItemEntity.getSeriesIndex(),
                                   xyItemEntity.getItem());
            Date d = null;
            if (x != null) {
                d = new Date(x.longValue());
            }

            Object[] params = {
                d,
                ohclDs.getHigh(xyItemEntity.getSeriesIndex(),
                               xyItemEntity.getItem()),
                ohclDs.getLow(xyItemEntity.getSeriesIndex(),
                              xyItemEntity.getItem()),
                ohclDs.getOpen(xyItemEntity.getSeriesIndex(),
                               xyItemEntity.getItem()),
                ohclDs.getClose(xyItemEntity.getSeriesIndex(),
                                xyItemEntity.getItem()),
                ohclDs.getVolume(xyItemEntity.getSeriesIndex(),
                                 xyItemEntity.getItem()), };

            String msg = MessageFormat
                .format(
                        "date {0,date} high {1,number} low {2,number} open {3,number} close {4,number} volume {5,number}",
                        params);
            System.out.println(msg);
        }
    }
}
(...)
Thanks.

daniel_henrique
Posts: 16
Joined: Mon Feb 20, 2006 3:52 pm

Post by daniel_henrique » Sun Jul 09, 2006 11:58 pm

Now i need to plot some lines inside my chart using mouse events.
How can i translate integer mouse coordinates (x,y) from MouseEvent to integer/float (x,y) chart coordinates ?

Thanks.

david.gilbert
JFreeChart Project Leader
Posts: 11734
Joined: Fri Mar 14, 2003 10:29 am
antibot: No, of course not.
Contact:

Post by david.gilbert » Mon Jul 10, 2006 10:55 am

daniel_henrique wrote:How can i translate integer mouse coordinates (x,y) from MouseEvent to integer/float (x,y) chart coordinates ?
Check out MouseListenerDemo4 (included with the JFreeChart Developer Guide).
David Gilbert
JFreeChart Project Leader

:idea: Read my blog
:idea: Support JFree via the Github sponsorship program

daniel_henrique
Posts: 16
Joined: Mon Feb 20, 2006 3:52 pm

Post by daniel_henrique » Mon Jul 10, 2006 11:26 pm

Hi, David.

Should i purchase the Developer Guide to see the source code of MouseListenerDemo4 ? Any "free" :D guidance or clue ? I've found some "translateScreen" methods, but i don't know how to proceed. :?:

Thanks.

gribas
Posts: 32
Joined: Thu Jan 26, 2006 5:34 pm

Post by gribas » Tue Jul 11, 2006 1:49 pm

daniel_henrique wrote:Hi, David.

Should i purchase the Developer Guide to see the source code of MouseListenerDemo4 ? Any "free" :D guidance or clue ? I've found some "translateScreen" methods, but i don't know how to proceed. :?:
You should. Take a look at http://www.jfree.org/phpBB2/viewtopic.php?t=18031#51778 and see if it helps.

Regards,
Gustavo

Locked