JavaFX:向表

时间:2015-07-17 09:31:59

标签: java user-interface javafx swt

我想根据我之前获得的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吗?

3 个答案:

答案 0 :(得分:2)

如果你在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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

你实际上可以在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&lt;&gt;(“mobileNumber”); 我的意思是mobileNumberColumn正在使用从中分配字符串的Person类。引号中的手机号码是表格的名称。

mobileNumberColumn.setCellValueFactory(new PropertyValueFactory&lt;&gt;(“mobileNumber”)); 上面的一行说明了列的值是类person的实例变量mobileNumber。但是为了使它工作,你应该在person类中有一个getMobileNumber()方法。它必须与tableView的工作方式完全相同。 希望这有帮助