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 :

Afficher les items JComboBox sélectionnés dans un JTable


Sujet :

Composants Java

Vue hybride

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

    Informations forums :
    Inscription : Novembre 2004
    Messages : 29
    Par défaut Afficher les items JComboBox sélectionnés dans un JTable
    Bonjour tout le monde!

    Je veux faire une interface dans laquelle on trouve deux JComboBox et un JTable de deux colonnes. Dans ce JTable, on va afficher les deux items qui auront été sélectionnés par l'utilisateur.

    Mon premier problème c'est que mon tableau ne s'affiche pas dans ma fenetre

    Voici le code :

    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
     
    public void build(String [] titresListes){
    		lbl_parametre1 = new JLabel();
    		parametre1 = new JComboBox();
    		lbl_parametre2 = new JLabel();
    		parametre2 = new JComboBox();
    		tableauRecapitulatif = new JTable();
     
    		JLabel message = new JLabel("<html><font size=\"5\" color=\"black\">Paramétrage du tableau de bord</font></html>");
    		setLayout(new BorderLayout(5,5));
    		setTitle("Module de gestion de tableau de bord"); 
    		setSize(650,300); 
    		setLocationRelativeTo(null);
    		setResizable(false); 
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		/* Titre */
    		panelTitre.add(message,"message");
    		add(panelTitre, BorderLayout.NORTH);
     
    		/* Formulaire */
    		panelParametrage.setLayout(new FlowLayout(FlowLayout.CENTER,5,5)); 
     
    		lbl_parametre1 = new JLabel (""+titresListes[0]+"");
    		parametre1 = new JComboBox (new String[] { "","Item 1", "Item 2", "Item 3", "Item 4" });
    		parametre1.addActionListener(new ItemAction());
     
    		lbl_parametre2 = new JLabel (""+titresListes[1]+"");
    		parametre2 = new JComboBox (new String[] { "","Item 1", "Item 2", "Item 3", "Item 4" });
    		parametre2.addActionListener(new ItemAction());
     
    		panelParametrage.add(new JLabel("          "));
    		panelParametrage.add(lbl_parametre1);
    		panelParametrage.add(parametre1);
    		panelParametrage.add(new JLabel("          "));
     
    		panelParametrage.add(lbl_parametre2);
    		panelParametrage.add(parametre2);
    		panelParametrage.add(new JLabel("          "));
     
    		add(panelParametrage, BorderLayout.CENTER);
     
    		Object[][] donnees = {{""+parametre1.getSelectedItem()+"",""+parametre2.getSelectedItem()+""}}; 
    		String[] colonnes = {""+titresListes[0]+"", ""+titresListes[1]+""};  
    		JTable table = new JTable(donnees, colonnes);
    		table.setPreferredScrollableViewportSize(new Dimension(640,50));
    		JScrollPane jsp = new JScrollPane(table);   
    		panelBouton.add(jsp);
    		TableModel tableur = table.getModel();
     
    		panelBouton.add(table);
     
    		setVisible(true);
    }
    Pour afficher le résultat des items sélectionnés, j'ai fait une classe ItemAction dans laquelle je reprends le code de mon tableau de la classe précédente mais en ajoutant "getSelectedItem()" pour savoir quel item a été sélectionné :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public class ItemAction implements ActionListener{
    		public void actionPerformed(ActionEvent e) {
    			Object[][] donnees = {{""+parametre1.getSelectedItem()+"",""+parametre2.getSelectedItem()+""}};
    			String[] colonnes = {"Inconnu", "Inconnu"};
    			JTable table = new JTable(donnees, colonnes);
    			TableModel tableur;
    			table.setPreferredScrollableViewportSize(new Dimension(650,50));
    			JScrollPane jsp = new JScrollPane(table);
    			add(jsp);
    			tableur = table.getModel();
    			panelBouton.add(table);
    		}
    	}
    Si vous avez une idée sur l'origine de mes deux problèmes ça m'aiderait bcp...

    Merci à tous

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 121
    Par défaut
    Bonjour alizee971

    Je voi une série de petits problèmes:

    Le tableau ne s'affiche pas...
    - Supprime l'instruction panelBouton.add(table) .En fait panelBouton.add(jsp) est suffisant
    - Il manque add(panelButon) quelque part...

    Pour la mise à jour du contenu de ton tableau...
    - Tu ne dois pas recréer et rajouter un nouveau tableau à chaque action (sinon tu vas accumuler dans autant de JTable qu'il n'y a de mises à jour à faire)
    - Pour éviter de recréer un nouveau JTable ...
    Tu dois d'abord créer un TableModel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TableModel myTableModel = new DefaultTableModel(titresListes,1);
    Ensuite cré ta JTable avec ce modèle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    JTable table = new JTable(myTableModel);
    De cette façon Java va automatiquement mettre à jour le contenu de ta vue (JTable) lorsque tu modifie le modèle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    myTableModel.setValueAt(valeure,indexLigne, indexColonne);
    C'est cette instruction que tu dois exécuter dans ton action...Dans ton cas deux actions distincts :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public class ItemAction1 implements ActionListener {
    	public void actionPerformed(ActionEvent e) {
    			myTableModel.setValueAt(""+parametre1.getSelectedItem(), 0, 0);
    	}
    }
     
    public class ItemAction2 implements ActionListener {
    	public void actionPerformed(ActionEvent e) {
    			myTableModel.setValueAt(""+parametre2.getSelectedItem(), 0, 1);
    	}
    }
    Il y évidemment moyen de déclarer une classe ItemAction unique avec en construction les paramètres adéquats ou/et en chipotant avec e.getSource()

    J'espère que çà va t'aider...A+

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 29
    Par défaut
    Je suis d'accord avec ce que tu me proposes mais quand je rajoute

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    	public class ItemAction1 implements ActionListener {
    		public void actionPerformed(ActionEvent e) {
    				myTableModel.setValueAt(""+parametre1.getSelectedItem(), 0, 0);
    		}
    	}
    j'ai une erreur au niveau de myTableModel qui me dit que "myTableModel cannot be resolved"

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 29
    Par défaut
    J'ai répondu moi même à la question en fait.
    Il fallait tout simplement que je déclare myTableModel dans ma classe principale pour qu'elle soit accessible par la suite à mes classes "ItemAction1" et "ItemAction2".

    Je te remercie pour tes pistes qui m'ont été très très utiles! J'étais vraiment mal partie au début...


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

Discussions similaires

  1. Afficher les erreurs de Struts dans la console Eclipse
    Par lazit dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 28/06/2007, 15h31
  2. Réponses: 5
    Dernier message: 31/05/2007, 13h10
  3. afficher les resultats du DBgrid dans un Edit
    Par tchimou dans le forum Bases de données
    Réponses: 12
    Dernier message: 30/04/2007, 12h59
  4. Interdire les modifications des données dans une JTable
    Par markfish55 dans le forum Composants
    Réponses: 3
    Dernier message: 19/12/2006, 15h48
  5. Réponses: 2
    Dernier message: 13/06/2006, 15h45

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