IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants Java Discussion :

JTable et ItemListener


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    203
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 203
    Par défaut JTable et ItemListener
    Bonjours,

    J'ai un "petit" problème:

    j'ai ma classe ChoixClient qui contient une JComboBoc.
    Quand je sélectionne un client, il devrait apparaitre un tableau avec des renseignements.
    J'arrive bien à récupérer l'item sélectionné (dans un JOPtionPane), mais je n'arrive pas à voir mon tableau

    Voici le code de ma classe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    public class ChoixClient extends JPanel implements ItemListener{
      ListeCltModel modelListe;
      JComboBox boxClient;
      //TableEtsModel tableEts;
      //JTable table;
     
      ChoixClient(){
     
            //tableEts=new TableEtsModel();
            //table=tableEts.creaTable("cpa");
     
            modelListe=new ListeCltModel();
            boxClient=new JComboBox(modelListe);
            boxClient.setPreferredSize(new Dimension(100,30));
     
            boxClient.addItemListener(this);
            setLayout(new BorderLayout());
            setBackground(Color.cyan);
            setPreferredSize(new Dimension(400,400));
            add(boxClient,BorderLayout.NORTH);
     
    /*Pour tester si ma table était bonne, je l'ai d'abord insérer à cet endroit du code: là ça marche*/
            //add(table,BorderLayout.CENTER);
      }
      public void itemStateChanged(ItemEvent evt){
        Object obj=evt.getSource();
        String s=(String)(evt.getItem());
        if(s!="")
        {
            TableEtsModel tableEts=new TableEtsModel();
            JTable table=tableEts.creaTable(s);
            add(table,BorderLayout.CENTER);
            //JOptionPane.showMessageDialog(this,s,"avertissement",JOptionPane.WARNING_MESSAGE);
            }
     
      }
     
    }
    C'est peut-être un simple problème de panel???
    ou autre chose, mais en cas çam'échappe.
    merci par avance
    claire

  2. #2
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    203
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 203
    Par défaut


    après au moins 10 jour à essayer de comprendre les models, l'architecture MVC..
    j'ai enfin réussi à obtenir ce que je voulais.

    Je mets mon code (pour les très débutants comme moi), car pour les autres peut-être pas assez "joli":
    model de mon tableau

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    import javax.swing.JPanel;
    import javax.swing.table.TableModel;
    import javax.swing.JTable;
    import javax.swing.JScrollPane;
    import javax.swing.table.DefaultTableModel;
     
    import java.awt.Dimension;
    import java.sql.ResultSet;
     
    public class TableEtsModel extends JTable{
     
      Object[][] donnees=new Object[10][6];
     
      public TableEtsModel(){
      }
      public DefaultTableModel creaTable(String nomClt){
    //Création du tableau
                String sql="select denominationEts,siegeSocial,adr1Ets,adr2Ets,cpEts,villeEts from etablissements where denominationClt='"+nomClt+"'";
                BaseDonnees BD=new BaseDonnees();
                ResultSet rst=BD.selectionBD(sql);
                int i=0;
                try{
                while(rst.next())
                                 {
                                 donnees[i][0]=rst.getString("denominationEts");
                                 donnees[i][1]=rst.getString("siegeSocial");
                                 donnees[i][2]=rst.getString("adr1Ets");
                                 donnees[i][3]=rst.getString("adr2Ets");
                                 donnees[i][4]=rst.getString("cpEts");
                                 donnees[i][5]=rst.getString("villeEts");
                                 i++;
                                 }
               }
                catch(Exception ex){
                       System.out.println("echec lors de la création de donnees:"+ex.getMessage());
     
                       }
      String[] nomsColonne={"Nom","Siège social","adresse","","Code postal","Ville"};
     
            DefaultTableModel tableEts=new DefaultTableModel(donnees,nomsColonne);
            return tableEts;
     
      }
    }
    Ma vue:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    public class ChoixClient extends JPanel /*implements ItemListener*/{
      ListeCltModel modelListe;
      JComboBox boxClient;
      //TableEtsModel tableEts;
      //JTable table;
      JTable tableur=new JTable();
     
      ChoixClient(){
     
     
            modelListe=new ListeCltModel();
            boxClient=new JComboBox(modelListe);
            boxClient.setPreferredSize(new Dimension(100,30));
     
            //boxClient.addItemListener(this);
            boxClient.addActionListener(new ActionListener(){
              public void actionPerformed(ActionEvent ae){
                updateTable();
              }
            });
     
            setLayout(new BorderLayout());
            setBackground(Color.cyan);
            setPreferredSize(new Dimension(400,400));
            add(boxClient,BorderLayout.NORTH);
     
            //tableEts=new TableEtsModel();
            //table=tableEts.creaTable("cpa");
            tableur.setPreferredSize(new Dimension(200,200));
            add(tableur,BorderLayout.CENTER);
      }
      /*public void itemStateChanged(ItemEvent evt){
        Object obj=evt.getSource();
        String s=(String)(evt.getItem());
        if(s!="")
        {
            TableEtsModel tableEts=new TableEtsModel();
            JTable table=tableEts.creaTable(s);
            add(table,BorderLayout.CENTER);
            //JOptionPane.showMessageDialog(this,s,"avertissement",JOptionPane.WARNING_MESSAGE);
            }
     
      }
      */
      private void updateTable(){
     
      String s=(String)boxClient.getSelectedItem();
        if(s!="")
        {
            TableEtsModel tableEts=new TableEtsModel();
            DefaultTableModel table=tableEts.creaTable(s);
            tableur.setModel(table);
        }
      }
     
    }
    A plus
    claire
    ps: je crois que j'ai agrémenté MVC à ma sauce mais j'ai pas réussi mieux

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Swing]JTable- Dimensionner les colonnes
    Par loutfi dans le forum Composants
    Réponses: 12
    Dernier message: 01/07/2011, 08h50
  2. focus dans une cellule d'une JTable
    Par coil dans le forum Composants
    Réponses: 5
    Dernier message: 07/07/2010, 17h15
  3. [SWING]jTable + Focus
    Par chady dans le forum Composants
    Réponses: 5
    Dernier message: 27/02/2003, 14h51
  4. JBuilder7 & JTable Colonne alignement
    Par Tonton Luc dans le forum JBuilder
    Réponses: 5
    Dernier message: 06/11/2002, 17h32
  5. Réponses: 9
    Dernier message: 12/08/2002, 07h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo