1

我设法收集了一个代码,该代码允许我在 Jfreechart 上选择一个点并在 JavaFX TableView 上选择相应的点并选择一个或多个点。然而,这是一种或另一种情况。我想要的是能够听到 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) {
                }   
                    
                }
                        
            });
4

1 回答 1

2

只需查看文档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();

于 2020-09-21T16:46:35.527 回答