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

AWT/Swing Java Discussion :

JComboxBox, requete SQL et TableAbstractModel, je suis perdu


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 24
    Par défaut JComboxBox, requete SQL et TableAbstractModel, je suis perdu
    Bonsoir,

    Pour mon formulaire de commandes, j'ai besoin d'inclure un ComboBox dans une JTable vierge, qui va donc être remplie par l'utilisateur, avec l'EAN, le titre, le prix, la quantite. La seule cellule préremplie sera la ComboBox, alimentée par une requête SQL allant récupérer le nom des fournisseurs dans une table. La JTable est basée sur un AbstractModel et une liste.

    Je suis perdu, car je ne sais pas où placer les différents éléments comme la requête SQL, déclarer la combobox dans mon modele... Je sais qu'il faut utiliser un TableCellRender pour afficher la ComboBox, mais malgré mes recherches, je n'ai pas trouvé d'exemple qui correspondait à mon cas.

    Bref, voilà, je souhaite afficher une combobox remplie par une requete sql a partir d'un tableabstractmodel et une liste.

    J'éspère avoir été clair des propos
    Bien Cordialement
    Laplume

    Le TableModel
    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
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    package com.pl.app;
     
    import java.sql.ResultSet;
    import java.sql.ResultSetMetaData;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.ArrayList;
    import java.util.List;
     
    import javax.swing.JComboBox;
    import javax.swing.table.AbstractTableModel;
     
    public class PriseCommandeTableModel extends AbstractTableModel {
    		private List<Prisecommande> prisecommande = new ArrayList<Prisecommande>();	
    		private String[] entetes = {"EAN","Diffuseur","Titre","Prix","Qte","Total"};
    		private JComboBox dif;
     
    		public PriseCommandeTableModel() {
    		    super();  
    		    String SQL = "SELECT diffuseur FROM basediffuseurs";
    		    JComboBox dif = new JComboBox();
    		    try {	
    	 		   Statement st = Connecteur.getInstance().createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE,
    	 			ResultSet.CONCUR_READ_ONLY );
    	    		ResultSet result = st.executeQuery(SQL);
    	    		ResultSetMetaData resultMeta = result.getMetaData();
     
    	    	    while (result.next()) {
    	    	    	dif.addItem(result.getString(1));
    	        	}	        
    			result.close();
    			st.close();	
    			}
    	   	    catch ( SQLException f )
    		    {
    		      f.printStackTrace();
    		    }  
    		    prisecommande.add(new Prisecommande("","","",0,1,0));
    		}
     
    		public int getRowCount() {
    		    return prisecommande.size();
    		}
     
    		public int getColumnCount() {
    		    return entetes.length;
    		}
     
    		public String getColumnName(int columnIndex) {
    		    return entetes[columnIndex];
    		}
     
    		//Methode qui teste la variable selectionnée et qui autorise ou non l'édition
    		public boolean isCellEditable(int rowIndex, int columnIndex)
    		{ 
    		return true; 
    		}
     
    		public Object getValueAt(int rowIndex, int columnIndex) {
    		    switch(columnIndex){
    		        case 0:
    		            return prisecommande.get(rowIndex).getEAN();
    		        case 1:
    		            return prisecommande.get(rowIndex).getdiffuseur();
    		        case 2:
    		            return prisecommande.get(rowIndex).gettitre();
    		        case 3:
    		            return prisecommande.get(rowIndex).getprix(); 
    		        case 4:
    		            return prisecommande.get(rowIndex).getqte();
    		        case 5:
    		            return prisecommande.get(rowIndex).gettotal();
    		        default:
    		            return null; //Ne devrait jamais arriver
    		    }
    		}
     
    		public void addCommande(Prisecommande pri) {
    			prisecommande.add(pri);
    		    fireTableRowsInserted(prisecommande.size() -1, prisecommande.size() -1);
    		}
     
    		public void removeCommande(int rowIndex) {
    			prisecommande.remove(rowIndex);
    		    fireTableRowsDeleted(rowIndex, rowIndex);
    		}
    }
    La classe de données

    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
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    package com.pl.app;
     
    import javax.swing.JComboBox;
     
    public class Prisecommande {
        private String EAN;
        private String diffuseur;
        private String titre;
        private float prix = 0;
        private int qte = 0;
        private float total = 0;
     
        public Prisecommande(String EAN,String diffuseur,String titre,float prix,int qte,float total ) {
            super();
            this.EAN = EAN;
            this.diffuseur = diffuseur;
            this.titre = titre;
            this.prix = prix;
            this.qte = qte;
            this.total = total;
        }
     
    	public String getEAN() {
            return EAN;
        }
     
        public void setEAN(String EAN) {
            this.EAN = EAN;
        }
     
        public String getdiffuseur() {
            return diffuseur;
        }
     
        public void setdiffuseur(String diffuseur) {
            this.diffuseur = diffuseur;
        }
     
        public String gettitre() {
            return titre;
        }
     
        public void settitre(String titre) {
            this.titre = titre;
        }
     
     
        public float getprix() {
            return prix;
        }
     
        public void setprix(float prix) {
            this.prix = prix;
        }
     
        public int getqte() {
        	return qte;
        }
     
        public void setqte (int qte) {
        	this.qte = qte;
        }
     
        public float gettotal() {
            return total;
        }
     
        public void settotal(float total) {
            this.total = total;
        }
    }
    Le Formulaire (l'affichage n'est pas encore optimisé, je me concentre d'abord sur la jtable)
    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
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    package com.pl.app;
     
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
     
    import javax.swing.BorderFactory;
    import javax.swing.ButtonGroup;
    import javax.swing.DefaultCellEditor;
    import javax.swing.ImageIcon;
    import javax.swing.JButton;
    import javax.swing.JComboBox;
    import javax.swing.JDialog;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JRadioButton;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
    import javax.swing.JTextField;
    import javax.swing.table.TableColumn;
     
    public class Formcom extends JDialog {
    	  JScrollPane scroll=new JScrollPane();
     private JTable tableauc;
      private FormcomInfo zInfo = new FormcomInfo();
      private boolean sendData;
      private JLabel clientLabel, prenomLabel, nomLabel, cheveuxLabel, ageLabel, tailleLabel,taille2Label, icon;
      private JRadioButton repoui, repnon;
      private JComboBox sexe, cheveux,pof;
      private JTextField client, nom, prenom,taille;
      private JButton jButton1;
      private PriseCommandeTableModel prisecom = new PriseCommandeTableModel();
     
      public Formcom(JFrame parent, String title, boolean modal){
        super(parent, title, modal);
        this.setSize(750, 400);
        this.setLocationRelativeTo(null);
        this.setResizable(false);
        this.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);
        this.initComponent();
      }
     
      public FormcomInfo showFormcom(){
        this.sendData = false;
        this.setVisible(true);      
        return this.zInfo;      
      }
     
      private void initComponent(){
        //Icône
        icon = new JLabel(new ImageIcon("images/icone.jpg"));
        JPanel panIcon = new JPanel();
        panIcon.setBackground(Color.white);
        panIcon.setLayout(new BorderLayout());
        panIcon.add(icon);
     
      //--------------------
        //Identification client
        JPanel panclient = new JPanel();
        panclient.setBackground(Color.white);
        panclient.setPreferredSize(new Dimension(180, 60));
        client = new JTextField();
        client.setPreferredSize(new Dimension(60, 25));
        panclient.setBorder(BorderFactory.createTitledBorder("Client"));
        clientLabel = new JLabel("Numéro client :");
        panclient.add(clientLabel);
        panclient.add(client);
    //--------------------
     
        //Nom et prénom
        JPanel panNomPrenom = new JPanel();
        panNomPrenom.setBackground(Color.white);
        panNomPrenom.setPreferredSize(new Dimension(350, 60));
        panNomPrenom.setBorder(BorderFactory.createTitledBorder("Nom et Prénom"));
        nom = new JTextField();
        nomLabel = new JLabel("Nom :");
        prenom = new JTextField();
        prenomLabel = new JLabel("Prénom :");
        nom.setPreferredSize(new Dimension(90, 25));
        prenom.setPreferredSize(new Dimension(90, 25));
        panNomPrenom.add(prenomLabel);
        panNomPrenom.add(prenom);
        panNomPrenom.add(nomLabel);
        panNomPrenom.add(nom);
     
        //Jtable pour saisir le où les produits commandés
        JPanel panCommande = new JPanel();
        panCommande.setBackground(Color.white);
        panCommande.setPreferredSize(new Dimension(690, 150));
        panCommande.setBorder(BorderFactory.createTitledBorder("Article(s) à commander :"));
     
     
    //-----AFFICHAGE DE LA JTABLE DE COMMANDE--------
        tableauc = new JTable(prisecom);
        panCommande.setLayout(new BorderLayout());
        panCommande.add(new JScrollPane(tableauc), BorderLayout.CENTER);
    //-------------------------------------------------------
     
     
        JPanel content = new JPanel();
        content.setBackground(Color.white);
        content.add(panclient);
        content.add(panNomPrenom);
        content.add(panCommande);
     
        JPanel control = new JPanel();
        JButton cancelBouton = new JButton("Annuler");
        cancelBouton.addActionListener(new ActionListener(){
          public void actionPerformed(ActionEvent arg0) {
            setVisible(false);
          }      
        });
        control.add(cancelBouton);
     
        this.getContentPane().add(panIcon, BorderLayout.WEST);
        this.getContentPane().add(content, BorderLayout.CENTER);
        this.getContentPane().add(control, BorderLayout.SOUTH);
      }

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 24
    Par défaut
    Bon ben finalement, j'ai trouvé la solution, en ayant enfin compris la doc oracle.

    A bientôt.

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

Discussions similaires

  1. [SQL] je suis perdu
    Par clementphp dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 24/08/2006, 02h15
  2. Problème Requete SQL et QuickReport
    Par arnaud_verlaine dans le forum C++Builder
    Réponses: 7
    Dernier message: 07/01/2004, 09h31
  3. requete sql
    Par autumn319 dans le forum ASP
    Réponses: 22
    Dernier message: 10/09/2003, 16h46
  4. Paramètre requete SQL (ADOQuery)
    Par GaL dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/07/2002, 11h24
  5. Resultat requete SQL
    Par PierDIDI dans le forum Bases de données
    Réponses: 2
    Dernier message: 23/07/2002, 13h43

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