问题描述
我想根据我之前获得的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?
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");
有关更多信息,请检查此链接:
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完全一样才能工作。 希望这可以帮助