检测TableView JavaFX 2的ROW上的双击

时间:2017-02-14 06:12:21

标签: tableview javafx-2

我一直在环顾四周,注意到这篇文章的回复: Detect doubleclick on row of TableView JavaFX

但是,这篇文章使用lambda表达式,我不确定如何转换它们以用于JavaFX 2代码。我的主要目标是能够单击一行,然后弹出一个新窗口,其中包含存储在该行中的信息。只要我能使Callback工作,我就可以从那里拿走它!任何建议将不胜感激。

table.setRowFactory( tv -> {
    TableRow<MyType> row = new TableRow<>();
    row.setOnMouseClicked(event -> {
        if (event.getClickCount() == 2 && (! row.isEmpty()) ) {
            MyType rowData = row.getItem();
            System.out.println(rowData);
        }
    });
    return row ;
 });

2 个答案:

答案 0 :(得分:1)

你走了:

table.setRowFactory(tv -> {
    TableRow<MyType> row = new TableRow<>();
    row.setOnMouseClicked(new EventHandler<MouseEvent>() {
        @Override
        public void handle(MouseEvent event) {
            if (event.getClickCount() == 2 && (!row.isEmpty())) {
                MyType rowData = row.getItem();
                System.out.println(rowData);
            }
        }
    });
    return row;
});

根据您的IDE,当光标位于setOnMouseClicked()的括号中时,您通常可以按ctrl + space,它会告诉您它需要什么。然后你可以输入new EventHandler(或者它需要的任何东西),按回车键,大多数IDE会自动为你完成整个方法。然后你可以粘贴内脏。

答案 1 :(得分:0)

Aconselho a usarem esse metodo, é muito mais fácil e rápido para solucionar o problema。

建议你用这种方式解决问题

@FXML
     public void handle(MouseEvent event) {
         
             if (event.getClickCount() == 2) {
                  TableView.TableViewSelectionModel<Pessoa> p = tableFamilia.getSelectionModel();
                   System.out.println(p.getSelectedItem().getNome());
             }
           
     
    }