问题描述
我有一个填充对象列表的表,在其中一列中,我有一个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类型相同。