2017-04-01 2 views
0

にキャストすることはできません私はこのエラーが発生したとjava.lang.ClassCastException:私はJavaFXの中でテーブルビューにデータを追加したい場合はjava.util.ArrayListがjavafx.collections.ObservableList

に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()); 





     } 

答えて

1

あなたが直接observableListArrayListオブジェクトをキャストすることはできません、むしろ、あなたは以下のコード&に示すようFXCollections.observableArrayList()を使用する必要がありますが、あなたのdgv_userlistいることを設定しますオブジェクト。

ObservableList<User> observableArrayList = 
      FXCollections.observableArrayList(u.afficher_user()); 
dgv_user.setItems(observableArrayList); 
関連する問題