如何将鼠标双击事件监听器添加到javafx中ListView的单元格?

时间:2014-03-20 18:29:22

标签: listview javafx mouseevent

我在ListView中有一个链接列表。我想将mouseEventListener添加到列表的每个单元格,以便每当用户双击列表项时链接被打开。我可以编写自己打开链接的功能,但是我无法在列表中的每个单元格中添加doubleclick事件。请帮忙......

2 个答案:

答案 0 :(得分:24)

让我们将您的ListView视为播放列表。现在,您可以使用

在每个单元格上实现具有双击功能的鼠标侦听器
playList.setOnMouseClicked(new EventHandler<MouseEvent>() {

    @Override
    public void handle(MouseEvent click) {

        if (click.getClickCount() == 2) {
           //Use ListView's getSelected Item
           currentItemSelected = playList.getSelectionModel()
                                                    .getSelectedItem();
           //use this to do whatever you want to. Open Link etc.
        }
    }
}

答案 1 :(得分:4)

我必须解决同样的问题,我的ListView包含一个网格窗格和标记文本,因此您必须更改&#39; instanceof&#39;以及&#39;或&#39;的另一面你有什么。

(假设您的ListView名为listView):

listView.setOnMouseClicked(new EventHandler<MouseEvent>() {
    @Override
    public void handle(MouseEvent event) {
        if(event.getButton() == MouseButton.PRIMARY && event.getClickCount() == 2 &&
           (event.getTarget() instanceof LabeledText || ((GridPane) event.getTarget()).getChildren().size() > 0)) {

           //your code here        
         }    
    }
});

如果用户点击项目的最边缘附近和ListView的边框,它可能不会传递if循环,但听起来用户不会在你的情况下这样做。< / p>

希望这有帮助。