无法将项目添加到emptyObservableList“ UnsupportedOperationException”

时间:2020-06-23 07:52:12

标签: java javafx

我试图将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”?

1 个答案:

答案 0 :(得分:4)

FXCollections.emptyObservableList()的javadoc很清楚:

创建一个空的不可修改的可观察列表。

您需要一个新的,空的但可修改的列表:

ObservableList<Article> list = FXCollections.observableArrayList();