JavaFX填充列表视图<;E>;从Oracle数据库值
我正在用JAVAFX做一个项目,用数据库中的值填充listviiew。我正在使用Scenebuilder进行以下操作: MainWindowController.javaJavaFX填充列表视图<;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
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);
}