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

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

}
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
Messages postés
1155
Date d'inscription
samedi 17 janvier 2004
Dernière intervention
29 avril 2011
4
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);

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 91 internautes nous ont dit merci ce mois-ci

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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 91 internautes nous ont dit merci ce mois-ci

Commenter la réponse de kirua12
Messages postés
14
Date d'inscription
mercredi 16 décembre 2009
Dernière intervention
26 janvier 2010
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
Messages postés
14
Date d'inscription
mercredi 16 décembre 2009
Dernière intervention
26 janvier 2010
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.