如何结合 ChartMouseListenerFX 听 CTRL 键

how to listen to CTL key in combination with ChartMouseListenerFX

我设法整理了一个代码,允许我在 Jfreechart 上选择一个点,select 在 JavaFX TableView 上选择相应的点,select 一个或多个点。然而,这是一种或另一种情况。我想要的是能够收听 CTL 键,以便用户只能在 CLT 键按下并单击时选择多个点。所以我的问题是在哪里以及如何放置关键监听器。

XYDataset dataset = createXYDataSet(fieldname1,fieldname2);
            ChartViewer plotframe = new ChartViewer(createXYChart(dataset, fieldname1,fieldname2));
            plotframe.addChartMouseListener(new ChartMouseListenerFX(){

                public void chartMouseClicked(ChartMouseEventFX chartmouseevent) {
                int datapoint;
                selectionmodel.setSelectionMode(SelectionMode.MULTIPLE);
                try {
    
            XYItemEntity ce = (XYItemEntity) chartmouseevent.getEntity();
                    datapoint = ce.getItem();
                    datatable.requestFocus();
                    datatable.getSelectionModel().select(datapoint);
                    datatable.getFocusModel().focus(datapoint);
                    datatable.scrollTo(datapoint);
                }catch (Exception e){   
                }
                }
                public void chartMouseMoved(ChartMouseEventFX chartmouseevent) {
                }   
                    
                }
                        
            });

只看文档http://www.jfree.org/jfreechart/api/javadoc_old/org/jfree/chart/fx/interaction/ChartMouseEventFX.html#getTrigger-- 我看到 getTrigger 会给你 MouseEvent https://docs.oracle.com/javase/8/javafx/api/javafx/scene/input/MouseEvent.html#isControlDown-- 其中有 isControlDown()

所以试试boolean isCtrlDown = chartmouseevent.getTrigger().isControlDown();