我在auto numbered table rows (javafx)中找到了一个“简单替代解决方案”,用于自动递增值
这很有效。但是,如果我对表中的列进行排序,则不会对其进行排序。对此有何解决方法?
此外,根据解决方案,如果我删除中间的行并将表内容写入文件,则在表视图中调整行号,但不在文件中调整行号。该行将在文件中删除,但自动递增的值不会被调整。请帮忙。
答案 0 :(得分:0)
如果您想要附加到数据对象的持久编号,以便数字与数据对象一起排序,那么您应该创建一个包含编号的数据项。
例如:
public class IdentifiedPerson {
private IntegerProperty id;
private ObjectProperty<Person> person;
public IdentifiedPerson(int id, Person person) {
this.id = new SimpleIntegerProperty(id);
this.person = new SimpleObjectProperty<>(person);
}
public IntegerProperty idProperty() {
return id;
}
public ObjectProperty<Person> personProperty() {
return person;
}
}
然后你的TableView被定义为:
private TableView<IdentifiedPerson> table = new TableView<IdentifiedPerson>();
并为每个表列提供单元格值工厂以提供相关数据(人员ID或某些人员属性)。
因此id /行号基本上成为对象模型的一部分。如果你可以直接修改Person对象,那么你可以将id粘贴在那里,而不是拥有person id + person对象的包装类。
无论如何,我认为以上信息可以帮助您解决问题。如果没有,或者你自己不能提出一个工作实例,可以添加一些进一步的评论或编辑问题,也许有人可以为你做一个例子。