2013-06-30 4 views

ответ

59

Хорошо, скажем, у вас есть класс модели данных с именем Person. Таким образом:

Person person = taview.getSelectionModel().getSelectedItem(); 
System.out.println(person.getName());  

Обратите внимание, что TableView должен принять Person в качестве аргумента типа, чтобы избежать литья:

@FXML 
private TableView<Person> taview; 

или

TableView<Person> taview = new TableView<>(); 

, когда будет выбран ряд, вы будете возвращаться один Person экземпляр. Затем сделайте все, что захотите, с этим экземпляром.

+0

** thanku ** so much – user2536158

+0

Добро пожаловать! :) –

+0

быстрый и простой .. – rainer

6
tableview.getSelectionModel().selectedItemProperty().addListener(new ChangeListener() { 
    @Override 
    public void changed(ObservableValue observableValue, Object oldValue, Object newValue) { 
     //Check whether item is selected and set value of selected item to Label 
     if(tableview.getSelectionModel().getSelectedItem() != null) 
     {  
      TableViewSelectionModel selectionModel = tableview.getSelectionModel(); 
      ObservableList selectedCells = selectionModel.getSelectedCells(); 
      TablePosition tablePosition = (TablePosition) selectedCells.get(0); 
      Object val = tablePosition.getTableColumn().getCellData(newValue); 
      System.out.println("Selected Value" + val); 
     } 
     } 
    }); 

Используя этот код, вы можете получить выбранное значение из JAVAFX TABLEVIEW Cell.

Спасибо ..

+0

этот код работал для меня. Но он работает только тогда, когда я выбираю еще одну строку. Как я могу запускать этот код каждый раз, когда выбирается таблица, даже если выбрана одна и та же строка. – viper

+0

Есть ли способ получить координату мыши внутри этого прослушивателя, чтобы показать что-то вроде всплывающего меню? – leobelizquierdo

2

@pranishres

Вот моя попытка для слушателя изменения выбора ячейки (даже если строка не изменяется), вдохновленный кодом @Java Человека:

tableView.getSelectionModel().setCellSelectionEnabled(true); 
ObservableList selectedCells = tableView.getSelectionModel().getSelectedCells(); 

selectedCells.addListener(new ListChangeListener() { 
    @Override 
    public void onChanged(Change c) { 
     TablePosition tablePosition = (TablePosition) selectedCells.get(0); 
     Object val = tablePosition.getTableColumn().getCellData(tablePosition.getRow()); 
     System.out.println("Selected Value" + val); 
    } 
}); 
+0

работал для меня;) спасибо –

-1

, если у вас есть класс Bean с именем Employee.

Employee employee= tblView.getSelectionModel().getSelectedItem(); 
txtEmployeeName.setText(employee.getName()); 
+0

Зачем повторять принятый ответ? – kleopatra

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