Ajouter ligne à JTable héritée d'AbstractTableModel
Bonjour,
Je me lance dans le développement java, et je rencontre un problème surement simple mais auquel je n'ai trouvé aucune solution concrète.
J'ai une JTable composée de 2 colonnes (string, bool) que je rempli avec des données venant d'une table. Jusque là pas de soucis, mais j'aimerais qu'au clique d'un bouton, une ligne s'ajoute en première position dans ma table.
voilà l'instanciation de ma table
Code:
1 2 3
| jtCateg = new JTable(new MyTableModel());
jtCateg.setSize(new Dimension(50, 20));
panDetail.add(jtCateg); |
Ici ma classe héritant de AbstractTableModel
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| class MyTableModel extends AbstractTableModel {
private Class[] columnTypes = new Class[] {
String.class, Boolean.class
};
private String[] columnNames={"Catégorie","Sélection"};
private Object[][] data = movie.getCateg();
//constructeur
public MyTableModel(){
}
public void addRow(Object[] rowData){
//ici je bloque
}
//retourne le nombre de colonne
public int getColumnCount() {
return columnNames.length;
}
//retourne le nombre de ligne
public int getRowCount() {
return data.length;
}
//retourne le nom de la colonne dont l'indice est donné en paramètre
public String getColumnName(int col) {
return columnNames[col];
}
//initialise la valeur d'une cellule dont les coordonnées sont passés en paramètre
public Object getValueAt(int row, int col) {
return data[row][col];
}
//retourne le type de la colonne
public Class getColumnClass(int c) {
//return getValueAt(0, c).getClass();
return columnTypes[c];
}
public boolean isCellEditable(int row, int col) {
return true;
}
} |
Et pour finir le bouton qui déclenchera l'ajout de la ligne
Code:
1 2 3 4 5
| btAddCateg.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
//appel pour l'ajout de la line
}
}); |
Voilà mon problème est en fait de savoir comment ajouter une ligne vide à mon tableau contenant les data ? Ce qui ajoutera la ligne sans pour autant recharger mes données?
De plus est-ce qu'il y a un événement qui se déclenche au changement de ligne après avoir été en édition pour sauver en DB les éventuels changements?
Merci d'avance pour votre aide.