2016-11-30 2 views
0

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

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)); 
     }); 
} 
} 

ответ

1

Вам нужно создать класс с имуществом идентификатора (целое число), и это должно выглядеть так:

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")); 
} 
} 
Смежные вопросы