Supprimer une ligne d'une JTable avec un bouton [Résolu]

bbrizn 14 Messages postés mercredi 16 décembre 2009Date d'inscription 26 janvier 2010 Dernière intervention - 16 déc. 2009 à 21:05 - Dernière réponse : bbrizn 14 Messages postés mercredi 16 décembre 2009Date d'inscription 26 janvier 2010 Dernière intervention
- 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);
}

}
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
kirua12 1155 Messages postés samedi 17 janvier 2004Date d'inscription 29 avril 2011 Dernière intervention - 17 déc. 2009 à 09:43
3
Merci
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);

Merci kirua12 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de kirua12
Meilleure réponse
kirua12 1155 Messages postés samedi 17 janvier 2004Date d'inscription 29 avril 2011 Dernière intervention - 17 déc. 2009 à 15:18
3
Merci
Quand tu relances ton appli, la ligne revient forcément puisque tu as codé en dur toutes les lignes.

Merci kirua12 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de kirua12
bbrizn 14 Messages postés mercredi 16 décembre 2009Date d'inscription 26 janvier 2010 Dernière intervention - 17 déc. 2009 à 14:36
0
Merci
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
Commenter la réponse de bbrizn
bbrizn 14 Messages postés mercredi 16 décembre 2009Date d'inscription 26 janvier 2010 Dernière intervention - 17 déc. 2009 à 15:39
0
Merci
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
Commenter la réponse de bbrizn

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.