【问题标题】:JavaFX: add row to tableJavaFX:向表中添加行
【发布时间】:2015-07-17 09:31:58
【问题描述】:

我想根据我之前获得的 ID 向表中添加行。 我已经设法在 SWT 中做到了,但我不知道如何在 javaFx 中做到这一点。

这是我为 SWT 编写的代码:

int availableDesings = designManagement.getNumberOfDesigns();
ArrayList<Design> designs = designManagement.getDesignArray();
    for (int i = 0 ; i< availableDesings ; i++){
        TableItem item = new TableItem(table, SWT.NONE);
        item.setText (0, String.valueOf(designs.get(i).getId()));
        item.setText (1, String.valueOf(designs.get(i).getPart_name()));
    }

谁能帮我把代码翻译成javaFx?

【问题讨论】:

  • 你在 JavaFX 中使用TableView 吗?
  • 是的,我是@ItachiUchiha
  • 您是否尝试向分配给TableViewObservableList 添加元素?
  • 不,我不知道如何自动添加它们,只能手动添加。它应该看起来像这样: final ObservableList data = FXCollections.observableArrayList(); for (int i = 0; i

标签: java user-interface javafx swt


【解决方案1】:

如果您在 JavaFX 中有一个 TableView,并且它被分配给 ObservableList 的项目:

TableView<String> table = new TableView<>();
ObservableList<String> list = FXCollections.observableArrayList();
table.setItems(list);

然后您可以通过将数据添加到列表中来将数据添加到表中:

table.getItems().add("New Item");

或者,您可以直接将数据添加到列表中:

list.add("New Item");

有关更多信息,请查看此链接:

Adding New Rows

【讨论】:

  • 我已经理解了那部分,但我的问题是这部分: item.setText (0, String.valueOf(designs.get(i).getId()));它总是给我一个错误
  • 在 swt 项为:TableItem item = new TableItem(table, SWT.NONE);
  • 表示方法add不适用于字符串
【解决方案2】:
    private ObservableList<Design> data = FXCollections.observableArrayList();

.....

....

    data.addAll(designManagement.getDesignArray()); //all you items

    TableView<Design> table = new TableView<>();
    TableColumn<Design, String> column1 = new TableColumn<>();
    column1.setCellValueFactory(new PropertyValueFactory<Design, String>("id"));
    TableColumn<Design, String> column2 = new TableColumn<>();
    column2.setCellValueFactory(new PropertyValueFactory<Design, String>("part_name"));
    table.getColumns().add(column1);
    table.getColumns().add(column2);

    table.setItems(data);

【讨论】:

    【解决方案3】:

    您实际上可以在 javafx 中的 tableview 中添加行,尽管我没有尝试使用它。但我已经用 TableColumn 做到了。 这是我为我的小项目做的一些代码

        TableView<Person> personTable = new TableView<>();
        TableColumn<Person,String> nameColumn=new TableColumn<>("Name");
        nameColumn.setMinWidth(200);
        nameColumn.setCellValueFactory(new PropertyValueFactory<>("Name"));
        TableColumn<Person, Gender> genderColumn=new TableColumn<>("Gender");
        genderColumn.setMinWidth(30);
        genderColumn.setCellValueFactory(new PropertyValueFactory<>("gender"));
        TableColumn<Person,String> mobileNumberColumn=new TableColumn<>("mobileNumber");
        mobileNumberColumn.setMinWidth(150);
        mobileNumberColumn.setCellValueFactory(new PropertyValueFactory<>("mobileNumber"));
        TableColumn<Person, Blood> bloodColumn=new TableColumn<>("Blood Type");
        bloodColumn.setMinWidth(30);
        bloodColumn.setCellValueFactory(new PropertyValueFactory<Person, Blood>("blood"));
        personTable.setItems(getPerson());//setting content retrieved from the database into the table
        personTable.getColumns().addAll(nameColumn, genderColumn, mobileNumberColumn,bloodColumn);//adding all columns to table
    

    所以它的意思是当我说 TableColumn mobileNumberColumn=new TableColumn("mobileNumber"); 我的意思是 mobileNumberColumn 正在使用 Person 类,从中将字符串分配给该列。引号中的手机号码是表的名称。

    mobileNumberColumn.setCellValueFactory(new PropertyValueFactory("mobileNumber")); 上面的行说该列的值是类 person 的实例变量 mobileNumber。但是要使其工作,您应该在 person 类中有一个 getMobileNumber() 方法。 tableView 必须完全一样才能工作。 希望这会有所帮助

    【讨论】:

      猜你喜欢
      • 2015-04-05
      • 2017-01-14
      • 1970-01-01
      • 2015-12-29
      • 2017-04-07
      • 2016-03-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多