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

Graphisme Java Discussion :

[Applet] Mon image s'efface lors qu'une fenêtre passe au dessus


Sujet :

Graphisme Java

  1. #1
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Février 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2009
    Messages : 31
    Points : 16
    Points
    16
    Par défaut [Applet] Mon image s'efface lors qu'une fenêtre passe au dessus
    Bonjour,
    je suis entrain de developpez une applet java qui permet de dessiner le trafic sur le reseaux en temp reel
    l'applet je l'ai crée et elle marche correctement mais il y a un ptit probleme
    c'est que lorsque je bouje l'applet avec la souris ou bien lorsqu'une autre fenetre vient au dessus de l'applet celle si s'efface et devient incompréhensible. je ne sais pas c koi le problemme
    voici mon applet :

    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
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    package testjsp;
     
    import java.awt.Color;
    import java.awt.Graphics;
    import java.io.IOException;
     
    import javax.swing.JApplet;
     
    public class TracerTraficTempRéel extends JApplet implements Runnable {
     
    	int i = 0;
    	int x1 = 0, x2 = 0, y1 = 0, y2 = 0, y0 = 0;
    	int point_T1 = 0, point_T2 = 0;
    	int result = 0;
    	Thread th = null;
    	boolean threadSuspended;
    	static final int[] Tab_OID_IfinOctet = new int[] { 1, 3, 6, 1, 2, 1, 2, 2,
    			1, 10, 5 };
    	static EnvoieRequete Envoyer_Requete_Inoctet = new EnvoieRequete(
    			"udp:127.0.0.1/161", "public", Tab_OID_IfinOctet); // @jve:decl-index=0:
     
    	public void init() {
    		setBackground(Color.BLACK);
    		setSize(700, 200);
    		setLocation(0, 100);
    		System.out.println("Init()");
    	}
     
    	public void start() {
    		if (th == null) {
    			System.out.println("start(): creating thread");
    			th = new Thread(this);
    			System.out.println("start(): starting thread");
    			threadSuspended = false;
    			th.start();
    		} else {
    			if (threadSuspended) {
    				threadSuspended = false;
    				System.out.println("start(): notifying thread");
    				synchronized (this) {
    					notify();
    				}
    			}
    		}
     
    	}
     
    	public void run() {
    		point_T2 = 0;
    		System.out.println("run()");
    		try {
    			y0 = Envoyer_Requete_Inoctet.SendRequest("udp:127.0.0.1/161",
    					"public", Tab_OID_IfinOctet);
    		} catch (IOException e2) {
    			// TODO Auto-generated catch block
    			e2.printStackTrace();
    		}
    		try {
    			th.sleep(10000);
    		} catch (InterruptedException e2) {
    			// TODO Auto-generated catch block
    			e2.printStackTrace();
    		}
    		while (true) {
    			System.out.println(i);
    			try {
    				y1 = Envoyer_Requete_Inoctet.SendRequest("udp:127.0.0.1/161",
    						"public", Tab_OID_IfinOctet);
    			} catch (IOException e1) {
    				// TODO Auto-generated catch block
    				e1.printStackTrace();
    			}
    			System.out.println(" y1  " + y1);
    			x1 = x2;
     
    			System.out.println("Somme = " + (((y1 - y0) / 5) * 0.0009765625));
    			x2 = i + 10;
    			point_T2 = (int) (((y1 - y0) / (x2 - x1)) * 0.0009765625);
    			showStatus("i is " + i);
    			repaint();
    			try {
    				th.sleep(10000);
    			} catch (InterruptedException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    			y0 = y1;
    			i = i + 10;
     
    		}
    	}
     
    	public void paint(Graphics g) {
    		System.out.println("paint()");
    		g.setColor(Color.green);
    		g.drawLine(0, 200, 700, 200);
    		g.drawLine(x1, 200 - point_T1, x2, 200 - point_T2);
    		System.out.println(point_T1 + "    " + point_T2);
    		point_T1 = point_T2;
    	}
     
    }
    sachant que les valeurs obtenue (y0,y1,y2) sont des valeur de type COUNTER .
    j'ai fé le calcul et tous .
    merci de m'aidez

  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 : 42
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    construit plutôt une java.awt.BufferedImage. Les dessins se feront dedans.
    Dans la méthode "paint", tu te contentes d'afficher ton image. Ca devrait résoudre la plupart de tes problèmes.
    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 à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Février 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2009
    Messages : 31
    Points : 16
    Points
    16
    Par défaut
    je ne sais pas comment faire avec les buffered images
    pouvez vous me guidé
    et merci

  4. #4
    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 : 42
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Citation Envoyé par chouaiebnabil Voir le message
    je ne sais pas comment faire avec les buffered images
    pouvez vous me guidé
    et merci
    Commence par lire la FAQ sur quelques points importants.
    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.

  5. #5
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Février 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2009
    Messages : 31
    Points : 16
    Points
    16
    Par défaut
    merci bien mon frere
    j'ai utilisé la methode mais il me reste un ptit probleme
    voici mon mon nouveau code

    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
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    package testjsp;
     
    import java.awt.Color;
    import java.awt.Graphics;
    import java.awt.Image;
    import java.io.IOException;
     
    import javax.swing.JApplet;
     
    public class TracerTraficTempRéel extends JApplet implements Runnable {
     
    	int i = 0;
    	int x1 = 0, x2 = 0, y1 = 0, y2 = 0, y0 = 0;
    	int point_T1 = 0, point_T2 = 0;
    	int result = 0;
    	Graphics buffer;  //  @jve:decl-index=0:
    	Image image;  //  @jve:decl-index=0:
    	Thread th = null;
    	boolean threadSuspended;
    	static final int[] Tab_OID_IfinOctet = new int[] { 1, 3, 6, 1, 2, 1, 2, 2,
    			1, 10, 5 };
    	static EnvoieRequete Envoyer_Requete_Inoctet = new EnvoieRequete(
    			"udp:127.0.0.1/161", "public", Tab_OID_IfinOctet); // @jve:decl-index=0:
     
    	public void init() {
     
    		this.setSize(700, 210);
    		this.setBackground(Color.BLACK);
    		System.out.println("Init()");
    	}
     
    	public void start() {
    		if (th == null) {
    			System.out.println("start(): creating thread");
    			th = new Thread(this);
    			System.out.println("start(): starting thread");
    			threadSuspended = false;
    			th.start();
    		} else {
    			if (threadSuspended) {
    				threadSuspended = false;
    				System.out.println("start(): notifying thread");
    				synchronized (this) {
    					notify();
    				}
    			}
    		}
     
    	}
     
    	public void run() {
    		point_T2 = 0;
    		System.out.println("run()");
    		try {
    			y0 = Envoyer_Requete_Inoctet.SendRequest("udp:127.0.0.1/161",
    					"public", Tab_OID_IfinOctet);
    		} catch (IOException e2) {
    			// TODO Auto-generated catch block
    			e2.printStackTrace();
    		}
    		//try {
    			//th.sleep(10000);
    		//} catch (InterruptedException e2) {
    			// TODO Auto-generated catch block
    		//	e2.printStackTrace();
    		//}
    		while (true) {
    			System.out.println(i);
    			try {
    				y1 = Envoyer_Requete_Inoctet.SendRequest("udp:127.0.0.1/161",
    						"public", Tab_OID_IfinOctet);
    			} catch (IOException e1) {
    				// TODO Auto-generated catch block
    				e1.printStackTrace();
    			}
    			System.out.println(" y1  " + y1);
    			x1 = x2;
     
    			System.out.println("Somme = " + (((y1 - y0) / 5) * 0.0009765625));
    			x2 = i + 10;
    			point_T2 = (int) (((y1 - y0) / (x2 - x1)) * 0.0009765625);
    			showStatus("i is " + i);
    			repaint();
    			try {
    				th.sleep(10000);
    			} catch (InterruptedException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    			y0 = y1;
    			i = i + 10;
     
    		}
    	}
     
    	public void paint(Graphics g) {
    		System.out.println("paint()");
    		if(buffer==null){
    	        image = createImage(700, 210);
    	        buffer = image.getGraphics();
    	        buffer.setColor(Color.GREEN);
    	        buffer.drawLine(0, 200, 700, 200);
    	        g.drawImage(image, 0, 0, this);
    	    }
    		buffer.setColor(Color.RED);
    		buffer.drawLine(x1, 200 - point_T1, x2, 200 - point_T2);
    		g.drawImage(image, 0,0 , this);
    		System.out.println(point_T1 + "    " + point_T2);
    		point_T1 = point_T2;
    	}
     
    }  //  @jve:decl-index=0:visual-constraint="7,9"

    Voici une capture d'ecran :

    dans le fichier joind



    le probleme persiste encore mais pas comme précédament
    cette foi il y a juste une petit trait qui ce dessine lorsque je fait boujer l'applet
    est ce que j'ai une faute dans mon code ?
    Images attachées Images attachées  

  6. #6
    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 : 42
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Non, ce n'est pas comme ça qu'il faut faire.
    Dans la méthode "paint", il faut uniquement dessiner l'image, rien de plus.
    Ensuite, avant tous les appels à repaint, tu effectues tous les ordres de dessins.

    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
    92
    93
    94
    public class TracerTraficTempRéel extends JApplet implements Runnable
    {
    	int i = 0;
    	int x1 = 0, x2 = 0, y1 = 0, y2 = 0, y0 = 0;
    	int point_T1 = 0, point_T2 = 0;
    	int result = 0;
    	Graphics buffer;
    	Image image;
    	Thread th = null;
    	boolean threadSuspended;
    	static final int[] Tab_OID_IfinOctet = new int[] { 1, 3, 6, 1, 2, 1, 2, 2,
    			1, 10, 5 };
    	static EnvoieRequete Envoyer_Requete_Inoctet = new EnvoieRequete(
    			"udp:127.0.0.1/161", "public", Tab_OID_IfinOctet);
     
    	public void init()
    	{
    		this.setSize( 700, 210 );
    		this.setBackground( Color.BLACK );
    		image = createImage( this.getWidth(), this.getHeight() );
            buffer = image.getGraphics();
    		System.out.println("Init()");
    	}
     
    	public void start()
    	{
    		if( th == null )
    		{
    			System.out.println("start(): creating thread");
    			th = new Thread( this );
    			System.out.println( "start(): starting thread" );
    			threadSuspended = false;
    			th.start();
    		}
    		else
    		{
    			if( threadSuspended )
    			{
    				threadSuspended = false;
    				System.out.println("start(): notifying thread");
    				synchronized (this) { notify(); }
    			}
    		}
     
    	}
     
    	public void run() {
    		point_T2 = 0;
    		System.out.println("run()");
    		try {
    			y0 = Envoyer_Requete_Inoctet.SendRequest("udp:127.0.0.1/161",
    					"public", Tab_OID_IfinOctet);
    		}
    		catch (IOException e2) { e2.printStackTrace(); }
    		while (true) {
    			System.out.println(i);
    			try {
    				y1 = Envoyer_Requete_Inoctet.SendRequest("udp:127.0.0.1/161",
    						"public", Tab_OID_IfinOctet);
    			}
    			catch (IOException e1) { e1.printStackTrace(); }
    			System.out.println(" y1  " + y1);
    			x1 = x2;
     
    			System.out.println("Somme = " + (((y1 - y0) / 5) * 0.0009765625));
    			x2 = i + 10;
    			point_T2 = (int) (((y1 - y0) / (x2 - x1)) * 0.0009765625);
    			showStatus("i is " + i);
     
     
    			dessine();
     
     
    			try { th.sleep(10000); }
    			catch (InterruptedException e) { e.printStackTrace(); }
    			y0 = y1;
    			i = i + 10;
    		}
    	}
     
    	private void dessine()
    	{
    		buffer.setColor(Color.RED);
    		buffer.drawLine(x1, 200 - point_T1, x2, 200 - point_T2);
    		repaint();
    		System.out.println(point_T1 + "    " + point_T2);
    		point_T1 = point_T2;
    	}
     
    	public void paint(Graphics g) {
    		System.out.println("paint()");
    		g.drawImage(image, 0,0 , this);
    	}
    }
    Dernière chose : évite de mettre des variables en données membres lorsqu'elles ne sont utilisées que dans une méthode, ça va améliorer la lisibilité et les effets de bords.
    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.

  7. #7
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Février 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2009
    Messages : 31
    Points : 16
    Points
    16
    Par défaut
    merci mon frere ca marche a merveille

  8. #8
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Février 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2009
    Messages : 31
    Points : 16
    Points
    16
    Par défaut
    désolé pour le dérangement mais j'ai encore une question
    je veu faire défiler mon image de droite a gauche et non pas de gauche a droit c'est quoi la methode qu'on peut faire ?

  9. #9
    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 : 42
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Citation Envoyé par chouaiebnabil Voir le message
    désolé pour le dérangement mais j'ai encore une question
    je veu faire défiler mon image de droite a gauche et non pas de gauche a droit c'est quoi la methode qu'on peut faire ?
    Défiler ? Je ne comprends pas.
    Tu parles des points qui s'affichent au fur et à mesure sur l'image ? Alors il suffit de modifier l'abscisse lorsque tu dessines tes lignes. Pour chaque ligne (x1, y1, x2, y2), il faut transformer en (largeur - x1, y1, largeur - x2, y2).
    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.

  10. #10
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Février 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2009
    Messages : 31
    Points : 16
    Points
    16
    Par défaut
    merci pour ta réponse
    mé pour faire décalé l'image lorsqu'elle arrive a la fin de l'applet pour qu'elle ne dépasse pas la largeur défini qu'est ce qu'on peut faire ???

Discussions similaires

  1. Mon application se fige lors d'une grosse procédure
    Par gastoncs dans le forum VB.NET
    Réponses: 11
    Dernier message: 30/09/2014, 09h19
  2. Réponses: 0
    Dernier message: 13/04/2009, 12h53
  3. Réponses: 3
    Dernier message: 12/04/2007, 15h19
  4. champs qui s'efface lors d'une requete ajax.
    Par starr dans le forum Langage
    Réponses: 3
    Dernier message: 27/10/2006, 08h33
  5. Probléme lorsqu'une fenétre passe par dessus l'autre...
    Par hostile dans le forum Interfaces Graphiques en Java
    Réponses: 4
    Dernier message: 03/01/2006, 19h20

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