使用JavaFX在TableView中自动增量不是排序

时间:2015-01-20 07:11:04

标签: javafx

我在auto numbered table rows (javafx)中找到了一个“简单替代解决方案”,用于自动递增值

  1. 这很有效。但是,如果我对表中的列进行排序,则不会对其进行排序。对此有何解决方法?

  2. 此外,根据解决方案,如果我删除中间的行并将表内容写入文件,则在表视图中调整行号,但不在文件中调整行号。该行将在文件中删除,但自动递增的值不会被调整。请帮忙。

1 个答案:

答案 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对象的包装类。

无论如何,我认为以上信息可以帮助您解决问题。如果没有,或者你自己不能提出一个工作实例,可以添加一些进一步的评论或编辑问题,也许有人可以为你做一个例子。