Combobox 在TableView JavaFX中设置ComboxCell

Combobox 在TableView JavaFX中设置ComboxCell,combobox,javafx,tableview,Combobox,Javafx,Tableview,我按照这个问题的说明在我的应用程序的TableView中设置ComboxCell。() 单元格的声明工作正常,但组合框不显示在表中。我想是这样的,因为我的模型中只有col1和col2col3不会写入我的表条目中 我不知道如何在TableView中使用组合框,需要您的帮助 这是我的密码: 控制器: package controller; imports public class main_controller implements Initializable { private Obs

我按照这个问题的说明在我的应用程序的TableView中设置ComboxCell。()

单元格的声明工作正常,但组合框不显示在表中。我想是这样的,因为我的模型中只有col1和col2<数据库连接后,strong>col3不会写入我的表条目中

我不知道如何在TableView中使用组合框,需要您的帮助

这是我的密码:

控制器:

package controller;

imports

public class main_controller implements Initializable {
    private ObservableList<model> tableData = FXCollections.observableArrayList();
    private ObservableList<String> cbValues = FXCollections.observableArrayList("1", "2", "3");

    @FXML
    private TableView<model> ComboTable;
    @FXML
    private TableColumn<model, String> col1;
    @FXML
    private TableColumn<model, String> col2;
    @FXML
    private TableColumn<model, String> col3;

    public main_controller() {

    }

    @Override
    public void initialize(URL location, ResourceBundle resources) {
        tableData.clear();
        col1.setCellValueFactory(new PropertyValueFactory<model, String>("rCol1"));
        col2.setCellValueFactory(new PropertyValueFactory<model, String>("rCol2"));
        col3.setCellFactory(ComboBoxTableCell.forTableColumn(new DefaultStringConverter(), cbValues));

        try {
            Class.forName("oracle.jdbc.driver.OracleDriver");
            System.out.println("*** Loaded Oracle-Driver ***");
        } catch (ClassNotFoundException e1) {
            System.out.println("Driver-Loading failed.");
            e1.printStackTrace();
        }
        try {
            Connection conn = DriverManager.getConnection("jdbc:oracle:thin:lukas/1234@10.140.79.56:1521:OTTO");
            Statement statement = conn.createStatement();
            ResultSet resultset = statement.executeQuery("SELECT NUMMER, DATEN1, DATEN2 FROM LUKAS order by NUMMER");
            String Daten1 = "empty";
            String Daten2 = "empty";
            // Zum einfügen kann man später auf diese Variable zurückgreifen.
            int columnIndex;
            System.out.println("*** Connected with Database ***");
            while (resultset.next()) {
                columnIndex = resultset.getInt("NUMMER");
                System.out.println("Tabellenindex der Zeile:\t" + columnIndex);
                Daten1 = resultset.getString("DATEN1");
                Daten2 = resultset.getString("DATEN2");
                System.out.println("Daten1:\t " + Daten1 + "\t\t\tDaten2: " + Daten2);
                **model entry = new model(Daten1, Daten2);
                tableData.add(entry);**
                }
            System.out.println("*** Database data saved to Observable List named 'data' ***");
            ComboTable.setItems(tableData);
            System.out.println("*** Table Items setted ***");
            statement.close();
        }   catch (SQLException e) {
                System.out.println("Login fehlgeschlagen.");
                e.printStackTrace();
        }
    }

}
应用程序现在看起来如下所示:

希望你能帮助我

单元格的声明可以正常工作,但组合框不能 出现在表格中

当该单元格处于编辑模式时,
ComboBoxTableCell
的组合框将出现。为此,需要将tableview设置为可编辑,然后双击上面提到的单元格

ComboBoxTableCell javadoc中的引用:

默认情况下,ComboBoxTableCell在不显示时呈现为标签 正在编辑,并且在编辑模式下作为组合框。组合框 默认情况下,将拉伸以填充整个表格单元格


双击该单元格即进入编辑模式时,将显示ComboBoxCell。但首先,您需要看到整个画面,您希望从combobox中指定所选的值。单元格最初呈现的内容等。谢谢!!将其作为答案发布,我回答问题。:)等待你的问题解决了吗?是的:D工作^^我将TableEditable设置为boolean true,双击后出现该框。
    package model;

import javafx.beans.property.SimpleStringProperty;

public class model {

    private final SimpleStringProperty rCol1;
    private final SimpleStringProperty rCol2;

    public model(String sCol1, String sCol2) {
        this.rCol1 = new SimpleStringProperty(sCol1);
        this.rCol2 = new SimpleStringProperty(sCol2);
    }

    public String getRCol1() {
        return rCol1.get();
    }

    public void setRCol1(String set) {
        rCol1.set(set);
    }
    public String getRCol2() {
        return rCol2.get();
    }

    public void setRCol2(String set) {
        rCol2.set(set);
    }
}