Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Problème de référence de classe JTable [ Archives / Java2D et java3D ] (tihon)

dimanche 28 décembre 2003 à 06:42:51 | Problème de référence de classe JTable

tihon

En fait, mon but est d'afficher le résultat d'une requête dans un JTable et ensuite, en appuyant sur un bouton de récupérer, dans un premier temps, la valeur d'une colonne de la ligne sélectionnée. Le problème, qui m'a pris toute la nuit, est que quand je teste la référence de ma JTable, et de ma listSelectioModel dans l'ActionListener, elle est nulle, et donc le pgm plante.
J'ai mis en rouge les endroit ou il me rends une valeur nulle...
Merci de votre aide!


Voilà mon code :


package projetjava;
import javax.swing.*;
import javax.swing.table.TableColumn.*;
import javax.swing.table.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.sql.*;

public class VoirClient extends JFrame {

private ConsulterClient parent;
private Accueil parentaccueil;
private Container cont;
private Vector nomcol=new Vector(),lignes=new Vector();
private String requete;
private JPanel pan1;
private MyTableModel model;
private JTable tablecli,tablebis;
private JScrollPane defilant;
private boolean vis = true;
private JButton suppr;
private JButton modifier;
private JButton retour;
private JLabel lab;
private int ind,numcli;
private ListSelectionModel listSelect;

/** Creates a new instance of VoirClient */
public VoirClient(ConsulterClient p, Accueil a) {
super("Client");
parent=p;
parentaccueil=a;
setBounds(100,100,900,500);
cont=getContentPane();
pan1 = new JPanel();

cont.setLayout(new BorderLayout());
try
{
requete="select * from Client;";
nomcol=Generique.getColumns(parentaccueil.getconnexion(),requete);
lignes=Generique.RequeteSQL(parentaccueil.getconnexion(),requete);
}
catch (SQLException re){JOptionPane.showMessageDialog(null,re.getMessage(),"pas d'acces bd",JOptionPane.ERROR_MESSAGE);};


MyTableModel model= new MyTableModel(nomcol,lignes);
JTable tablecli = new JTable(model);

tablecli.getTableHeader().setVisible(vis);
tablecli.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
ListSelectionModel listSelect = tablecli.getSelectionModel();

if (VoirClient.this.tablecli==null) System.out.println("pobien1");

if (VoirClient.this.tablebis==null) System.out.println("pobien");


TableColumnModel columnModel = tablecli.getColumnModel();
TableColumn column = columnModel.getColumn(2);
column.setPreferredWidth( 300 );
TableColumn column1 = columnModel.getColumn(6);
column1.setPreferredWidth( 200 );

defilant = new JScrollPane(tablecli);
cont.add(defilant,BorderLayout.CENTER);

lab=new JLabel(" Informations relatives aux clients. Veuillez sélectionner le client sur lequel vous souhaitez faire des modifications.");
cont.add(lab,BorderLayout.NORTH);

suppr = new JButton ("Supprimer le client");
Mongestionnaire sup = new Mongestionnaire();
suppr.addActionListener(sup);

modifier = new JButton ("Modifier les données du client");
Mongestionnaire mod = new Mongestionnaire();
modifier.addActionListener(mod);
retour = new JButton ("<<< Retour");
Mongestionnaire ret = new Mongestionnaire();

retour.addActionListener(ret);
pan1.setLayout(new GridLayout(1,3));
pan1.add(suppr);
pan1.add(modifier);
pan1.add(retour);

cont.add(pan1,BorderLayout.SOUTH);

show();
}
private class Mongestionnaire implements ActionListener
{
public void actionPerformed (ActionEvent e)
{
if (e.getSource()==retour)
{
VoirClient.this.dispose();
}
if (e.getSource()==modifier)
{

}
if (e.getSource()==suppr)
{
if (listSelect == null)
System.out.println("merde");
else{
int row = listSelect.getMinSelectionIndex();
System.out.println(model.getValueAt(row,0));


}

}
}
}
}


package projetjava;

import javax.swing.table.*;
import java.util.*;
/**
*
* @author Maxime
*/
public class MyTableModel extends AbstractTableModel {
Vector nomcol=new Vector();
Vector contenu=new Vector();
/** Creates a new instance of MyTableModel */
public MyTableModel(Vector col,Vector lig) {
contenu=lig;
nomcol=col;
}
public int getColumnCount(){return nomcol.size();}
public int getRowCount() {return contenu.size();}
public String getColumnName (int col) {return (String)nomcol.elementAt(col);}
public Object getValueAt(int row,int col){
Vector vect = (Vector)(contenu.elementAt(row));
return vect.elementAt(col);}


public Class getColumnClass(int c) {
return getValueAt(0,c).getClass();

}

}

lundi 29 décembre 2003 à 00:57:39 | Re : Problème de référence de classe JTable

tihon

J'ai trouvé! Merci à ceux qui ont essayé!

En fait il fallait simplement que je crée ma JTable dans les variables d'instance afin qu'elle soit accessible dans la classe interne.
Là, en créant une JTable dans le constructeur, je lui attribait une nouvelle référence non accessible à la classe interne mais seulement au constructeur.:):):)



Cette discussion est classé dans : public, private, import, vector, tablecli


Répondre à ce message

Sujets en rapport avec ce message

Erreur d'execution: java.lang.NullPointerException [ par amjad ] A la compilation d'un projet java3D j'obtient le message d'erreur suivant :Exception in thread "main" java.lang.NullPointerException at javax.vecmath Appel d'une classe depuis une autre [ par colruyt ] Bonjour a tous ,J'ai une classe qui fonctionne bien exécutée seule par contre quand je l'appelle depuis une autre , cela ne fonctionne pas !Si quelqu' Rafraichissement graphique d'un robot en simulation [ par SuperSteph ] On est en train de faire un projet qui simule un robot dynamiquement.On a reussi à faire evoluer le robot par contre on a une "trainéé". On aimerait v Timers [ par rippersly ] Salut à tousDeux questions :1°)Comment se fait il que pour le Timer "swing" si le delai depasse 920ms, le timer s'arette ???exmple : (si je mets le de recuperer contenu de balise xml avec sax [ par lolofx ] salut, voila, je voudrais recuprer le contenu d'une balise xml choisi voila la sourcepour info nom correspond au nom de la balisefichier au nom du fic ERROR sql java.sql.SQLException: Before start of result set [ par jmg02001 ] sauriez vous pourquoi quand je fait mon getInt mon result set n'est pas encore valide?à insert_id = rs.getInt("MROUNDID"); import java.io.*;import ja imprime trop gros [ par jackhabbot ] Bonjour à tous,je souhaite imprimer le contenu d'une fenêtre à une certaine échelle, car pour le moment lorsque j'imprime, c'est environ 2 fois plus g Appel de classes semblables [ par colruyt ] Bonjour à tous,Voici le problème qui se pose à moi :Dans ma classe principale , je fait appel à 2 classes et chacunes de celle-ci affiche le contenu d Sauvegarde et Serialisation [ par lafoune2 ] j'utilise unJFileChooser pour recuperer un fichier que j'ai enregistré mais y'a un truc que j'arrive pas a saisir : java.io.WriteAbortedException: wr Instruction : system.out.println [ par BSide ] Bonjour,voici un exemple de code (je débute) qui me pose des problèmes :import java.util.*;import java.math.*;import java.lang.*;import java


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,265 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.