Précédent   Forum des professionnels en informatique > Java > Général Java
Général Java Java SE, Java ME, APIs, Persistance, JDBC, Spring, XML. Avant de poster -> FAQ Java, Sources Java
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/02/2012, 15h39   #1
Candidat au titre de Membre du Club
 
Inscription : octobre 2011
Messages : 95
Détails du profil
Informations forums :
Inscription : octobre 2011
Messages : 95
Points : 12
Points : 12
Par défaut afficher un jlabel

bonjour,
je veux essayer d'expliquer mon problème: moi j'ai une interface qui contient un combobox qui contient des éléments récupérés de ma base de données ce que je veux moi si je choisis un élément de cette liste un jlabel qui contient des informations relatives à l’élément choisit et qui sont aussi récupérées de ma base.
le pb est que le jlabel qui contient les propriétés n'est pas affiché dans mon interface.
voici le code de ma fonction:
Code :
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
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
package reseau;
 
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
 
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.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
 
public class FenetreRecupererReseau extends JFrame {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	ArrayList<Integer> liste=new ArrayList<Integer>();
	public ArrayList<Integer>  connexion(){
 
	 Connection connexion;
     Statement statement;
     ResultSet resultat ;
 
     try{
         Class.forName("com.mysql.jdbc.Driver");
         connexion=DriverManager.getConnection("jdbc:mysql://localhost/memoire","root","boutheina");
         statement = connexion.createStatement();
         String sql="select reseau from connectivite group by reseau";
         resultat=statement.executeQuery(sql);
         while(resultat.next()){
        	 int x=resultat.getInt("reseau");
        	 liste.add(x);
 
 
         }
     }
 catch(Exception e){
 	e.printStackTrace();
         System.out.println("Impossible de se connecter à MySQL");
 
 }
     return liste;
}
 
 
    /**
* 
*/
 
 
        private JPanel container = new JPanel();
        private JComboBox combo = new JComboBox();
        private JLabel label = new JLabel("Une ComboBox");
        JPanel top = new JPanel();
 
        public FenetreRecupererReseau(){
 
        this.setTitle("Animation");
        this.setSize(300, 300);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setLocationRelativeTo(null);
 
        container.setBackground(Color.white);
        container.setLayout(new BorderLayout());
 
 
 
        ArrayList<Integer>a=connexion();
        for(int i=0;i<a.size();i++){
        	int x=a.get(i);
        	combo.addItem(x);
        }
        combo.addActionListener(new ItemAction());
        combo.setPreferredSize(new Dimension(100,20));
        combo.setForeground(Color.blue);
 
 
        top.add(label);
        top.add(combo);
 
        container.add(top, BorderLayout.NORTH);
        this.setContentPane(container);
        this.setVisible(true);            
        }
 
        /**
         * Classe interne implémentant l'interface ItemListener
         */
 
 
        class ItemAction implements ActionListener{
 
                public void actionPerformed(ActionEvent e) {
                        System.out.println("ActionListener : action sur " + combo.getSelectedItem());
               String s=combo.getSelectedItem().toString();
               int x=Integer.parseInt(s);
               Connection connexion;
               Statement statement;
               ResultSet resultat ;
 
               try{
                   Class.forName("com.mysql.jdbc.Driver");
                   connexion=DriverManager.getConnection("jdbc:mysql://localhost/memoire","root","boutheina");
                   statement = connexion.createStatement();
                   String sql="select max(nbreAmis),min(nbreAmis),avg(nbreAmis) from connectivite where reseau="+x;
                  System.out.println(sql);
                   resultat=statement.executeQuery(sql);
                   while(resultat.next()){
                  	 int max=resultat.getInt(1);
                  	 int min=resultat.getInt(2);
                  	 int avg=resultat.getInt(3);
                  	 System.out.println(max);
                  	 System.out.println(min);
                  	 System.out.println(avg);
                  	 JLabel b= new JLabel("xxxx");
 
                  	 top.add(b);
                  	 JLabel l=new JLabel(" "+max+" "+min+" "+avg);
                  	l.setVisible(true);
                  	 top.add(l);
 
 
                   }
               }
           catch(Exception ex){
           	ex.printStackTrace();
                   System.out.println("Impossible de se connecter à MySQL");
 
           }
 
 
                }               
        }
 
 
}
boubounagh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2012, 15h53   #2
Membre émérite
 
Inscription : mai 2006
Messages : 787
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 787
Points : 837
Points : 837
Salut,

C'est peut etre un probleme de raffraichissement de l'IHM. Pour en etre sur, apres avoir ajouté le label, essaye de faire :
Code :
1
2
frame.setVisible(false);
frame.setVisible(true);
Si ca fonctionne, alors c'est qu'il faudra jouer avec les repaint(), validate() et revalidate().

a+
hwoarang est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2012, 18h26   #3
Candidat au titre de Membre du Club
 
Inscription : octobre 2011
Messages : 95
Détails du profil
Informations forums :
Inscription : octobre 2011
Messages : 95
Points : 12
Points : 12
Citation:
frame.setVisible(false);
frame.setVisible(true);
normalement frame est le nom de ma fenetre?
et dans mon cas normalement FenetreRecupererReseau
mais quand j'ecris ça elle n'est pas compilé et souligné par le rouge.
boubounagh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2012, 19h54   #4
Membre Expert
 
Avatar de wax78
 
Homme Renaud Warnotte
Développeur Java
Inscription : août 2006
Messages : 1 128
Détails du profil
Informations personnelles :
Nom : Homme Renaud Warnotte
Âge : 31
Localisation : Belgique

Informations professionnelles :
Activité : Développeur Java
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : août 2006
Messages : 1 128
Points : 1 807
Points : 1 807
Envoyer un message via MSN à wax78
Apres avoir ajouté ton component il faut faire : comme te l'indique Hwoarang.

Ca ne compile pas parce qu'il ne connait pas frame (this ou alors voir dans ton main)... tu ne dois pas de toute facon faire setVisible(false); puis setVisible(true); le revalidate fera ce qu'il faut.
wax78 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2012, 20h38   #5
Candidat au titre de Membre du Club
 
Inscription : octobre 2011
Messages : 95
Détails du profil
Informations forums :
Inscription : octobre 2011
Messages : 95
Points : 12
Points : 12
si j'écris revalidate() voici l'erreur affiché (il n'est pas compilé):The method revalidate() is undefined for the type FenetreRecupererReseau.ItemAction.
et normalement mon frame est appelé:FenetreRecupererReseau.
boubounagh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2012, 21h05   #6
Modérateur
 
Avatar de Robin56
 
Homme Nicolas
Ingénieur développement logiciels
Inscription : juin 2009
Messages : 1 715
Détails du profil
Informations personnelles :
Nom : Homme Nicolas
Localisation : France

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : juin 2009
Messages : 1 715
Points : 4 826
Points : 4 826
Citation:
Envoyé par boubounagh Voir le message
si j'écris revalidate() voici l'erreur affiché (il n'est pas compilé):The method revalidate() is undefined for the type FenetreRecupererReseau.ItemAction.
et normalement mon frame est appelé:FenetreRecupererReseau.
Montre ton code exact, comme ça, on sera sur de quoi l'on parle.
__________________
Robin56 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2012, 21h22   #7
Membre Expert
 
Avatar de wax78
 
Homme Renaud Warnotte
Développeur Java
Inscription : août 2006
Messages : 1 128
Détails du profil
Informations personnelles :
Nom : Homme Renaud Warnotte
Âge : 31
Localisation : Belgique

Informations professionnelles :
Activité : Développeur Java
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : août 2006
Messages : 1 128
Points : 1 807
Points : 1 807
Envoyer un message via MSN à wax78
Oui montre ton code ca sera mieux

mais sinon

Code :
FenetreRecupererReseau.this.revalidate();
pour bien lui specifier que c'est FenetreRecupererReseau et non l'objet listener (donc il trouve pas la methode revalidate vu qu'elle n'existe que dans JFrame)
wax78 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2012, 21h35   #8
Candidat au titre de Membre du Club
 
Inscription : octobre 2011
Messages : 95
Détails du profil
Informations forums :
Inscription : octobre 2011
Messages : 95
Points : 12
Points : 12
normalement ça va merci. j'ai fait comme il m'a dit wax78 et le jlabel est maintenant affiché merci beaucoup.
boubounagh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2012, 21h38   #9
Candidat au titre de Membre du Club
 
Inscription : octobre 2011
Messages : 95
Détails du profil
Informations forums :
Inscription : octobre 2011
Messages : 95
Points : 12
Points : 12
une autre chose j'ai fait validate() et non pas revalidate car quand j'écris revalidate elle n'est pas compilé aussi.
boubounagh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2012, 08h29   #10
Membre éprouvé
 
Homme
Ingénieur développement logiciels
Inscription : avril 2009
Messages : 501
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : Service public

Informations forums :
Inscription : avril 2009
Messages : 501
Points : 490
Points : 490
On dirait que tu appelles les méthodes sur les mauvaises classes. C'est normal qu'appeler validade ne fonctionne pas sur ItemListener, c'est sur la JFrame, qu'il faut le faire. Ensuite, revalidate n'est pas une méthode à JFrame...
Tu peux ausse faire repaint, ça fonctionne aussi normalement
oneagaindoguys est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2012, 10h12   #11
Membre émérite
 
Inscription : mai 2006
Messages : 787
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 787
Points : 837
Points : 837
Citation:
Envoyé par wax78 Voir le message
tu ne dois pas de toute facon faire setVisible(false); puis setVisible(true); le revalidate fera ce qu'il faut.
D'expérience, j'ai pu voir que parfois les validate/revalidate peuvent etre capricieux. L'avantage du setVisible(false); puis setVisible(true); c'est de d'avoir une methode moche mais qui permet de voir tout de suite si ca marche (on pourrait imaginer que le probleme vienne aussi d'ailleurs). Puis apres jouer avec repaint/validate/revalidate pour trouver la méthode la moins lourde qui fonctionne
hwoarang est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h10.


 
 
 
 
Partenaires

Hébergement Web