Заполнение TableColumn CellValueFactory списком‹Integer›

Как я могу заполнить ячейки TableColumns из CellValueFactory в javafx, используя список? У меня есть список определенных целых чисел, которые я хочу отобразить в своем столбце, и я понятия не имею, как правильно использовать setCellValueFactory для отображения только целых чисел, которые я сохранил в этом списке.

package com.editor.controller;

import java.util.ArrayList;
import java.util.List;

import com.editor.drops.DropManager;
import com.editor.drops.DropTable;

import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.fxml.FXML;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;

public class EditorController {

@FXML
private TableView<Integer> idTable;

@FXML
private TableColumn ids; //What goes here exactly? <P, S> ?

private static final ObservableList<Integer> NPCS = FXCollections.observableArrayList();

public static final List<DropTable> TABLES = new ArrayList<>();

@FXML
private void initialize() {
        DropManager.loadDrops();
        TABLES.forEach(table -> {
            table.getIds().forEach(id -> NPCS.add(id));
        });
}
}

person Metorrite    schedule 30.11.2016    source источник


Ответы (1)


Вам нужно создать класс со свойством id (integer), и он должен выглядеть так:

public class SomeClass {
    private int id;

public int getId() {
    return pid;
}

public void setId(int id) {
    this.id = id;
}
}
public class EditorController {

@FXML
private TableView<SomeClass> idTable;

@FXML
private TableColumn<SomeClass, Integer> ids; 
private static final ObservableList<Integer> NPCS = FXCollections.observableArrayList();

public static final List<DropTable> TABLES = new ArrayList<>();

@FXML
private void initialize() {
    DropManager.loadDrops();
    TABLES.forEach(table -> {
        table.getIds().forEach(id -> NPCS.add(id));
    });
 ids.setCellValueFactory(new PropertyValueFactory<SomeClass, Integer>("id"));
}
}
person Zoltanik    schedule 01.12.2016