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會爲你自動完成整個方法。然後你可以粘貼在膽量。