我的数据库包含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);
}
}
}
}