У меня есть объект типа ClassTestEvaluation.Он содержит ArrayList типа Task.Этот массив может иметь любое количество задач и не является предсказуемым.Я хочу настроить табличное представление, которое будет отображать заданные задачи в столбцах, чтобы пользователь мог вводить точки.
Моя проблема в том, что я понятия не имею, как установить массив переменной длины, который является частью другого объекта, в качестве источника для моего табличного представления.Я не могу создать оболочку, такую как ClassTestEvaluationItem, с простыми членами task1, task2 и т. Д., Поскольку число задач не фиксировано.Таким образом, мой вопрос заключается в том, что мне нужно сделать, чтобы правильно установить propertyValueFactories для столбцов задач?
Я следовал многим учебным пособиям, подобным приведенному здесь: https://docs.oracle.com/javafx/2/ui_controls/table-view.htm. Вообще говоря, проблем нети заставить их работать.Но они имеют дело только с простыми (плоскими) данными.
TableView<ClassTestEvaluation> table = new TableView<>();
TableColumn colFirstName = new TableColumn("Vorname");
colFirstName.setCellValueFactory(new PropertyValueFactory<ClassTestEvaluation, String>("firstName");
TableColumn colLastName = new TableColumn("Nachname");
colLastName.setCellValueFactory(new PropertyValueFactory<ClassTestEvaluation, String>("lastName");
table.getColumns().addAll(colFirstName, colLastName);
ArrayList<Task> tasks = classTestEvaluation.getTasks();
for(Task t : tasks) {
TableColumn colTask = new TableColumn(t.getTitle());
table.getColumns().add(colTask);
}
Как видите, несложно установить PropertyValueFactory для colFirstName и colLastName.Но как мне это сделать для задач, которые имеют переменную длину и хранятся в массиве, который сам является частью объекта ClassTestEvaluation?
В зависимости от количества задач, которые получил тест класса, я хочу, чтобы мое табличное представление выглядело так:
Имя |Фамилия |Задача 1 |Задача 2 |...
Я надеюсь, что кто-нибудь может помочь мне здесь, так как я не понимаю.Большое спасибо!
РЕДАКТИРОВАТЬ 1:
Чтобы сделать мой источник данных более понятным, вот соответствующая структура моих классов ClassTestEvaluation и Task:
public class ClassTestEvaluation{
// ... more members ...
ArrayList<Task> tasks = ArrayList<>();
public ArrayList<Task> getTasks(){
return this.tasks;
}
// ...more methods...
}
public class Task{
private int id;
private int idClassTestEvaluation;
private Double points;
private String title;
public String getTitle(){
return this.title;
}
public Double getPoints(){ // This methods needs to be connected as data source for tasks cells.
return this.points;
}
// ...more methods...
}
Данные поступают из базы данных sqlite, где каждая задача связана через внешний ключ с определенной ClassTestEvaluation.При необходимости создается конкретная ClassTestEvaluation, которая заполняется соответствующими задачами.Таким образом, мне нужно найти способ сделать задачи (т.е. не только их заголовки в виде столбцов, но также их точки в виде ячеек) доступными и редактируемыми внутри табличного представления.