如何结合 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();
我设法整理了一个代码,允许我在 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();