如何从数据库填充javafx中的tableview

时间:2017-10-06 17:49:20

标签: java hibernate javafx tableview

我的数据库包含2列:用户和他们的角色。 我想要做的是生成一个矩阵作为tableview 角色将在列中 用户将在第一列 我想用'x'

标记每个用户角色的单元格

我设法生成标题和矩阵的第一列 但我的问题是如何填写表格并根据数据库标记指定的单元格

TableColumn <String,String> [] tab; // liste de colonne  
int Index = 0; //compteur  
List<String> columns = new ArrayList<String>(); // list qui va contenir les noms de colonnes  
ObservableList<BDRole> data =FXCollections.observableArrayList() ;  
Session session1 = NewHibernateUtil.getSessionFactory().openSession();
session1.beginTransaction();  
Query q=session1.createSQLQuery("SELECT AUUSER  FROM SY900.F00926 ").addScalar("AUUSER",StandardBasicTypes.STRING); //select users
//Query q=session1.createSQLQuery("SELECT distinct RLFRROLE  FROM SY900.F95921 order by RLFRROLE").addScalar("RLFRROLE",StandardBasicTypes.STRING);

columns = q.list();     

tab = new TableColumn[columns.size()];

for(String Colname : columns)
{
      tab[Index++]=new TableColumn(Colname);     
}

 //fill the header     
 TableColumn columncne = new TableColumn("Utilisateur");
 matrice.getColumns().addAll(columncne);// ajouter la premiere colonne qui va contenir les utilisateurs
 matrice.getColumns().addAll(tab); //ajouter les colonnes qui contiennent les noms de roles a la table

 columncne.setCellValueFactory(new PropertyValueFactory<BDRole, String>("RoleName"));

 SQLQuery qq=session1.createSQLQuery(" SELECT distinct RLTOROLE FROM SY900.F95921 order by RLTOROLE ").addScalar("RLTOROLE",StandardBasicTypes.STRING);
 List resultList = qq.list();
 SQLQuery qq2=session1.createSQLQuery(" SELECT  RLTOROLE,RLFRROLE  FROM SY900.F95921 ").addScalar("RLTOROLE",StandardBasicTypes.STRING).addScalar("RLFRROLE",StandardBasicTypes.STRING);


    List resultList2 = qq2.list();
    Iterator ite2 = resultList2.iterator();

    //fill the first coumn with the users
     for(Object o : resultList)
        {
            data.add( new BDRole(o.toString()));            
        }
 matrice.setItems(data);



     //here where I have the problem
     for(int i=0;i<15;i++)  //user table
     {
         while(ite2.hasNext())   //iterateur user /role req
         { 
             Object[] obj=(Object[]) ite2.next();
             String s=obj[1].toString().substring(0, 10);

             if( columncne.getCellData(i).equals(obj[0])) //if user table=user req

             {
                 for(int j =0;j<15;j++)
                 {
                     String n=columns.get(j);
                     if(s.equals(n))
                     {
                        ligne.add("X");
                        System.out.println(ligne.toString());
                     }
                     else
                         //ligne.add(" ");
                       System.out.println(n+" "+s);
                }
             }
         }
     }

0 个答案:

没有答案