Code non compris

Résolu
cs_limalima Messages postés 124 Date d'inscription dimanche 31 août 2008 Statut Membre Dernière intervention 16 décembre 2010 - 27 nov. 2008 à 17:35
dvoraky Messages postés 744 Date d'inscription dimanche 1 avril 2007 Statut Membre Dernière intervention 9 mai 2010 - 28 nov. 2008 à 09:01
Bonjour,
j'ai pris ce bout de code dans un site, ce code est fait pour l'introduction au pathern observer,
on a deux classes:Horloge et Fenetre
mais l'horloge ne s'affiche pas et j'ai du mal à l'afficher(l'horloge et le fenetre ne comuniquent pas entre elles, pourtant je sais qu'il faut :
passer son instance de JLabel dans son objet Horloge
mais pour le faire je ne vois pas comment!

moi j'ai fais ceci:j'ai passé un objet Jlabel dans le constructeur de Horloge, mais riene se passe!

merci de m'aider encore une fois, je vous suis vraiment très reconnaissant, car j'apprends beaucoup
avec vous.

importjava.util.Calendar;

publicclassHorlogeextendsThread{
        //Objet calendrier pour récupérer l'heure courante.
privateCalendarcal;
privateStringhour="";

publicHorloge(){
Threadt=newThread(this);
t.start();
}

publicvoidrun(){
while(true){
                                   
                                    //On récupère l'instance d'un calendrier à chaque tour
                            //celui-ci va nous permettre de récupérer l'heure actuelle
            this.cal=Calendar.getInstance();
                                    this.hour=/* Les heures */
this.cal.get(Calendar.HOUR_OF_DAY)+" : "
+
(/* Les minutes */
this.cal.get(Calendar.MINUTE)<10
?"0"+this.cal.get(Calendar.MINUTE)
:this.cal.get(Calendar.MINUTE)
)
+" : "
+
(/* Les secondes */
(this.cal.get(Calendar.SECOND)<10)
?"0"+this.cal.get(Calendar.SECOND)
:this.cal.get(Calendar.SECOND)
);
                        try{
Thread.sleep(1000);
}catch(InterruptedExceptione){
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}

importjava.awt.BorderLayout;
importjava.awt.Font;

importjavax.swing.JFrame;
importjavax.swing.JLabel;

importcom.sdz.model.Horloge;

publicclassFenetreextendsJFrame{

privateJLabellabel=newJLabel();
privateHorlogehorloge;

publicFenetre(){
/* On initialise notre JFrame  */
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setLocationRelativeTo(null);
this.setResizable(false);
this.setSize(200,80);
/* On initialise l'horloge  */
this.horloge=newHorloge();
/* On initialise notre JLabel  */
Fontpolice=newFont("DS-digital",Font.TYPE1_FONT,30);
this.label.setFont(police);
this.label.setHorizontalAlignment(JLabel.CENTER);
/* On ajoute le JLabel à notre JFrame */
this.getContentPane().add(this.label,BorderLayout.CENTER);
}

/* Méthode main pour lancer le programme */
publicstaticvoidmain(String[]args){
Fenetrefen=newFenetre();
fen.setVisible(true);
}

}

1 réponse

dvoraky Messages postés 744 Date d'inscription dimanche 1 avril 2007 Statut Membre Dernière intervention 9 mai 2010 8
28 nov. 2008 à 09:01
Salut,

A premiere vue, tu n'affectes jamais la valeur de ton Horloge dans ton JLabel donc forcément ton heure ne s'affiche pas.

Il te faudrait un getter et un setter dans ta classe Horloge...
Cependant, en utilisant un Thread, j'ai bien peur que tu n'y arrives pas...
Déjà essai d'affecter ta variable "hour" à ton JLabel, sinon ça ne t'affichera jamais rien.
Reviens voir ici après

<hr width="100%" size="2" />
 C'est après des heures de codage que j'ai compris pourquoi les créateurs de Java ont choisi une tasse de café comme logo...
3
Rejoignez-nous