ComboBox in einem tableview cell in JavaFX

Ich versuche, ein hinzufügen einer Combo Box zu meinem Table View:

Grundsätzlich habe ich eine Klasse namens TableViewTest, speichert einen Namen und eine Beschreibung, ich kann Anzeige diese Namen und Beschreibungen in einem Table View keine Mühe, aber was ich will zu tun ist, fügen Sie eine Dritte Spalte mit jeder Zelle mit einem Combo Box so dass der Benutzer kann wählen Sie eines aus einer Anzahl von Optionen für jede person.

Bisher habe ich erstellt eine ObservableList Typ String mit einige Werte und Sie in eine ComboBox Objekt. Kennt jemand eine Möglichkeit für mich, um dieses Combo Box auf den Tisch?

Bedenken Sie auch dieser code ist ziemlich unruhig und ich bin nur versuchen, etwas zu arbeiten, und ich werde Refactorings, die code zu einem späteren Zeitpunkt.

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);
Ihre Tabelle Spalte Typ sollte dem Typ der Daten, die angezeigt wird, die Spalte, nicht die Art der Kontrolle, die verwendet wird, um es anzuzeigen. I. e. Sie müssen TableColumn<..., String> priceColumn (und ich denke, es sollte TableColumn<TableViewTest, String> priceColumn). Dann sollten Sie in der Lage, einen ComboBoxTableCell.
Ich wünschte wirklich, es gab einige FXML Beispiele. Wer weiß?

InformationsquelleAutor noobCoder | 2016-02-01

Schreibe einen Kommentar