2012-11-15 6 views
10

Próbuję uzyskać wybór z TableView w JavaFX 2.0. co się dzieje, jest to, że muszę się wartości rzędu wybranego w tableview mam nadzieję, że ktoś może mi pomócPrzeczytaj wybór z TableView w JavaFX 2.0

Jak będzie umieszczony na stole

To znaczy chcę, aby uzyskać dane, które wybrać i Jeśli istnieje sposób na obsłużenie zdarzenia, aby automatycznie uzyskać zaznaczony wiersz, należy go automatycznie pobrać.

+0

Chciałbym pomóc, jeśli jestem w stanie. Jednak do tej pory musiałbym zobaczyć Twój kod. –

Odpowiedz

9

trzeba ChangeListener i Clipboard wykonać swoje zadanie :)

przykładowy kod:

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

To było właśnie to, co chciałem, dzięki za twoją pomoc, każda książka polecisz mi java fx – carson314

+1

jedyna książka, którą znam dla javafx2 http: //www.amazon .pl/Pro-JavaFX-Definitive-Clients-Technology/dp/1430268727/ref = sr_1_1? ie = UTF8 & qid = 1353159870 & sr = 8-1 & keywords = javafx + pro – invariant

+0

Mam teraz podobne problemy i nie mogę podziękować niezmiennie dla Twojej odpowiedzi. –

6

Jeśli zrozumiałem to poprawnie, chcesz pobrać numer wiersza komórki aktualnie zaznaczonej w TableView.

Aby to zrobić, należy zwrócić się do SelectionModel z 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

Chodzi mi o to, że chcę uzyskać dane, które wybrałeś i czy jest jakikolwiek sposób obsłużyć zdarzenie, aby automatycznie wybrać wybrany wiersz – carson314

4

To wciąż nie jest jasne do mnie to, co staramy się robić ...

Jednak coraz wybrany wiersz:

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

Jeśli istnieje potrzeba, aby inny panel był widoczny lub inne okno do wyświetlenia, wystarczy dodać moduł obsługi zdarzeń do właściwości onclicked lub takie?

Czy to masz na myśli?

+0

, który chce skopiować dane, gdy użytkownik wybierze wiersz w TableView, więc chce wiedzieć, które wydarzenie zostanie wywołany po wybraniu wiersza. – invariant

+0

ah teraz ma sens :) ale widzę, że już odpowiedziałeś – 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); 
     } 
     } 
    }); 

Używając tego kodu można uzyskać wybraną wartość z JavaFX Tableview komórki.

Dzięki ..

Powiązane problemy