2013-06-30 97 views
23

Làm cách nào để lấy mục đã chọn từ một TableView trong JavaFX?Lấy mục đã chọn từ JavaFX TableView

Tôi hiện đang sử dụng

ObservableList selectedItems = taview.getSelectionModel().getSelectedItems(); 

nhưng điều đó không trả lại cho tôi một trong những sản phẩm được chọn trong mô hình lựa chọn.

Trả lời

59

Ok, giả sử bạn có lớp mô hình dữ liệu có tên là Person. Bằng cách này:

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

Lưu ý rằng TableView phải mất một Person như một đối số kiểu để tránh đúc:

@FXML 
private TableView<Person> taview; 

hoặc

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

khi hàng của bạn được chọn, bạn sẽ trở lại một Person ví dụ. Sau đó, làm những gì bạn muốn với ví dụ đó.

+0

** thanku ** rất nhiều – user2536158

+0

Bạn được hoan nghênh! :) –

+0

nhanh chóng và đơn giản .. – 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); 
     } 
     } 
    }); 

Sử dụng mã này bạn có thể nhận được giá trị đã chọn từ ô JAVAFX TABLEVIEW.

Cảm ơn ..

+0

mã này làm việc cho tôi. Nhưng nó chỉ hoạt động khi tôi chọn một số hàng khác. Làm thế nào để chạy mã này mỗi khi một tablecell được chọn ngay cả khi cùng một hàng được chọn – viper

+0

Có cách nào để có được tọa độ chuột bên trong trình lắng nghe này để hiển thị một cái gì đó giống như một menu popup? – leobelizquierdo

2

@pranishres

Dưới đây là thử của tôi cho một người biết lắng nghe sự thay đổi lựa chọn ô (ngay cả khi hàng không thay đổi), lấy cảm hứng bởi mã @Java Man:

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

làm việc cho tôi;) cảm ơn –

-1

nếu bạn có một lớp Bean có tên là Employee.

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

lý do tại sao lặp lại câu trả lời được chấp nhận? – kleopatra

Các vấn đề liên quan