Salut,
Que veux tu dire par "lignes constantes" ? Tu parles de la taille des colonnes ?
Si tu veux que les colonnes ne se redimensionnent pas à chaque ajout, tu peux désactiver le redimensionnement automatique par :
Si tu veux que les utilisateurs ne puisse pas changer la taille des colonnes, il va falloir que tu créés tes colonnes "à la main", quand tu ajoutes une colonne.Code:table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
Premièrement, il faut désactiver la création automatique par :
Ensuite, il te faudra passer l'instance de JTable à la méthode setColumnNumber, puis à chaque fois que tu ajoutes une colonne :Code:table.setAutoCreateColumnsFromModel(false);
Si tu veux que les colonnes ne puissent pas être déplacées :Code:
1
2
3
4
5 tableModel.addColumn("Column "+(i+1)); int width=150; // exemple de largeur de colonne TableColumn tableColumn = new TableColumn(i,width); tableColumn.setResizable(false); // pour que l'utilisateur ne puisse pas changer la taille table.addColumn(tableColumn);
Code:table.getTableHeader().setReorderingAllowed(false);
Normal, ce constructeur n'existe pas ! Qu'est-ce que tu cherches à faire ?
Tu veux créer une première colonne fixe, dès le départ, qui ne dépend pas du nombre qu'il y a dans la combo, c'est ça ?
Il te faut initialiser le modèle avec les données de la première colonne :
Il te faudra biensûr adapter la combo en conséquence.Code:
1
2
3
4
5
6
7
8
9 int nbLignes = 3; // exemple de nombres de lignes initiales Object[][] data = new Object[nbLignes][1]; for(int i=0; i<nbLignes; i++) { data[i][0]=d[i]; } final DefaultTableModel tableModel = new DefaultTableModel( data, new Object[]{"Column 1"});
Et enlever le bout de code suivant qui ne sert plus à rien :
Code:
1
2
3
4
5
6 if ( oldNumber==0 && tableModel.getRowCount()==0 ) { String[][] donnees = {{"D(i)"," "," "," "," "," "," "}}; tableModel.addRow(new Object[donnees]); }