J'ai un JTable que je voudrais remplir en utilisant le DefaultTableModel malheureusement ma sortie se présente sous forme de tableaux et non comme de nouvelles lignes comme je le voudrais. S'il vous plaît voir mon code ci-dessous et demandez si d'autres explications sont nécessaires! :)Java DefaultDataTable valeurs dynamiques
dataTable.setModel(new javax.swing.table.DefaultTableModel(new Object [][] {
DatabaseInteraction.getCityInfo("").get("datas").toArray()
},
DatabaseInteraction.getCityInfo("").get("columns").toArray()));
fonction d'interaction de base de données ici:
public static Map<String,List<String>> getCityInfo(String query)
{
if(query.isEmpty()){
query = "SELECT * FROM "+ database+ "." +table;
}
try {
Statement stmt = getConn().createStatement();
ResultSet rs;
rs = stmt.executeQuery(query);
ResultSetMetaData rsmd = rs.getMetaData();
//Get Column names
List<String> cNames = new ArrayList();
List<Object> results = new ArrayList<Object>();
for (int i = 1; i <= rsmd.getColumnCount(); i++){
cNames.add(rsmd.getColumnName(i));
}
//Get Data
while (rs.next()) {
List<String> tempResults = new ArrayList();
for (int i = 1; i <= rsmd.getColumnCount(); i++) {
tempResults.add(rs.getString(i));
if(i == rsmd.getColumnCount()){
results.add(tempResults);
}
}
}
HashMap map =new HashMap();
map.put("columns",cNames);
map.put("datas",results);
System.out.println(map);
return map;
}
La sortie que je reçois dans ma console est: {columns = [nom d'utilisateur, mot de passe, gratuit], les caractéristiques = [[Hej, HeJ, 1 ], [Brugernavn, Mot de passe, 1], [Brugernavn1, Mot de passe, 0], [test1, test2, 1], [,, 1]]} Ce qui me va bien mais comme je l'ai dit plus tôt et pas un tableau - nouvelle ligne.
Merci pour votre aide! cela ajoute les noms de colonnes juste bien! mais je ne pas cependant ajouter des données? est-ce que tu sais pourquoi? :) –
car nécessaire pour ajouter un nouveau DefaultTableModel à JTable (une nouvelle boucle pour créer un modèle) – mKorbel
@PatrickHansen ajouter Sytem.out.println (rs.getObject (i)); avant singleRow.addELement (rs.getObject (i)); et vérifiez si les données proviennent bien de la base de données. sinon, vous devriez vérifier votre requête et votre base de données. – trd3v3lop