为什么首先使用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
字段对另一对象不可见。ChartMouseListener
与MouseListener
分开的原因是JFreeChart创建自己的事件,该事件包含有关鼠标指针“下方”的图表中实体的附加信息。