2017-02-14 3 views
1

Я смотрел вокруг и заметил, ответ дал на этот пост: Detect doubleclick on row of TableView JavaFXОбнаружение двойной щелчок на рядные TableView JavaFX 2

Однако этот пост использует лямбда-выражения, и я не уверен, как преобразовать их в использоваться в коде JavaFX 2. Моя основная цель - щелкнуть строку, а затем открыть новое окно с информацией, которая была сохранена в этой строке. Пока я могу заставить Обратный звонок работать, я смогу взять его оттуда! Любой совет будет принят во внимание.

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

Дубликат 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 (или что ему нужно), нажмите enter, и большинство IDE автоматически закроют полный метод для вас. Затем вы можете просто вставить кишки.

Смежные вопросы