Remplissage Table [Résolu]

Signaler
Messages postés
3
Date d'inscription
vendredi 21 mai 2010
Statut
Membre
Dernière intervention
25 mai 2010
-
Messages postés
30
Date d'inscription
jeudi 20 mai 2010
Statut
Membre
Dernière intervention
8 juillet 2012
-
Je veux montrer dans une table le résultat d'une requête SQL.
La requête rend son résultat mais je ne sais pas le mettre dans la table et la montrer.
Le problème est au final du code.
Merci beaucoup
Code :


package Entreprise;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;
import javax.swing.JTable;

import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;

import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;

public class ChercherCommandeFacture implements ActionListener{
DefaultTableModel modelo;
private JPanel jPanelSuperieur = null;
private JLabel jLabeladresse = null;
private JLabel jLabelVille = null;
private JLabel jLabelCP = null;
private JLabel jLabelNom = null;
private JLabel jLabelCodeClient = null;
private JLabel jLabelCl = null;
private JLabel jLabelN = null;
private JLabel jLabelA = null;
private JLabel jLabelV = null;
private JLabel jLabelP = null;
private JLabel jLabelTel = null;
private JLabel jLabelT = null;
private JLabel jLabelTy = null;
private JLabel jLabelType = null;
private JButton jButtonNouvelleCommande = null;
private JPanel jPanelCentral = null;
private JTable jTableCenTab = null;
private JFrame jFramePrincipal = null;  //  @jve:decl-index=0:visual-constraint="10,6"
private JPanel jContentPaneConteneur = null;
private JTabbedPane jTabbedPaneInferieur = null;
private JTable jTableCommande = null;
private JTable jTableFacture = null;
private JLabel jLabelTitreRecherche = null;
private JTextField jTextFieldCodeClient = null;
private JTextField jTextFieldNom = null;
private JTextField jTextFieldAdresse = null;
private JTextField jTextFieldVille = null;
private JTextField jTextFieldCodePostal = null;
private JTextField jTextFieldTelephone = null;
private JTextField jTextFieldTypeClient = null;
private JButton jButtonChercherClient = null;

/**
 * This method initializes jPanelSuperieur	
 * 	
 * @return javax.swing.JPanel	
 */
private JPanel getJPanelSuperieur() {
if (jPanelSuperieur == null) {
jLabelTitreRecherche = new JLabel("Recherche Client");
jLabelTitreRecherche.setBounds(new Rectangle(12, 208, 145, 16));
jLabelType = new JLabel("Type Client");
jLabelType.setBounds(new Rectangle(15, 160, 69, 22));
jLabelTy = new JLabel("");
jLabelTy.setBounds(new Rectangle(92, 159, 137, 22));
jLabelT = new JLabel("");
jLabelT.setBounds(new Rectangle(92, 135, 137, 22));
jLabelP = new JLabel("");
jLabelP.setBounds(new Rectangle(92, 112, 137, 22));
jLabelV = new JLabel("");
jLabelV.setBounds(new Rectangle(93, 87, 137, 22));
jLabelA = new JLabel("");
jLabelA.setBounds(new Rectangle(92, 63, 137, 22));
jLabelN = new JLabel("");
jLabelN.setBounds(new Rectangle(93, 39, 137, 22));
jLabelCl = new JLabel("");
jLabelCl.setBounds(new Rectangle(94, 16, 137, 22));
jLabelCodeClient = new JLabel("Code Client");
jLabelCodeClient.setBounds(new Rectangle(18, 16, 70, 22));
jLabelNom = new JLabel("Nom");
jLabelNom.setBounds(new Rectangle(53, 39, 35, 22));
jLabelCP = new JLabel("Code Postal");
jLabelCP.setBounds(new Rectangle(11, 111, 75, 22));
jLabelVille = new JLabel("Ville");
jLabelVille.setBounds(new Rectangle(57, 87, 29, 22));
jLabeladresse = new JLabel("Adresse");
jLabeladresse.setBounds(new Rectangle(32, 63, 56, 22));
jLabelTel = new JLabel("Téléphone");
jLabelTel.setBounds(new Rectangle(16, 134, 68, 22));
jPanelSuperieur = new JPanel();
jPanelSuperieur.setLayout(null);
jPanelSuperieur.add(jLabeladresse, null);
jPanelSuperieur.add(jLabelVille, null);
jPanelSuperieur.add(jLabelCP, null);
jPanelSuperieur.add(jLabelNom, null);
jPanelSuperieur.add(jLabelCodeClient, null);
jPanelSuperieur.add(jLabelCl, null);
jPanelSuperieur.add(jLabelN, null);
jPanelSuperieur.add(jLabelA, null);
jPanelSuperieur.add(jLabelV, null);
jPanelSuperieur.add(jLabelP, null);
jPanelSuperieur.add(jLabelTel, null);
jPanelSuperieur.add(jLabelT, null);
jPanelSuperieur.add(jLabelTy, null);
jPanelSuperieur.add(jLabelType, null);
jPanelSuperieur.add(getJButtonNouvelleCommande(), null);
jPanelSuperieur.add(jLabelTitreRecherche, null);
jPanelSuperieur.add(getJTextFieldCodeClient(), null);
jPanelSuperieur.add(getJTextFieldNom(), null);
jPanelSuperieur.add(getJTextFieldAdresse(), null);
jPanelSuperieur.add(getJTextFieldVille(), null);
jPanelSuperieur.add(getJTextFieldCodePostal(), null);
jPanelSuperieur.add(getJTextFieldTelephone(), null);
jPanelSuperieur.add(getJTextFieldTypeClient(), null);
jPanelSuperieur.add(getJButtonChercherClient(), null);
}
return jPanelSuperieur;
}

/**
 * This method initializes jButtonNouvelleCommande	
 * 	
 * @return javax.swing.JButton	
 */
private JButton getJButtonNouvelleCommande() {
if (jButtonNouvelleCommande == null) {
jButtonNouvelleCommande = new JButton("Nouvelle Commande");
jButtonNouvelleCommande.setBounds(new Rectangle(411, 68, 154, 84));
jButtonNouvelleCommande.addActionListener(this);
}
return jButtonNouvelleCommande;
}



/**
 * This method initializes jTableCommande	
 * 	
 * @return javax.swing.JTable	
 */
private JTable getJTableCommande() {
if (jTableCommande == null) {
jTableCommande = new JTable();
}
return jTableCommande;
}

/**
 * This method initializes jTableFacture	
 * 	
 * @return javax.swing.JTable	
 */
private JTable getJTableFacture() {
if (jTableFacture == null) {
jTableFacture = new JTable();
}
return jTableFacture;
}
/**
 * This method initializes jTextFieldCodeClient	
 * 	
 * @return javax.swing.JTextField	
 */
private JTextField getJTextFieldCodeClient() {
if (jTextFieldCodeClient == null) {
jTextFieldCodeClient = new JTextField();
jTextFieldCodeClient.setBounds(new Rectangle(240, 16, 158, 22));
}
return jTextFieldCodeClient;
}

/**
 * This method initializes jTextFieldNom	
 * 	
 * @return javax.swing.JTextField	
 */
private JTextField getJTextFieldNom() {
if (jTextFieldNom == null) {
jTextFieldNom = new JTextField();
jTextFieldNom.setBounds(new Rectangle(240, 39, 158, 22));
}
return jTextFieldNom;
}

/**
 * This method initializes jTextFieldAdresse	
 * 	
 * @return javax.swing.JTextField	
 */
private JTextField getJTextFieldAdresse() {
if (jTextFieldAdresse == null) {
jTextFieldAdresse = new JTextField();
jTextFieldAdresse.setBounds(new Rectangle(240, 63, 158, 22));
}
return jTextFieldAdresse;
}

/**
 * This method initializes jTextFieldVille	
 * 	
 * @return javax.swing.JTextField	
 */
private JTextField getJTextFieldVille() {
if (jTextFieldVille == null) {
jTextFieldVille = new JTextField();
jTextFieldVille.setBounds(new Rectangle(240, 87, 158, 22));
}
return jTextFieldVille;
}

/**
 * This method initializes jTextFieldCodePostal	
 * 	
 * @return javax.swing.JTextField	
 */
private JTextField getJTextFieldCodePostal() {
if (jTextFieldCodePostal == null) {
jTextFieldCodePostal = new JTextField();
jTextFieldCodePostal.setBounds(new Rectangle(240, 112, 158, 22));
}
return jTextFieldCodePostal;
}

/**
 * This method initializes jTextFieldTelephone	
 * 	
 * @return javax.swing.JTextField	
 */
private JTextField getJTextFieldTelephone() {
if (jTextFieldTelephone == null) {
jTextFieldTelephone = new JTextField();
jTextFieldTelephone.setBounds(new Rectangle(240, 135, 158, 22));
}
return jTextFieldTelephone;
}

/**
 * This method initializes jTextFieldTypeClient	
 * 	
 * @return javax.swing.JTextField	
 */
private JTextField getJTextFieldTypeClient() {
if (jTextFieldTypeClient == null) {
jTextFieldTypeClient = new JTextField();
jTextFieldTypeClient.setBounds(new Rectangle(240, 159, 158, 22));
}
return jTextFieldTypeClient;
}

/**
 * This method initializes jButtonChercherClient	
 * 	
 * @return javax.swing.JButton	
 */
private JButton getJButtonChercherClient() {
if (jButtonChercherClient == null) {
jButtonChercherClient = new JButton("Chercher Client");
jButtonChercherClient.setBounds(new Rectangle(243, 192, 154, 24));
jButtonChercherClient.addActionListener(this);
}
return jButtonChercherClient;
}

/**
 * This method initializes jTableCenTab	
 * 	
 * @return javax.swing.JTable	
 */
private JTable getJTableCenTab() {
if (jTableCenTab == null) {
//jTableCenTab = new JTable();

modelo = new DefaultTableModel();
jTableCenTab = new JTable(modelo);
}
return jTableCenTab;
}

/**
 * This method initializes jContentPaneConteneur	
 * 	
 * @return javax.swing.JPanel	
 */
private JPanel getJContentPaneConteneur() {
if (jContentPaneConteneur == null) {
GridLayout gridLayout = new GridLayout(3,1);
jContentPaneConteneur = new JPanel();
jContentPaneConteneur.setLayout(gridLayout);
jContentPaneConteneur.add(getJPanelSuperieur(), null);
jContentPaneConteneur.add(getJPanelCentral(), null);
jContentPaneConteneur.add(getJTabbedPaneInferieur(), null);
}
return jContentPaneConteneur;
}

/**
 * This method initializes jTabbedPaneInferieur	
 * 	
 * @return javax.swing.JTabbedPane	
 */
private JTabbedPane getJTabbedPaneInferieur() {
if (jTabbedPaneInferieur == null) {
jTabbedPaneInferieur = new JTabbedPane();
jTabbedPaneInferieur.addTab("Commande", null, getJTableCommande(), null);
jTabbedPaneInferieur.addTab("Facture", null, getJTableFacture(), null);
}
return jTabbedPaneInferieur;
}

/**
 * This method initializes jPanelCentral	
 * 	
 * @return javax.swing.JPanel	
 */
private JPanel getJPanelCentral() {
if (jPanelCentral == null) {
GridBagConstraints gridBagConstraints1 = new GridBagConstraints();
gridBagConstraints1.fill = GridBagConstraints.BOTH;
gridBagConstraints1.gridy = 0;
gridBagConstraints1.weightx = 1.0;
gridBagConstraints1.weighty = 1.0;
gridBagConstraints1.gridx = 0;
jPanelCentral = new JPanel();
jPanelCentral.setLayout(new GridBagLayout());
jPanelCentral.add(getJTableCenTab(), gridBagConstraints1);
}
return jPanelCentral;
}

    public void visualiserFenetre() {
jFramePrincipal = new JFrame("Recherche Commande - Facture");
jFramePrincipal.setSize(new Dimension(602, 724));
jFramePrincipal.setMinimumSize(new Dimension(602, 724));
jFramePrincipal.setContentPane(getJContentPaneConteneur());
jFramePrincipal.setVisible(true);
    }

    
    public void actionPerformed(ActionEvent e){
  
      	 if(e.getSource().equals(jButtonChercherClient)){      		
      		try {	
      			BaseDeDonnees bd = new BaseDeDonnees();//Ici on garde la connexion et les requêtes SQL
bd.etablirConnexion();
//on récupère les données des TextField pour faire la requête
ResultSet resultat = bd.getSelectClients(jTextFieldCodeClient.getText(), jTextFieldNom.getText(), jTextFieldAdresse.getText(),
jTextFieldCodePostal.getText(), jTextFieldVille.getText(), jTextFieldTelephone.getText(), jTextFieldTypeClient.getText()  );
if ( resultat.next() ){
ResultSetMetaData metaDatas = resultat.getMetaData();
int nombreColonnes = metaDatas.getColumnCount();
Object[] etiquettes = new Object[nombreColonnes];
for (int i = 0; i < nombreColonnes; i++) { 
   etiquettes[i] = metaDatas.getColumnLabel(i + 1); 
}
int rown =1;
while (resultat.next()) {
System.out.println("3dentro");
   rown ++;
   Object [] fila = new Object[nombreColonnes]; 
   for (int i=0;i<nombreColonnes;i++){
      fila[i] = resultat.getObject(i+1);
      getJTableCenTab().setValueAt(fila[i],rown, i );
   }
   modelo.setColumnIdentifiers(etiquettes);
   modelo.addRow(fila); 
   
                 //La méthode getJTableCenTab est la table que je veux passer à getJPanelCentral()
   								  //et celle-ci je la passe à getJContentPaneConteneur() et celle-ci à la JFramePrincipal					   
}

}else{

}

bd.fermeConnexion();
      } catch (Exception en) {en.printStackTrace();}
         	 }else{ 
 	   			if(e.getSource().equals(jButtonNouvelleCommande)){
 	   			CommandeFacture fact = new CommandeFacture();
 	   			fact.visualiserFenetre();
   		}   		 
   	 }
    }

public static void main(String[] args) {
ChercherCommandeFacture fact = new ChercherCommandeFacture();
fact.visualiserFenetre();
}

}

5 réponses

Messages postés
30
Date d'inscription
jeudi 20 mai 2010
Statut
Membre
Dernière intervention
8 juillet 2012

salut,
ça sert à rien de montrer tous ce code,essaye de mettre le résultat de la requête dans un JTable();
jt= new JTable(donne,colonne);
avec donne=new String[nbligne][nbcolonnes];
while(resultset.next())
{for(int j=0;j<nbc;j++)
{
donne[i][j]= resultset.getString(j+1);

}
i++;

}

colonne= new String[nombreDeColonne];
for(int i=0;i<nombreDeColonne;i++){

colonne[i]=resultSetMetaData.getColumnName(i+1);
Messages postés
30
Date d'inscription
jeudi 20 mai 2010
Statut
Membre
Dernière intervention
8 juillet 2012

salut,
pour savoir le nombre des lignes, tu fait
while(resultset.next())
nbligne++;
pour pointer le resultset vers le debut pour recalculer String[][] donne, il tesuffit de refaire l'appel de rsesulset=st.executeQuery(s);
Messages postés
3
Date d'inscription
vendredi 21 mai 2010
Statut
Membre
Dernière intervention
25 mai 2010

J'ai adapté le code que tu m'as donné, mais j'ai un problème avec
String[][] donne =new String[nbligne][nbcolonnes];
parceque je ne peux pas savoir le "nblignes" que une fois dehors du while, mais il me faut le connaitre pour remplir "donne" à chaque resultset.next

ResultSetMetaData metaDatas = resultset.getMetaData();
int nbligne =0;
int nbcolonnes= metaDatas.getColumnCount(); ;
while(resultset.next()){
nbligne++;
for(int j=0;j<nbcolonnes;j++)	{
donne[nbligne][j]= resultset.getString(j+1);
}
nbligne++;

}
String[] colonne= new String[nbcolonnes];
String[][] donne =new String[nbligne][nbcolonnes];

for(int k=0;k<nbcolonnes;k++)
colonne[k]=metaDatas.getColumnName(k+1);

jt= new JTable(donne,colonne);
Messages postés
3
Date d'inscription
vendredi 21 mai 2010
Statut
Membre
Dernière intervention
25 mai 2010

J'ai un problème de nullpointer(je crois), dans le premier "for", mais je n'arrive pas à le résoudre.
Il donne l'erreur:
java.lang.ArrayIndexOutOfBoundsException: 12
at Entreprise.ChercherCommandeFacture.actionPerformed(ChercherCommandeFacture.java:367)

      		
      		try {	
      			BaseDeDonnees bd = new BaseDeDonnees();
bd.etablirConnexion();
ResultSet resul = bd.getSelectClients(jTextFieldCodeClient.getText(), jTextFieldNom.getText(), jTextFieldAdresse.getText(), jTextFieldCodePostal.getText(), jTextFieldVille.getText(), jTextFieldTelephone.getText(), jTextFieldTypeClient.getText()  );
int nbligne =0;
while(resul.next()){
nbligne++;
}			

ResultSet resultset = bd.getSelectClients(jTextFieldCodeClient.getText(), jTextFieldNom.getText(), jTextFieldAdresse.getText(),
jTextFieldCodePostal.getText(), jTextFieldVille.getText(), jTextFieldTelephone.getText(), jTextFieldTypeClient.getText()  );
ResultSetMetaData metaDatas = resultset.getMetaData();
int nbcolonnes= metaDatas.getColumnCount();
String[][] donne =new String[nbligne][nbcolonnes];
while(resultset.next()){
nbligne++;
for(int j=0;j<nbcolonnes;j++)	{
donne[nbligne][j]= resultset.getString(j+1); //línea 367
}
nbligne++;

}
String[] colonne= new String[nbcolonnes];


for(int k=0;k<nbcolonnes;k++)
colonne[k]=metaDatas.getColumnName(k+1);

jt= new JTable(donne,colonne);

bd.fermeConnexion();
      } catch (Exception en) {en.printStackTrace();}


Merci
Messages postés
30
Date d'inscription
jeudi 20 mai 2010
Statut
Membre
Dernière intervention
8 juillet 2012

salut,
d'aprés ton code
while(resultset.next()){
nbligne++;
for(int j=0;j<nbcolonnes;j++) {
donne[nbligne][j]= resultset.getString(j+1); //línea 367
}
nbligne++;

}
pourquoi tu fait l'appel 2 fois à nbligne++,
il faut avancer par un pas de 1
donc essaye d'enlever la 1ière,
espérant que ça va résoudre ton problème