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

Applets Java Discussion :

Mon applet ne se rafraichie pas !


Sujet :

Applets Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2008
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Corée

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2008
    Messages : 253
    Par défaut Mon applet ne se rafraichie pas !
    Hello de Montréal enfoui sous la neige !

    Je trouve pas grande doc sur les applets, c'est pas évident !

    J'ai un problème sur celle que j'ai développée, visible ici http://legraverend.fr/agent/site/ind...=fr&page=agent

    Mais pas grand chose puisqu'elle ne se rafraichie pas.

    On rentre une commande, et là, normalement, ça pose des questions jusqu'à trouver une solution.

    Les questions sont posées là où il y a écrit question.

    Pourtant cela fonctionne bien quand je le lance avec eclipse.

    Pour mettre un peu de mon code j'ai ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public class Agent extends JApplet implements ActionListener {
    // en private se trouvent les éléments qui composent le conteneur,
    // excepté le JLabel question
    // il est appelé dans la classe Chainage
    }
    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
    public class Chainage extends Thread {
    // cette classe est donc un thread
    // avec cette question, on attend une réponse
    // et l'on met à jour le labelQuestion
    // ce qui fonctionne sous eclipse, mais pas en navigateur.
     
       private boolean newQuestion(Atome atome) throws IOException {
          this.setQuestion(atome.getLabel());
          this.labelQuestion.repaint();
          setPleaseWait(true);
          while (pleaseWait) {
             try {
                wait();
             }
             catch (Exception e) {}
          }
          return this.getReponse();
       }
    }
    Si quelqu'un peut me venir en aide, je le serais grandement reconnaissant ! C'est pour un projet pour la semaine prochaine et voilà plus d'une semaine que je suis bloqué là dessus.

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Il faut plus de code.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  3. #3
    Membre émérite
    Avatar de kmdkaci
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 560
    Par défaut Mon applet ne se rafraichie pas !
    Bonjour,
    Je pense aussi qu'il faut plus de code, notamment dans des endroits où le problème se pose.
    As-tu penser à appeler la méthode paint() qui permet justement de rafraichir ???

  4. #4
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2008
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Corée

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2008
    Messages : 253
    Par défaut
    Non je n'utilise pas paint(), pour l'instant je me suis contenté de init().

    Paint() justement est en commentaire sinon rien ne s'affiche. Ce de cette fonction que vienne mes problèmes ?

    Voilà le code de ma classe Agent, je pense que ce n'est pas utile que j'en mette plus de l'autre 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
    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
    public class Agent extends JApplet implements ActionListener {
     
       private JPanel panneau = new JPanel();
     
       private JPanel panQuestion = new JPanel();
       private JTextField champTexte = new JTextField();
     
       private JPanel centre = new JPanel();
     
       private Chainage chainage = new Chainage();
     
       private JPanel boutons = new JPanel();
       private JButton boutonOK = new JButton("OK");
       private JButton boutonVrai = new JButton("Vrai");
       private JButton boutonFaux = new JButton("Faux");
     
       public void init() {
     
          Container container = getContentPane();
     
          this.setSize(600,400);
          panneau.setLayout(new BorderLayout());
     
          // Question
          panQuestion.setLayout(new BorderLayout());
          panQuestion.add(new JLabel("Veuillez sai sir votre question :"), BorderLayout.WEST);
          panQuestion.add(champTexte, BorderLayout.CENTER);
          boutonOK.addActionListener(this);
          boutonOK.setActionCommand("ok");
          panQuestion.add(boutonOK, BorderLayout.EAST);
          panneau.add(panQuestion, BorderLayout.NORTH);
     
          // Champ de texte
          centre.add(chainage.getQuestion(), BorderLayout.CENTER);
          panneau.add(chainage.getQuestion(), BorderLayout.CENTER);
     
          // Boutons
          boutonVrai.addActionListener(this);
          boutonFaux.addActionListener(this);      
          boutonVrai.setActionCommand("vrai");
          boutonFaux.setActionCommand("faux");
          boutons.add(boutonVrai);
          boutons.add(boutonFaux);
          panneau.add(boutons, BorderLayout.SOUTH);
     
          container.add(panneau);
       }
     
       /*public void paint(Graphics g) {
     
       }*/
     
     
       public void actionPerformed(ActionEvent e) {
          if (e.getActionCommand() == "ok") {
             this.champTexte.setVisible(false);
             this.boutonOK.setVisible(false);
             chainage.setFichier("../agent.base");
             chainage.setQuery(getChampTexte());
             chainage.start();
             this.repaint();         
          }
          else if (e.getActionCommand() == "vrai") {
             chainage.setReponse(true);
             chainage.setPleaseWait(false);
          }
          else if (e.getActionCommand() == "faux") {
             chainage.setReponse(false);
             chainage.setPleaseWait(false);
          }   
       }
     
       public String getChampTexte() {
          return champTexte.getText();
       }
     
       public void start()
       {
          //code de d'éxécution
       }
     
       public void stop()
       {
     
       }
     
       public void destroy()
       {
          //code de terminaison
       }
    }

  5. #5
    Membre émérite
    Avatar de kmdkaci
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 560
    Par défaut Mon applet ne se rafraichie pas !
    Salut,
    C'est pas très bien claire, la méthode paint est aussi appelé à chaque fois que la méthode repaint() est invoquée. On voit dans ton code l'appel de repaint() mais toujours paint() en commentaire.

    Je ne sais pas que fait exactement ton Applet, car je ne sais que fait la classe Chainage, mais je pense qu'il faut écrire quelques choses dans ta méthode paint().

  6. #6
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2008
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Corée

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2008
    Messages : 253
    Par défaut
    Je ne savais pas que la méthode paint était appelé lorsque l'on fait repaint.

    L'ennuie, c'est que le label de ma question ne se trouve pas dans la classe Agent, car j'ai besoin de le mettre à jour, la classe Agent le place grâce à un accesseur.

    Ca se passe comme ça dans Chainage (très simplifié).

    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
    public class Chainage extends Thread {
     
       private JLabel labelQuestion = new JLabel("question");
       private boolean reponse;
       private boolean pleaseWait;
     
       public void run() {
          // j'ai supprimé le contenu compliqué de cette fonction !
          // on lance l'algo
          // à un moment on a :
          this.newQuestion(a);
       }
     
       private boolean newQuestion(Atome atome) throws IOException {
          this.setQuestion(atome.getLabel());   // là on affecte la question dans le label
          this.labelQuestion.repaint();      // on le rafraichit
          setPleaseWait(true);            // on attend la réponse,
    	  // la classe agent le remet à faux quand on a cliqué sur oui ou non
    	  // dans agent, ici on met à jour la réponse par vrai ou faux
    	  // en fonction de ce qui a été cliqué
          while (pleaseWait) {
             try {          
                wait();     
             }             
             catch (Exception e) {}         
          }
          return this.getReponse();
    	  // on retourne un booleen et l'algo continu jusqu'à la prochaine question
       }
    }

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

Discussions similaires

  1. [AC-2010] Mon compteur ne se rafraichis pas quand j'ajoute un enregistrment
    Par Martintin dans le forum VBA Access
    Réponses: 1
    Dernier message: 07/03/2011, 21h02
  2. Réponses: 7
    Dernier message: 13/11/2009, 14h15
  3. Mon applet ne s'affiche pas dans le navigateur
    Par sebac dans le forum Applets
    Réponses: 5
    Dernier message: 17/08/2009, 13h01
  4. Mon applet signée ne trouve pas le .class
    Par ptr83 dans le forum Applets
    Réponses: 6
    Dernier message: 24/06/2009, 09h50
  5. [JApplet]mon applet ne s'affiche pas.
    Par yannick56 dans le forum Applets
    Réponses: 6
    Dernier message: 27/05/2004, 17h05

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