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

Kri*_*hna 12 listview javafx mouseevent

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

Ita*_*iha 26

让我们将您ListView视为playList.现在,您可以使用每个单元格上的双击功能实现鼠标侦听器

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.
        }
    }
}
Run Code Online (Sandbox Code Playgroud)


小智 7

我不得不解决同样的问题,我的ListView包含一个网格窗格和带有标签的文本,因此您必须将'instanceof'和'or'的另一面更改为您所拥有的。

(假设您的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        
         }    
    }
});
Run Code Online (Sandbox Code Playgroud)

如果用户单击该项目的最边缘和ListView的边框附近,则可能无法通过if循环,但听起来用户在您的情况下不会这样做。

希望这可以帮助。