当前位置: 代码迷 >> java >> JavaFX TableVie .setCellValueFactory到没有对象的字符串
  详细解决方案

JavaFX TableVie .setCellValueFactory到没有对象的字符串

热度:114   发布时间:2023-07-31 11:22:39.0

我有一个填充对象列表的表,在其中一列中,我有一个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);

我不确定我是否正确。 如果只想在每一行的此列中显示相同的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类型相同。

  相关解决方案