2016-11-18 9 views
0

現在のセルの値を取得しようとしていますが、配列リストを単一の列にマッピングしています。ここでエラーセルデータ値を取得しようとしています。JavaFX TableView

は私のコードです:ここでは

TableColumn<ObservableList<String>, String> nameColumn = new TableColumn<>("Name"); 
     nameColumn.setCellValueFactory(cellData -> { 
      Integer rowIndex = cellData.getValue(); 
      return new ReadOnlyStringWrapper(rangeArrayList.get(rowIndex)); 
     }); 

     tableView.getColumns().add(nameColumn); 

は私のエラーです:

enter image description here

どのように私はこのエラーを修正することができるだろうか?

答えて

1

cellValueFactoryには、TableColumn.CellDataFeaturesに含まれている値以外の行に関する情報がないため、行情報が含まれていない限り、これを行うことはできません。

あなたがデータを取得するために行番号を使用したい場合は、インデックスがTableCellに利用可能であることから、あなたは、cellFactoryを使用してこれを行うことができます。

public static <T> Callback<TableColumn<T, Void>, TableCell<T, Void>> cellFactory(final List<?> list) { 
    return c -> new TableCell<T, Void>() { 

     @Override 
     public void updateIndex(int i) { 
      super.updateIndex(i); 
      setText(isEmpty() ? "" : Objects.toString(list.get(i), "")); 
     } 

    }; 
} 
TableColumn<ObservableList<String>, Void> nameColumn = new TableColumn<>("Name"); 
nameColumn.setCellFactory(cellFactory(rangeArrayList)); 
+0

こんにちは、あなたに感謝行番号を表示するのではなく、この特定の列にデータを入力したいと考えています。 – Milan

+0

@Milanもっと良いですか?なぜ細胞の内容とアイテムとの間には関係がないように見えるので、なぜObservableList を名前のプロパティを含むアイテムタイプではなく項目タイプとして使用しているのかわからない... – fabian

+0

ObservableList をなぜ使用しているのか私が列の残りの部分をarraylistからのデータで埋めているためです。 ' – Milan

関連する問題