JavaFX填充列表视图<;E>;从Oracle数据库值

JavaFX填充列表视图<;E>;从Oracle数据库值,java,sql,oracle,javafx,Java,Sql,Oracle,Javafx,我正在用JAVAFX做一个项目,用数据库中的值填充listviiew。我正在使用Scenebuilder进行以下操作: MainWindowController.java public class MainWindowController implements Initializable { @FXML private RadioButton connRadioBtn; @FXML private ListView<MainWindowController> poL

我正在用JAVAFX做一个项目,用数据库中的值填充listviiew。我正在使用Scenebuilder进行以下操作:

MainWindowController.java

public class MainWindowController implements Initializable {

    @FXML private RadioButton connRadioBtn;
    @FXML private ListView<MainWindowController> poListView;

    public void initialize(URL url, ResourceBundle rb){

    }

public List<MainWindowController> getPurchaseOrder() throws SQLException{
        DBConnection sqlCheckConn = DBConnection.getInstance();
        Statement stmt = DBConnection.getStatement();
        String listSql = "SELECT DISTINCT VSI.PO_NO PO_NO FROM VW_SUPP_INVOICE VSI";
        ResultSet rs = stmt.executeQuery(listSql);
        List<MainWindowController> list = new ArrayList<>();

        while (rs.next()) {
            String s1 = rs.getString("PO_NO");
            list.add(new MainWindowController(s1));
        }
        return list;
    }
}

请帮帮我,我做错了什么?请原谅,我刚刚开始学习java,您会遇到错误,因为您的
MainWindowController
类不提供默认构造函数以外的构造函数,但是您在
while
-循环中调用
new MainWindowController(s1)

您试图用控制器类的实例填充
ListView
,这对我来说没有意义。(我知道在一些情况下,将控制器类的实例添加为
ListView
的项是有意义的,但没有一个与您的代码类似。)您应该使用希望显示为
ListView
的类型参数的数据类型:

@FXML private ListView<String> poListView;

...

List<String> list = new ArrayList<>();

while (rs.next()) {
    String s1 = rs.getString("PO_NO");
    list.add(s1);
}
@FXML private ListView-poListView;
...
列表=新的ArrayList();
while(rs.next()){
字符串s1=rs.getString(“采购订单编号”);
列表。添加(s1);
}
您也可以使用自定义类,并使用自定义列表视图中显示的
ListCell
,但如果只显示
字符串,则默认的
cellFactory
ListView
就足够了

@FXML private ListView<String> poListView;

...

List<String> list = new ArrayList<>();

while (rs.next()) {
    String s1 = rs.getString("PO_NO");
    list.add(s1);
}