当前位置: 首页 > 知识库问答 >
问题:

使用超类字段填充Tableview

上官兴昌
2023-03-14
class SuperClass
{
  protected String name;
  protected double value;
  public final void setName(String name)
  {
    this.name = name;
  }
  public final void getName()
  {
    return this.name;
  }
  public final void setValue(double value)
  {
    this.value = value;
  }
  public double getValue()
  {
    return this.value;
  }
}
class SubClass1 extends SuperClass
{
  private int id;
  public void setId(int id)
  {
    this.id = id;
  }
  public int getId()
  {
    return this.id;
  }
}
class SubClass2 extends SuperClass
{
  private String location;
  public void setLocation(String location)
  {
    this.location = location;
  }
}
class SubClass3 extends SuperClass
{
  private ObservableMap<SuperClass> map;
  public ObservableMap<SuperClass> map()
  {
    return this.map;
  }
}
TableColumn<SubClass1, Integer> tc1_id;
TableColumn<SubClass1, String> tc1_name;
TableColumn<SubClass1, Double> tc1_value;
TableColumn<SubClass2, String> tc2_loc;
TableColumn<SubClass2, String> tc2_name;
TableColumn<SubClass2, Double> tc2_value;
TableColumn<SubClass3, String> tc3_name;
TableColumn<SubClass3, Double> tc3_value;

这里有一个关于我要做的事情的参考...访问JavaFX TableView ObservableRayList中的子类属性

但是仅仅使用示例代码,我基本上重写了2个方法,每个3次...在实际的程序中还有更多的东西。(再多一点点)

共有1个答案

蔚丰
2023-03-14

我想你只是在问如何减少你必须编写的代码量。解决方案与任何此类问题都是一样的:编写一个执行重复部分的方法,并用变化的部分参数化它。因此,在这种情况下,您只需要编写一个通用实用工具方法来生成表列,获取列的标题和生成单元格值工厂需要的属性的函数。

例如。你可以做一些

private <S,T> TableColumn<S,T> createColumn(String title, Function<S, Property<T>> prop) {
    TableColumn<S,T> column = new TableColumn<>(title);
    column.setCellValueFactory(cellData -> prop.apply(cellData.getValue()));
    return column ;
}

然后,如果您的模型类使用JavaFX属性,您所需要的只是

TableColumn<SubClass1, Number> tc1Id = createColumn("Id", SubClass1::idProperty);
TableColumn<SubClass2, String> tc2Loc = 
    createColumn("Location", item -> new SimpleStringProperty(item.getLocation()));
 类似资料:
  • 你知道我如何使用FireStore填充文档上的引用字段吗?

  • 我试图用fdf或xfdf中的汉字填充pdf字段。 到目前为止,我已经尝试了pdftk、mcpdf、pdfbox和fpdm。 它们都可以将字符输入字段,但不会显示。当我点击要编辑的字段时,字符按预期显示,但当我再次点击字段外时,字符消失。如果我输入的是英语,它们就会显示错误,例如“hello”变成“IFMMP”。 这一切都让我怀疑这是字体/字符映射的问题,我尝试过将完整的字体嵌入到pdf中,但没有任

  • 问题内容: 我有要查询的模型(称为“活动”)(使用Mongoose)。他们的架构如下所示: 当我询问他们,我填充,,,和字段(所有引用)。在那之后,我也深入了这个领域。这是我的查询代码: 这已经是一个相对复杂的查询,但是我需要做更多。如果它碰到了声明的一部分,我 还 需要确保的字段等于字符串。我尝试使用,但是由于必须先填充事件,因此无法查询其任何字段。我还需要在其他多个查询中实现相同的目标。 如我

  • 问题内容: 我所做的: 我有一个模块 然后我有另一个课 我得到的是: 该作品不错,但字段为空。如果您编辑个人资料,则可以使用来向字段添加条目,但是我需要自动填写。 我的期望: 我希望打开个人资料时,每个设置为的记录都将在字段中可见。当我创建记录并将值设置为可以说时,该记录必须在字段中的配置文件中可见。如何实现呢? 问题答案: user_rel_ids =字段.many2many(comodel_n

  • 我正在使用pdfbox-1.8.12从PDF中读取内容以获取XFA。我已经能够成功地为大多数文件获取XFA,而没有遗漏任何字段值。 问题在于一些文件,如错误。pdf。我有许多字段没有像CIN这样的值,但当我在任何PDF查看器、foxit或Acrobat中打开文件时,它会显示该字段。 然后将字节[]转换为字符串。 这是此文件的xfa,如果您在此搜索“U72300DL1996PLC075672”,它将

  • 我在SQL Server 2012中有两个表 表1 表2 每个用户可以拥有1到8个权限。 我需要创建一个视图,该视图将为我提供具有8个权限条目的UserID,其中任何未使用的条目都包含null值,即条目的顺序无关紧要。 这让我很困惑,我甚至不知道从哪里开始?