Supprimer une ligne d'une JTable avec un bouton

Résolu
bbrizn Messages postés 14 Date d'inscription mercredi 16 décembre 2009 Statut Membre Dernière intervention 26 janvier 2010 - 16 déc. 2009 à 21:05
bbrizn Messages postés 14 Date d'inscription mercredi 16 décembre 2009 Statut Membre Dernière intervention 26 janvier 2010 - 17 déc. 2009 à 15:39
Bonsoir,
j'ai essayé plusieurs méthodes pour faire fonctionner mon code, j'ai même trouvé des pistes intéressantes sur ce site, mais je reste bloqué comme le débutant que je suis et n'arrive pas à supprimer une ligne de mon tableau en appuyant sur le bouton..
si quelqu'un avait l'amabilité de me donner l'explication de mon erreur.
je vous remercie par avance.
Didier.
Voici mon code:


package com.bbr.test;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;



public class BareVisibleTestButtons extends JFrame {

private JTable tableau;

private JButton suppressionLigne = new JButton("Supprimer");
private JLabel legende = new JLabel ("cliquez sur la ligne à supprimer de votre portefeuille puis sur le bouton ");

public BareVisibleTestButtons(){
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setTitle("JTable");
this.setSize(800, 300);

Object[][] data = { {"ata", GestionDuNom.getNomCourant(), "8,85", "1000", "8.87", "-1200", "9,85"},
{"edl", "eurodisney", "8,85", "1000", "8.87", "-1200", "9,85"},
{"tms1", "thomson", "8,85", "1000", "8.87", "1200", "9,85"},
{"tms2", "thomson", "8,85", "1000", "8.87", "1200", "9,85"},
{"tms3", "thomson", "8,85", "1000", "8.87", "1200", "9,85"},
{"tms4", "thomson", "8,85", "1000", "8.87", "1200", "9,85"},
{"tms5", "thomson", "8,85", "1000", "8.87", "1200", "9,85"},
{"tms6", "thomson", "8,85", "1000", "8.87", "1200", "9,85"},
{"tms7", "thomson", "8,85", "1000", "8.87", "1200", "9,85"},
{"kn", "natixis", "8,85", "1000", "8.87", "-1200", "9,85"}
};

String title[] = {"Code", "nom", "cours actuel", "Qté", "PRU", "PV/MV", "Cours Objectif"};
this.tableau = new JTable(data, title);

JPanel pan = new JPanel();


suppressionLigne.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent arg0) {
if (tableau.isEditing()) {
if (tableau.getCellEditor() != null) {
tableau.getCellEditor().stopCellEditing();
}
}
int[] selected = tableau.getSelectedRows();
for (int i = selected.length - 1; i >= 0; i--) {
System.out.println(tableau.getModel().getValueAt(selected[i],0));
((DefaultTableModel) tableau.getModel()).removeRow(tableau.getSelectedRow());
// tableau.removeRow(selected[i]);
}
}
});
Font police = new Font("Arial", Font.BOLD, 12);
legende.setFont(police);
legende.setForeground(Color.BLUE);

pan.add(legende);
pan.add(suppressionLigne);

//On remplace cette ligne
this.getContentPane().add(new JScrollPane(tableau), BorderLayout.CENTER);
this.getContentPane().add(pan, BorderLayout.SOUTH);

}


public static void main(String[] args){
BareVisibleTestButtons fen = new BareVisibleTestButtons();
fen.setVisible(true);
}

}

4 réponses

kirua12 Messages postés 1155 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 29 avril 2011 8
17 déc. 2009 à 09:43
Salut,

n'aurais tu pas une exception par hasard ? par ex sur cette ligne là ?
((DefaultTableModel) tableau.getModel()).removeRow(tableau.getSelectedRow()); 


Tu n'as pas de model associé à ta jtable et tu essaies de le caster dans un autre type.
Tu dois créer ton model pour pouvoir faire ça.
TableModel tableModel = new DefaultTableModel(data, title);
this.tableau = new JTable(tableModel);
3
kirua12 Messages postés 1155 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 29 avril 2011 8
17 déc. 2009 à 15:18
Quand tu relances ton appli, la ligne revient forcément puisque tu as codé en dur toutes les lignes.
3
bbrizn Messages postés 14 Date d'inscription mercredi 16 décembre 2009 Statut Membre Dernière intervention 26 janvier 2010
17 déc. 2009 à 14:36
Merci Kirua12,

j'avais bien une exception, mais je n'en comprenais pas le sens, merci pour ta correction.
du coup je me rends compte que je n'ai pas du faire ce qu'il fallait depuis le début car j'arrive bien à supprimer ma ligne à l'écran, mais pas physiquement dans ma classe.

si je ferme ma fenêtre et que je la relance, la ligne supprimée reviens...

qu'ai je donc oublié sur ce coup là ???

merci d'avance pour vos coups de main.
Didier
0
bbrizn Messages postés 14 Date d'inscription mercredi 16 décembre 2009 Statut Membre Dernière intervention 26 janvier 2010
17 déc. 2009 à 15:39
alors c'est là que j'atteins mes limites, je crois que j'aurais du prendre plus d'heures de formation car je ne savais pas que je codais "en dur".
merci pour ton aide, je vais chercher d'autres façons de coder.
Didier
0
Rejoignez-nous