ComboBox in einer Tabellenzelle in JavaFX
Ich versuche ein @ hinzuzufügCombo Box
zu meinemTable View
:
rundsätzlich habe ich eine Klasse namens TableViewTest, die einen Namen und eine Beschreibung speichert. Ich kann diese Namen und Beschreibungen in einem @ anzeigeTable View
keine Mühe, aber ich möchte eine dritte Spalte mit jeder Zelle mit einem @ hinzufügCombo Box
, sodass der Benutzer für jede Person eine Option aus einer Reihe von Optionen auswählen kann.
isher habe ich ein @ erstelObservableList
vom TypString
mit einigen Werten und fügte sie einem @ hinComboBox
Objekt. Kennt jemand eine Möglichkeit für mich, dieses @ hinzuzufügeCombo Box
zum Tisch
Denken Sie auch daran, dass dieser Code ziemlich rau ist und ich nur versuche, etwas zum Laufen zu bringen. Ich werde den Code zu einem späteren Zeitpunkt überarbeiten.
ObservableList<TableViewTest> products = FXCollections.observableArrayList();
for(int i = 0; i < b.length; i++){
// random String values
products.add(new TableViewTest(b[i], a[i]));
}
ObservableList<String> options = FXCollections.observableArrayList(
"1",
"2",
"3"
);
final ComboBox comboBox = new ComboBox(options);
TableColumn<TableViewTest, String> nameColumn = new TableColumn<> ("Name");
nameColumn.setMinWidth(200);
nameColumn.setCellValueFactory(new PropertyValueFactory<TableViewTest, String>("name"));
//price Column
//Stock Column
TableColumn<TableViewTest, String> StockColumn = new TableColumn<> ("Stock");
StockColumn.setMinWidth(150);
StockColumn.setCellValueFactory(new PropertyValueFactory<TableViewTest, String>("description"));
TableColumn<Object,ComboBox> PriceColumn;
PriceColumn = new TableColumn<>("Source");
PriceColumn.setMinWidth(150);
//PriceColumn.setCellValueFactory(new PropertyValueFactory<>
//(options));
//PriceColumn.setCellFactory(ComboBoxTableCell.forTableColumn(new
//DefaultStringConverter(), options));
//PriceColumn.setCellFactory(ComboBoxTableCell.forTableColumn(
//comboBox));
TableView<TableViewTest> table = new TableView<>();
table.setItems(products);
table.getColumns().addAll(nameColumn, StockColumn, PriceColumn);