[JavaFX]JavaFX中ListView双击事件

Head Pic: 【女の子】「miku 鱼」/「千夜QYS3」のイラスト [pixiv]

最近在一个项目中用到了ListView这个组件用来实现文件浏览器。

问题

在通常的操作系统中,我们都是双击打开一个目录的,而JavaFX给的API文档中是这样给出选择事件的:

1
2
3
4
fileManager.getSelectionModel().selectedItemProperty().addListener(
(ObservableValue<? extends String> ov,String oldVal,String newVal) -> {
//Your code here.
});

用一个$lamda$表达式来完成,但是这样的事件是选择事件,而非咱们要的双击。

解决

双击自然是要想到鼠标了,就给ListView监听鼠标事件即可。

1
2
3
4
5
6
7
8
9
fileManager.setOnMouseClicked(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
if(event.getButton() == MouseButton.PRIMARY && event.getClickCount() == 2) {
TypeName currentItem = fileManager.getSelectionModel().getSelectedItem();
//Your code here.
}
}
});

其中TypeName是你ListView存放的类型。

分享到: