当前位置: 代码迷 >> java >> JavaFX:将行添加到表
  详细解决方案

JavaFX:将行添加到表

热度:86   发布时间:2023-07-31 11:41:07.0

我想根据我之前获得的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并且已将其分配给项目的ObservableList

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

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

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

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

list.add("New Item");

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

    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);

您实际上可以将行添加到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完全一样才能工作。 希望这可以帮助

  相关解决方案