テーブルビューに1つのクラスの異なるデータを入力しても問題ありません。しかし、複数のクラスではうまくいきません。それを解決する方法はありますか?同様の質問をstackoverflowでチェックアウトしました。しかし、それらのどれも私を助けることができませんでした。「Callback」クラスについて何か提案があれば、完全なインポートを提供してください。いくつかの Callback クラスがあるからです。
public class MainViewController implements Initializable {
@FXML
private TableColumn<TaskControl, Boolean> colErledigt;
@FXML
private TableColumn<TaskControl, Character> colPrioritaet;
@FXML
private TableColumn<TaskControl, String> colBeschreibung;
@FXML
private TableColumn<ProjectControl, String> colProjekt;
@FXML
private TableView<TaskControl> tblView;
public final void initialize(final URL location,
final ResourceBundle resources) {
initializeTableElements();
}
public final void initializeTableElements() {
colBeschreibung
.setCellValueFactory(new PropertyValueFactory<>("description"));
colPrioritaet
.setCellValueFactory(new PropertyValueFactory<>("priority"));
colProjekt.setCellValueFactory(new PropertyValueFactory<>("name"));
colErledigt.setMaxWidth(50);
colErledigt.setCellValueFactory(
new PropertyValueFactory<TaskControl, Boolean>("isDone"));
colErledigt
.setCellFactory(CheckBoxTableCell.forTableColumn(colErledigt));
colErledigt.setEditable(true);
try {
tblView.setItems(getObsTasks());
} catch (IDNotValidException | StringNotValidException e1) {
System.out.print("FEHLER beim getObsTasks");
}
tblView.setEditable(true);
}
public ObservableList<TaskControl> getObsTasks()
throws IDNotValidException, StringNotValidException {
ObservableList<TaskControl> obsTasks = FXCollections
.observableArrayList();
Map<Context, Set<Task>> test = TasksContextUtility.INSTANCE
.getAllContextsAndTasks();
test.values().forEach(v -> {
v.forEach(b -> obsTasks.add((TaskControl) b));
});
return obsTasks;
}
追加の質問: TableCell の HashSet でインスタンスの特定の属性を表示するにはどうすればよいですか。したがって、TaskControl クラスに HashSet があります。その HashSet には、クラス「ProjectControl」のインスタンスがあります。ProjectControl のすべてのインスタンスには、「name」や「id」などの属性があります。
可能であれば、プロジェクト インスタンスのすべての名前を 1 つのテーブル セルで表現したいと考えています。おそらく、コンマで区切られた文字列として(project1、project2、project3 ...)。
Task クラス (大幅に短縮) my TaskControl クラスはこのクラスから継承します
public abstract class Task
implements Serializable, IDValidatable
{
private int id;
private char priority = ' ';
private final Set<Project> projects = new HashSet();
public Task(int oid)
throws IDNotValidException
{
if (isIDValid(oid)) {
this.id = oid;
} else {
throw new IDNotValidException("The ID you have specified is not valid!")
{
private static final long serialVersionUID = 99044660889990790L;
};
}
}
public final void setId(int oid)
throws IDNotValidException
{
if (isIDValid(oid)) {
this.id = oid;
} else {
throw new IDNotValidException("The ID you have specified is not valid!")
{
private static final long serialVersionUID = 99044660889990790L;
};
}
}
public final int getId()
{
return this.id;
}
public final Collection<Context> getContexts()
{
return this.contexts;
}
public final void addContext(Context context)
throws ContextNotValidException
{
this.contexts.add(context);
}
public final void removeContext(Context context)
throws ContextNotValidException
{
this.contexts.remove(context);
}
public final Collection<Project> getProjects()
{
return this.projects;
}
public final void addProject(Project project)
throws ProjectNotValidException
{
this.projects.add(project);
}
public final void removeProject(Project project)
throws ProjectNotValidException
{
this.projects.remove(project);
}
public final Map<String, String> getAddons()
{
return this.addons;
}
}