带有多个组合框的javaFx TableView

时间:2016-10-25 07:59:12

标签: javafx combobox tableview

我有一个要求在哪里我应该比较两个csv文件。为了比较,我们正在尝试实施规则配置。现在规则将有如下对象:

public class CsvInformation {

private String resultType;
private List<String> primaryKey;
private List<String> standardKey;
private List<String> ignoreKey;


public String getResultType() {
    return resultType;
}
public void setResultType(String resultType) {
    this.resultType = resultType;
}
public List<String> getPrimaryKey() {
    return primaryKey;
}
public void setPrimaryKey(List<String> primaryKey) {
    this.primaryKey = primaryKey;
}
public List<String> getStandardKey() {
    return standardKey;
}
public void setStandardKey(List<String> standardKey) {
    this.standardKey = standardKey;
}
public List<String> getIgnoreKey() {
    return ignoreKey;
}
public void setIgnoreKey(List<String> ignoreKey) {
    this.ignoreKey = ignoreKey;
}

所以我正在获取CSVInformation对象的列表。现在我想将这些对象映射/绑定到tableView控件,以便用户可以选择通过comboBox控件选择PrimaryKey,IgnoreKey,StandardKey的值。 TableView单元格。 TableView控件应该看起来类似于以下快照。

enter image description here

在上面的快照中,我想用从backEnd获取的 CsvInformation对象列表的每个对象填充TableView的每一行。这是可以实现的吗?我google了一下,但他们提到的所有地方都无法使用Collection绑定到TableView中的comboBox。任何建议/指示/建议将受到高度赞赏。感谢

@James_D:嗨James,Thx回复。主要的想法是给用户选择主键,标准键和键。忽略键以告诉我们要包含哪些列以供比较,哪些列要忽略,哪些是主键等。一旦用户选择了当时TableView中存在的行数,我需要保存这些并创建了一个Json。要求是tableView需要包含4列:1个标签,3个不可编辑的组合框。现在回答您对组合框的查询,每个组合框本质上都是唯一的,即填充TableView中的ComboBox的条目,如果我说第1行,主键组合 - 框将具有字符串值,如Mohit,Neha ,Neeraj。现在,当我移动填充下一行填充时,即第2行primaryKey Combo - box将具有James,Jason,Bourne等值。我想要实现的是通过绑定到a来创建这些组合框名单。我在这里附加了一个快照,用于csvHeaderList的内容.TableView内容中的每一行都将来自CSVHeaderList的每个索引。如果您对此有任何疑问,请与我们联系。

       < TabelView code > 
       TableView<CsvInformation > table = new         TableView<CsvInformation >();

      // Create column Result Type (Data type of String).
      TableColumn<CsvInformation , String> resultTypeCol = new TableColumn<CsvInformation , String>("Result Type");

      // Create column Primary Column (Data type of List<String>).
      TableColumn<CsvInformation ,  List<String>> primaryKeyCol  = new TableColumn<CsvInformation , List<String>>("Primary Column");

      // Create column Standard Column (Data type of  List<String>).
      TableColumn<CsvInformation , List<String>>  standardCol = new TableColumn<CsvInformation , List<String>>("Standard Column");

      // Create column for Ignorable Columns.  (Data type of  List<String>).
      TableColumn<CsvInformation , List<String>> ignoredCol = new TableColumn<CsvInformation , List<String>>("Ignorable Columns");


      PropertyValueFactory<CsvInformation ,  List<CsvInformation >> resultTypeColFactory = new PropertyValueFactory<>(
              "resultType");
          PropertyValueFactory<CsvInformation ,  List<CsvInformation >> primaryColFactory = new PropertyValueFactory<>(
              "primaryKey");

PropertyValueFactory&GT; standardColFactory = new PropertyValueFactory&lt;&gt;(                   “standardKey”);               PropertyValueFactory&GT; compareColFactory = new PropertyValueFactory&lt;&gt;(                   “ignoreKey”);           //定义如何填充每个单元格的数据。           //从CsvInformation的属性中获取值。

      resultTypeCol.setCellValueFactory(new PropertyValueFactory<>("resultType"));
      primaryKeyCol.setCellValueFactory(new PropertyValueFactory<>("primaryKey"));
      standardCol.setCellValueFactory(new PropertyValueFactory<>("standardKey"));
      ignoredCol.setCellValueFactory(new PropertyValueFactory<>("ignoreKey"));

我遇到的问题是如何为Tablecolumn,Table Cell,Cellfactory提供我对于集合/列表的定义:                      TableColumn用于将我的列表映射到TableView中的组合框。

enter image description here

0 个答案:

没有答案