2012-11-15 68 views
10

Tôi đang cố gắng để có được lựa chọn từ một TableView trong JavaFX 2.0. những gì xảy ra là tôi cần phải nhận được giá trị của hàng bạn đã chọn trong tableview Tôi hy vọng ai đó có thể giúp tôiĐọc lựa chọn từ TableView trong JavaFX 2.0

Như sẽ được đặt trên một chiếc bàn

tôi có nghĩa là tôi muốn để có được các dữ liệu bạn chọn và nếu có bất kỳ cách nào để xử lý một sự kiện để tự động nhận hàng đã chọn

+0

Rất muốn trợ giúp, nếu tôi có thể. Cần phải xem mã của bạn cho đến nay. –

Trả lời

9

bạn cần ChangeListenerClipboard để hoàn thành nhiệm vụ của bạn :)

Ví dụ Code:

Clipboard clipboard = Clipboard.getSystemClipboard(); 
    // add listner to your tableview selecteditemproperty 
userTable.getSelectionModel().selectedItemProperty().addListener(new ChangeListener() { 
       // this method will be called whenever user selected row 
      @override 
      public void chnaged(ObservableValue observale, Object oldValue,Object newValue) { 
       UserClass selectedUser = (UserClass)newValue; 
      ClipboardContent content = new ClipboardContent(); 
       // make sure you override toString in UserClass 
      content.putString(selectedUser.toString()); 
      clipboard.setContent(content); 
      } 
      }); 
+0

Nó chỉ là những gì tôi muốn, cảm ơn sự giúp đỡ của bạn, bất kỳ cuốn sách bạn đề nghị tôi java fx – carson314

+1

cuốn sách duy nhất tôi biết cho javafx2 http: //www.amazon .com/Pro-JavaFX-Definitive-Khách hàng-Công nghệ/dp/1430268727/ref = sr_1_1? ie = UTF8 & qid = 1353159870 & sr = 8-1 & keywords = javafx + pro – invariant

+0

Tôi hiện đang chạy đến các sự cố tương tự và tôi không thể cảm ơn đủ bất biến cho câu trả lời của bạn. –

6

Nếu tôi hiểu chính xác, bạn muốn truy xuất số hàng của ô hiện đang được chọn trong TableView.

Để làm điều này, yêu cầu SelectionModel của TableView:

// tv is of type TableView 
    TableView.TableViewSelectionModel selectionModel = tv.getSelectionModel(); 
    ObservableList selectedCells = selectionModel.getSelectedCells(); 
    TablePosition tablePosition = (TablePosition) selectedCells.get(0); 
    int row = tablePosition.getRow(); // yields the row that the currently selected cell is in 
+0

Ý tôi là tôi muốn lấy dữ liệu bạn chọn và nếu có cách nào để xử lý một sự kiện để tự động nhận hàng được chọn – carson314

4

Nó vẫn không rõ ràng với tôi những gì bạn đang cố gắng làm ...

Tuy nhiên, nhận được hàng đã chọn:

final Countries selectedCountry = tblCountries.getSelectionModel().getSelectedItem(); 

Nếu có nhu cầu cửa sổ khác sẽ hiển thị hoặc cửa sổ khác hiển thị chỉ cần thêm người tổ chức sự kiện vào thuộc tính bị cấm hoặc như vậy?

Ý bạn là gì?

+0

, anh ấy muốn sao chép dữ liệu khi người dùng đã chọn một hàng trong TableView, vì vậy anh ấy muốn biết sự kiện nào sẽ được gọi khi chúng tôi chọn một hàng. – invariant

+0

ah bây giờ nó có ý nghĩa :) nhưng tôi thấy bạn đã trả lời nó – Perneel

3
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ị được lựa chọn từ JavaFX tableView di động.

Cảm ơn ..

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