2017-07-28 1 views
0

私は今、私はComboBoxTableCellをしたい、この列にcellValueFactoryを設定する方法を考え出しLOCALDATEComboBoxTableCell JavaFXの

public class Item { 
    private ArrayList<LocalDate> dates; 
} 

、別のクラスのTableColumnの

ObservableList<Item> itemObservableList = FXCollections.observableArrayList(); 
TableColumn<Item, LocalDate> datesColumn = new TableColumn<>("Dates"); 
datesColumn.setCellFactory(param -> new ComboBoxTableCell<>()); 

のArrayListを使用して、このクラスのようなものを持っていますItemクラスのオブジェクトから値を取得する。したがって、すべてのComboBoxは、Itemオブジェクトに基づいて独自の値を持つ必要があります。

答えて

1

あなたはこのようComboBoxTableCellstartEdit()方法@Overrideことができます。ですから、その項目の日付を個々の行のためのあなたのコンボボックスで日付を持っています

datesColumn.setCellFactory(param -> new ComboBoxTableCell<Item,LocalDate>(){ 
     @Override public void startEdit() { 
       Item item = (Item)getTableRow().getItem(); 
       getItems().setAll(item.getDates()); 
       super.startEdit(); 
     } 
}); 

を。あなたはStringConverter<LocalDate>を定義することができます。

+0

しかし、私はCellDataのArrayList を持っています。私のComboBoxは、すべてのItemオブジェクトからArrayListsの行を持ちます。 – EmberTraveller

+0

ああ、私はモデルではなく、リストではないので、私はasnwerを編集します – Sunflame

+0

ありがとう!それは、それが仮定されているようにかなり動作しません。なぜなら、編集が始まるたびにアイテムが複製されるからです。しかし、私は自分自身でそれを理解すると思います:) – EmberTraveller