Partage
  • Partager sur Facebook
  • Partager sur Twitter

faire apparaître une succession d'image

    26 avril 2015 à 11:10:06

    J'ai un problème, j'ai créé un code qui fait apparaître une fenêtre séparée en deux. A gauche, il y a une image, et à droite, des composants diverses. Mon objectif est de faire deux choses en même temps : lorsque l'utilisateur appuiera sur un bouton, il devra voir le résultat s'afficher dans le JTextField prévu à cet effet, puis ce résultat devra être énoncé par l'ordinateur, et en même temps, l'image (qui représente la tête d'un bonhomme), devra bouger pour donner l'impression que c'est lui qui parle. Et c'est là que se trouve le problème.

    En effet, j'ai créé pour cela une classe héritant de Thread, qui dit à l'ordinateur de donner le résultat oralement, et celle-ci marche très bien, j'ai ensuite, dans la classe principale (qui hérite de JFrame), une méthode qui, dans un premier temps, appelle et exécute la classe héritant de Thread, puis modifie l'image plusieurs fois de suite grâce à une boucle for qui appelle une procédure mettant le programme en pause (qui marche), puis une autre méthode modifiant l'image (qui marche également)... Et ça marche pas -_-

    Voici le code de ces méthodes (il est certain que le problème vient d'ici).

    *****************************************************************************************

    class FinEcoute1 implements ActionListener

    {

    publicvoid actionPerformed (ActionEvent arg0)

    {

    //différentes commandes (modifient la couleur du bouton) et réactualisent les actionListeners

    boutonDecimalShadok.addActionListener(action1);

    boutonDecimalBinaire.addActionListener(action2);

    boutonShadokDecimal.addActionListener(action3);

    boutonBinaireDecimal.addActionListener(action4);

    boutonRouge.removeActionListener(action5);

    boutonRouge.setVisible(false);

    boutonDecimalShadok.setVisible(true);

    c1Decimal.setEditable(false);

    nombre = Integer.valueOf(c1Decimal.getText()).longValue();

    c1Shadok.setText(ConvertisseurDecimalShadok(nombre));

    //apprel de la procédure "parlerShadok"

    parlerShadok(c1Shadok.getText());

    }

    }

    *****************************************************************************************

    privatevoid parlerShadok(String phrase)

    {

    //appel de la classe héritant de Thread "Parler"

    Parler par = new Parler(phrase);

    par.start();

    //modification de l'image

    for (inti=1 , j=1  ;  i<10  ;  i++ , j++)

    {

    if (j==3)

    j=1;

    pause(350);//procédure mettant le programme en pause(marche)

    image(j);//procédure modifiant l'image voulue (marche aussi)

    }

    }


    ******************************************************************************************************


    package Fenetre;

    import t2s.son.LecteurTexte;

    publicclass Parler extends Thread

    {

    private LecteurTexte parleur = new LecteurTexte();

    public Parler(String phr)

    {

    super(phr);

    parleur.setTexte(phr);

    }

    publicvoid run()

    {

    parleur.playAll();

    }

    }

    ****************************************************************************************

    lorsque l'on appuie sur le bouton, c'est très étrange, il dit le résultat, pas de problème, mais les images ne s'intervertissent pas, en revanche, au bout de trois-quatres secondes seulement, l'image se modifie (une seule fois), et, chose étrange, le bouton change de couleur alors qu'il était censé agir ainsi au tout début, avant même que l'ordinateur ne donne le résultat. En gros, j'ai l'impression que le programme exécute bien les actions que je désire, mais q'il n'affiche les modifications que lorsque tous les scripts ont été exécutés.

    J'ai effectué quelques tests pour vérifier cette théorie et, effectivement, c'est bien là le problème, l'ordinateur n'affiche les modofications de la fenêtre que lorsque tout a été exécuté.

    Quelqu'un connaîtrait un moyen de contourner le problème?

    Merci d'avance.

    • Partager sur Facebook
    • Partager sur Twitter

    faire apparaître une succession d'image

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown