问题描述
我有一个填充对象列表的表,在其中一列中,我有一个comboBoxColumn
。
尽管combobox
列不是object
类的一部分,但我只希望它在该列中显示一个String
。
我该怎么办?
无需设置object
类。
comboBoxColumn.setCellValueFactory(new **Just String**);
这是代码
@FXML
TableView<Dog> BookDogTableView;
@FXML
TableColumn<Dog, String> BookDogNameCol;
@FXML
TableColumn<Dog, String> BookDogBreedCol;
@FXML
TableColumn<Dog, Integer> BookDogAgeCol;
@FXML
TableColumn<String, String> BookDogSelectRunCol;
BookDogNameCol
.setCellValueFactory(new PropertyValueFactory<Dog, String>(
"dogName"));
BookDogBreedCol
.setCellValueFactory(new PropertyValueFactory<Dog, String>(
"breed"));
BookDogAgeCol
.setCellValueFactory(new PropertyValueFactory<Dog, Integer>(
"age"));
BookDogSelectDogPane.setCellValueFactory(new **Just String**);
BookDogSelectRunCol.setCellFactory(ComboBoxTableCell.forTableColumn(runOptions));
BookDogTableView.setItems(customersDogs);
1楼
我不确定我是否正确。
如果只想在每一行的此列中显示相同的String
,则可以执行以下操作:
@FXML
TableColumn<Dog, String> BookDogSelectRunCol;
...
BookDogSelectRunCol.setCellValueFactory(x -> new SimpleObjectProperty<>("Just String"));
这会将"Just String"
传递到单元格。
如果只希望将String
显示在单元格中,就可以完成。
如果要显示所提到的ComboBox
并以某种方式对其使用String,则必须使用setCellFactory
方法。
BookDogSelectRunCol.setCellFactory(x -> new TableCell<>() {
@Override
protected void updateItem(String item, boolean empty) {
// Your code ...
}
});
在此示例中, item
的值为"Just String"
。
但是,正如James_D已经指出的那样,传递给TableColumn
的第一个类型参数必须与传递给TableView
类型相同。