【问题标题】:java.lang.ClassCastException: java.util.ArrayList cannot be cast to javafx.collections.ObservableList [duplicate]java.lang.ClassCastException:java.util.ArrayList 无法转换为 javafx.collections.ObservableList [重复]
【发布时间】:2017-04-01 21:34:11
【问题描述】:

当我想在 javafx 中向 tableview 添加数据时,我收到此错误

java.lang.ClassCastException: java.util.ArrayList 无法转换为 javafx.collections.ObservableList

类用户

public class User {
    private int id;
    private  String nom;
    private  String prenom;
    private  String cin;
    private  String tel;
    private  String adresse;
    private  String dn;

和功能数据:

public ArrayList afficher_user() throws SQLException{    
        ArrayList<User> data =  new ArrayList<>();
            Connection conn=null;
          try {
                Class.forName(Driver);
                conn = DriverManager.getConnection(URL,"root","");
                String sql ="select * from utilisateur";
                PreparedStatement Stmt = conn.prepareStatement(sql);
                ResultSet rs = Stmt.executeQuery(sql);
                while(rs.next()){
                User us = new User();
                us.setId(rs.getInt("id"));
                us.setNom(rs.getString("nom"));
                us.setPrenom(rs.getString("prenom"));
                us.setCin(rs.getString("cin"));
                us.setAdresse(rs.getString("adresse"));
                us.setTel(rs.getString("tel"));
                us.setDn(rs.getString("dn"));  
                data.add(us);
                }
                rs.close();
                conn.close();
          } catch (ClassNotFoundException ex) {
                System.err.println(ex.getMessage());
          }
      return data;
}

在控制器类中:

private TableView<User> dgv_user;
    @FXML
     private TableColumn<User,String> id;
    private TableColumn<User, String> nom;
    private TableColumn<User, String> prenom;
    private TableColumn<User, String> cin;
    private TableColumn<User, String> dn;
    private TableColumn<User, String> tel;
    private TableColumn<User,String> adresse;


     public void creer_user(ActionEvent event) throws SQLException {

        User u=new User();
        System.out.println(u.afficher_user());
        dgv_user.setItems((ObservableList<User>) u.afficher_user());





        }

【问题讨论】:

    标签: java javafx tableview


    【解决方案1】:

    您不能直接将ArrayList 对象转换为observableList,而是需要使用FXCollections.observableArrayList(),如下面的代码所示,并将list 设置为您的dgv_user 对象。

    ObservableList<User> observableArrayList = 
               FXCollections.observableArrayList(u.afficher_user());
    dgv_user.setItems(observableArrayList);
    

    【讨论】:

      猜你喜欢
      • 2013-04-10
      • 2014-12-14
      • 2021-12-10
      • 2012-07-07
      • 1970-01-01
      • 1970-01-01
      • 2020-10-21
      • 2019-02-04
      • 2018-11-07
      相关资源
      最近更新 更多