我试图将sql
表的内容复制到ObservableList
中,因此我实现了以下方法,该方法返回了ObservableList<Article>
:
public static ObservableList<Article> getArticles() throws SQLException {
Connection con = conMenu.getCon();
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("Select * from Article");
ObservableList<Article> list = FXCollections.emptyObservableList();
while(rs.next()){
//create dummy article and set it's values to the current resultset row
Article x = new Article();
x.setId(rs.getInt(1));
x.setName(rs.getString(2));
x.setFamily(rs.getString(3));
x.setSubFamily(rs.getString(4));
x.setPrice(rs.getFloat(5));
// print sql table in console
System.out.println(
rs.getInt(1)+" \t "+
rs.getString(2)+"\t"+
rs.getString(3)+"\t"+
rs.getString(4)+"\t"+
rs.getString(5)+"\t"
);
list.add(x);
}
con.close();
return list ;
}
起初,我使用普通的ObservableList
,但是添加时出现错误,说它不是initialized
,也不应该是null
。
然后,我声明了一个emptyObservableList
来绕过那个,但是后来我无法在其中添加项目,因为它是一个“ UnsopportedOperationException”?
答案 0 :(得分:4)
FXCollections.emptyObservableList()
的javadoc很清楚:
创建一个空的不可修改的可观察列表。
您需要一个新的,空的但可修改的列表:
ObservableList<Article> list = FXCollections.observableArrayList();