chartMouseListener和MouseListener

时间:2014-04-29 16:41:15

标签: java mouseevent jfreechart mouselistener mouseclick-event

为什么一开始工作chartMouseClicked(JFreeChart库),然后已经鼠标点击?

boolean isDoubleClicked = false;
chartPanel.addMouseListener(new MouseListener() {
        @Override
        public void mouseClicked(MouseEvent me) {
            if (me.getClickCount() == 2 &&) {
                isDoubleClicked = true;
            }
        }
        @Override
        public void mousePressed(MouseEvent me) {}
        @Override
        public void mouseReleased(MouseEvent me) {}
        @Override
        public void mouseEntered(MouseEvent me) {}
        @Override
        public void mouseExited(MouseEvent me) {}
    });



chartPanel.addChartMouseListener(new ChartMouseListener() {
        @Override
        public void chartMouseClicked(ChartMouseEvent cme) {
            if (isDoubleClicked)
                System.out.println("Double clicked!");
        }
        @Override
        public void chartMouseMoved(ChartMouseEvent cme) {}
    });

所以,System.out.println("Double clicked!");不起作用。如何纠正?

2 个答案:

答案 0 :(得分:2)

这里有两个不同的侦听器对象,一个是MouseListener实例(用于侦听面板上的鼠标事件),另一个是ChartMouseListener实例(用于侦听图表上的鼠标事件)在小组中)。它们在单独的侦听器列表中注册,而另一个对象的isDoubleClicked字段对另一个对象不可见。

ChartMouseListenerMouseListener分开的原因是JFreeChart创建了自己的事件,其中包含有关图表中实体的其他信息,该图表位于"下面。鼠标指针。

答案 1 :(得分:0)

要添加@DavidGilbert,您还可以使用ChartMouseEvent.getTrigger().getClickCount()检测图表中的双击。