为什么首先使用chartMouseClicked(JFreeChart库),然后又使用mouseClicked?

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!");不起作用。如何纠正?

最佳答案

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

ChartMouseListenerMouseListener分开的原因是JFreeChart创建自己的事件,该事件包含有关鼠标指针“下方”的图表中实体的附加信息。

07-24 13:27