有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何从数据库在javafx中填充表视图

我的数据库包含两列:用户和他们的角色。 我要做的是生成一个矩阵作为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) 个答案