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

Interfaces Graphiques en Java Discussion :

Mise à jour affichage dans Thread=Effet troboscope non désiré..


Sujet :

Interfaces Graphiques en Java

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Mise à jour affichage dans Thread=Effet troboscope non désiré..
    Bonjour à tous, j'ai codé un petit jeu en JAVA sur Ubuntu, je l'ai envoyé à un ami qui l'a testée sur son Windows et il m'a dit qu'il y a un effet stroboscope insupportable d'affichage....

    Mon affichage est mis à jour continuellement grâce à un thread déclaré comme suit :


    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
     
    public class EcranAJour extends Thread {
    	Fenetre fen;
    	Contenu cont;
     
    	public EcranAJour(Fenetre f, Contenu c){
    		this.fen=f;
    		this.cont=c;
    	}
     
    	public Contenu getCont(){
    		return this.cont;
    	}
     
    	public void run(){
    		//Contenu ctemp=cont;
    		while(true){
    				fen.AfficherTout(cont);	
    			try {
    				this.sleep(15);
    			} catch (InterruptedException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    		}
     
    	}
    }
    La classe Contenu est un JPanel qui contient les images dont les coordonées sont mises à jour elles aussi grâce à un Thread.

    La classe Fenetre est une JFrame.

    Merci de votre aide je m'arrache les cheveux car j'ai passé pas mal de temps sur cette application..

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    et Fenetre.AfficherTout, il fait quoi? Puisque c'est lui le responsable de ton problème, il aurait été judicieux de nous donner le code

    Et Contenu, tu le met à jour comment?

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    et Fenetre.AfficherTout, il fait quoi? Puisque c'est lui le responsable de ton problème, il aurait été judicieux de nous donner le code

    Et Contenu, tu le met à jour comment?
    Bonjour, oui pardon, voici le code de mon Contenu, ce sont les coordonnées des images qui sont continuellement mises à jour donc le contenu change:

    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
     
     
    public class Contenu extends JPanel{
    	Image ImFond;
    	Image ImCompte;
    	Font EcritureCompte;//Style de l'ecriture
     
    	Perso[] perso;// Classe definissant un objet personnage ayant pour attribut ses coordonées et le chemin de son images
     
     
    	//Constructeurs:
    	public void Contenu(){
    	}
     
     
     
     
    	  public void paintComponent(Graphics g){
     
     
    		  g.drawImage(ImFond, 0, 0, this.getWidth(), this.getHeight(), this);//Image de fond
     
     
    		   g.drawImage(ImCompte, this.getWidth()-70, 10, 60, 40, this);
     
    		   //Affichage du compte des persoas :
     
    		    g.setFont(EcritureCompte);
    		    g.setColor(Color.orange);          
     
     
     
    		   //affichage des Personnages s'ils sont dans la fenêtre:
    		   //Les coordonées des personnages varient au cours du temps
    			for(int i=0; i< 5;i++){
     
    				if(this.perso[i].getPosX()<this.getWidth()&&0-400<this.perso[i].getPosX()&&perso[i].getCapture()==false){
    					g.drawImage(Impersoas, perso[i].posX, perso[i].posY,perso[i].getLargeurImage(),perso[i].getHauteurImage(), this);
    				}
    			}	
     
    		 }      
    }
    Et voici le code de ma Fenetre contenant la methode "AfficherTout":

    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
     
     
    public class Fenetre extends JFrame {
    	private Contenu contenu;
     
    	public Fenetre(Contenu c){
    		this.contenu=c;
    	    this.setTitle( "Game !!");
    	    this.setSize(500, 500);
    	    this.setLocationRelativeTo(null);               
    	    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    	    this.setVisible(true);
    	    addKeyListener(new Clavier(this));   
      }
    	public void AfficherTout(Contenu c){
    		this.contenu=c;
    		this.setContentPane(contenu);
    	}
     
    	public void setContenu(Contenu c){
    		this.contenu=c;
    	}
     
    	public Contenu getContenu(){
    		return this.contenu;
    	}
    }

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    Citation Envoyé par frafra49 Voir le message
    Bonjour, oui pardon, voici le code de mon Contenu, ce sont les coordonnées des images qui sont continuellement mises à jour donc le contenu change:
    Je ne vois toujours pas de coordonnées changeantes ni comment elles sont changées Donc je répète ma question, comment tu met à jour Contenu?
    Citation Envoyé par frafra49 Voir le message
    Et voici le code de ma Fenetre contenant la methode "AfficherTout":
    Là par contre, il y a une erreur. Tu ne devrais pas modifier des composants graphiques dans un Thread autre que l'EDT

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    	public void AfficherTout(Contenu c){
                    SwingUtilities.invokeAndWait(new Runnable(){
                           public void run(){
                               this.contenu=c;
                               this.setContentPane(contenu);
                           }
                    }
    	}

Discussions similaires

  1. [WD11] Mise à jour HF dans thread
    Par ACOIdev dans le forum WinDev
    Réponses: 5
    Dernier message: 19/05/2009, 14h27
  2. [VBA-E] Mise à jour signet dans word
    Par dev81 dans le forum Macros et VBA Excel
    Réponses: 23
    Dernier message: 18/04/2007, 15h30
  3. Mise à jour affichage section détail form
    Par thb74 dans le forum Access
    Réponses: 3
    Dernier message: 27/08/2006, 14h39
  4. [C# 1.1] Mise à jour cellules dans un datagrid
    Par celos dans le forum Windows Forms
    Réponses: 10
    Dernier message: 14/06/2006, 10h26
  5. [c#][VS2003]Mise à jour propriété dans le designer
    Par cedkat dans le forum Windows Forms
    Réponses: 3
    Dernier message: 14/11/2005, 16h10

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