2017-02-14 74 views
1

我一直在四处寻找,并已注意到这个帖子上给出的回应: Detect doubleclick on row of TableView JavaFX检测上的ROW双击TableView中的JavaFX 2

然而,这篇文章使用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 ; 
}); 
+0

Duplicate http://stackoverflow.com/questions/26563390/detect-doubleclick-on-row-of-tableview-javafx。 –

+0

我看到了!但是答案不适用于javaFX 2. – Sarah

+1

然后更新到javafx-8。 –

回答

0

在这里你去:

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你通常可以按Ctrl +空格当光标在setOnMouseClicked()括号,它会告诉你需要什么。然后你可以输入new EventHandler(或任何它需要的),按回车键,大多数IDE会为你自动完成整个方法。然后你可以粘贴在胆量。