Java JFreechart右键单击XYItemEntity

Java JFreechart右键单击XYItemEntity,java,jfreechart,Java,Jfreechart,我意识到chartMouseClicked方法只有在用户左键单击图表时才会被调用。MousePressed()和MouseRelease()方法是在用户右键单击图表时被调用的。但我需要更多的东西。我需要它们在一起。我需要找到用户是否右键单击XYItemEntity。然后我将显示新的弹出菜单项。如果用户选择菜单项,我将从XYITEM传递信息。如果它不是XYItemEntity,我将不会更新图表的弹出菜单。这就是如何检查chartMouseClicked上的XYITEM实体 panel.addCha

我意识到chartMouseClicked方法只有在用户左键单击图表时才会被调用。MousePressed()和MouseRelease()方法是在用户右键单击图表时被调用的。但我需要更多的东西。我需要它们在一起。我需要找到用户是否右键单击XYItemEntity。然后我将显示新的弹出菜单项。如果用户选择菜单项,我将从XYITEM传递信息。如果它不是XYItemEntity,我将不会更新图表的弹出菜单。这就是如何检查chartMouseClicked上的XYITEM实体

panel.addChartMouseListener(new ChartMouseListener() {
        public void chartMouseClicked(final ChartMouseEvent event) {
            /** If Time Instance point is clicked */
            if (event.getEntity() instanceof XYItemEntity) {

}}

我已经设法找到了一个结合chartMouseMoved和MouseRelease方法的解决方案

 public void chartMouseMoved(final ChartMouseEvent event) {
            if (event.getEntity() instanceof XYItemEntity) {
                panel.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
                clickedSimulationItem = (XYItemEntity) event.getEntity();
            } else if (event.getEntity() instanceof PlotEntity) {
                handleMouseMoveOnPlot(event);
            } else {
                panel.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
                clickedSimulationItem = null;
            }
        }


private void addMouseListener() {
    panel.addMouseListener(new MouseListener() {
        @Override
        public void mouseReleased(MouseEvent e) {
            if (e.isPopupTrigger()) {
                if (clickedSimulationItem != null) {

                        panel.getPopupMenu().add(new JMenuItem("denem"));
                        /** update pop up */
                    }
                }
            }
        }

        @Override
        public void mouseClicked(MouseEvent e) {
            // TODO Auto-generated method stub
        }

        @Override
        public void mousePressed(MouseEvent e) {
            // TODO Auto-generated method stub
        }

        @Override
        public void mouseEntered(MouseEvent e) {
            // TODO Auto-generated method stub
        }

        @Override
        public void mouseExited(MouseEvent e) {
            // TODO Auto-generated method stub
        }
    });
}

ChartMouseEvent::getTrigger
“返回触发此事件的鼠标事件。”当我右键单击图表时,不会触发ChartMouseListener方法,会调用MouseListener方法。所以我不能调用ChartMouseeEvent::getTrigger。你认为呢?Mac和Windows上的弹出触发器是不同的。你可能需要一个定制的
图表面板
isPopupTrigger()
应同时在
mousePressed
mouseereleased
中进行检查,以确保跨平台功能正常。