使用JavaFX ListView时,如果右键单击某个项目,则会选择该项目。
是否有可能仅选择一个项目,如果你左键单击它?
只需过滤MOUSE_PRESSED事件,检查辅助按钮是否按下,使用它,并在需要时添加自定义处理代码。
右键单击还可以触发ContextMenuEvent.CONTEXT_MENU_REQUESTED
OS X触摸板上的事件(此类事件在某种程度上会奇怪地触发选择),因此还可以过滤和使用这些事件。
这对我有用:
public class ListViewSample extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) {
primaryStage.setTitle("List View Sample");
ListView<String> list = new ListView<String>();
ObservableList<String> items =FXCollections.observableArrayList ( "Single", "Double", "Suite", "Family App");
list.setItems(items);
// filter right mouse button
list.addEventFilter(MouseEvent.MOUSE_PRESSED, e ->
{
if( e.isSecondaryButtonDown()) {
e.consume();
}
});
list.addEventFilter(ContextMenuEvent.CONTEXT_MENU_REQUESTED, Event::consume);
// verify selection via logging
list.getSelectionModel().selectedItemProperty().addListener(
(ChangeListener<String>) (observable, oldValue, newValue) -> System.out.println( "Item selected: " + observable + ", " + oldValue + ", " + newValue)
);
StackPane root = new StackPane();
root.getChildren().add(list);
primaryStage.setScene(new Scene(root, 200, 250));
primaryStage.show();
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句