2017-05-17 38 views
0

TableViewコンテンツを持つアプリケーションを作成しています。選択したすべての行セルデータをTextFieldに選択したいと思います。私はこの質問で始めた:Getting selected item from a JavaFX TableViewAskJavaFX:TableView - 選択したアイテム列の値(文字列)をTextFieldに取得

しかし、私はこれらのデータの私の最初の列を取得することができます。私の質問は、どのように私は2番目と3番目の列を得ることができますか?ここに私のコードは次のとおりです。

table.getSelectionModel().selectedItemProperty().addListener(new ChangeListener() { 
     @Override 
     public void changed(ObservableValue observableValue, Object oldValue, Object newValue) { 
      if (table.getSelectionModel().getSelectedItem() != null) { 
       TableViewSelectionModel selectionModel = table.getSelectionModel(); 
       ObservableList selectedItem = selectionModel.getSelectedCells(); 
       TablePosition getName = (TablePosition) selectedItem.get(0); 
       Object val1 = getName.getTableColumn().getCellData(newValue); 
       name.setText("" + val1); 
      } 
     } 
    }); 

答えて

0

newItemテーブルに行全体を表すオブジェクトです。

変更リスナーを正しく入力すると、その行のすべてのデータにアクセスできます。私。その後、ちょうど使用し、あなたには、いくつかのクラスTため

TableView<T> table ; 

を定義したと仮定すると、以下の(あなたがテーブルビューで使用されるものは何でもクラスでTを置き換える):

table.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<T>() { 
    @Override 
    public void changed(ObservableValue<? extends T> observableValue, T oldValue, T newValue) { 
     // now just call methods on newValue to get the data you need... 
    } 
}); 
1

選択した項目のプロパティは、選択モデルは、単一選択に設定されているときに使用される、だから、rowFactoryを定義することができます。

Object cellItem = cell.getTableRow().getItem(); 

これはあなたが私はあなたのために働いているコードの下に願って

のように行うことができますtable.Soの項目を行なります。リスナーの方法で

table.setRowFactory(tv -> { 
    TableRow<DataType> row = new TableRow<>(); 
     row.setOnMouseClicked(event -> { 
      if (!row.isEmpty()) { 
       DataType clickedRow = row.getItem(); 
       TableViewSelectionModel selectionModel = table.getSelectionModel(); 
       ObservableList selectedItem = selectionModel.getSelectedCells(); 
       TablePosition getName = (TablePosition) selectedItem.get(0); 
       Object val1 = getName.getTableColumn().getCellData(clickedRow); 
       name.setText("" + val1); 
       System.out.println("selected :" + val1);  
       } 
      }); 
     return row; 
}); 
関連する問題