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

AWT/Swing Java Discussion :

[debutant] [image] raffraichissement de l'image


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Pepito
    Profil pro
    Inscrit en
    Août 2004
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Août 2004
    Messages : 101
    Par défaut [debutant] [image] raffraichissement de l'image
    Ami(e) du jour, bonjour

    J'ai developpé en awt une petite applet qui affiche une image et deux labels.
    L'image s'affiche ainsi que les 2 labels de texte.
    Le probleme c'est que dès que je bouge la sourie, l'image disparait !!
    Et si je met une fenetre sur la zone reservee à l'image et que je bouge la fenere, l'image reapparait !!

    J'ai etudié le FAQ concernat cette rubrique mais je n'ai pas trouvé mon bonheur.

    Merki d'avance
    Pepit'[/b]

  2. #2
    Membre confirmé Avatar de Pepito
    Profil pro
    Inscrit en
    Août 2004
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Août 2004
    Messages : 101
    Par défaut
    J'ai pensé a faire un thread qui tourne en boucle et qui rafraichisse l'image, mais je me suis un peu perdu dedans.

    En fait, je connais pas trop comment marche les threads. je me suis inspiré du FAQ mais pas mieux !!

    Je pense que c'est simple, que j'ai dû oublié une fonction de raffraichissement, mais je ne voit pas.

  3. #3
    Membre éprouvé
    Inscrit en
    Mai 2002
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Mai 2002
    Messages : 101
    Par défaut
    Pas évident les images en Java... Leur chargement est asynchrone, autrement dit, elles sont chargées quand elles peuvent. Du coup, y a toujours des problèmes de refresh. Si je me souviens bien unn solution consiste à forcer le repaint() de ton Container, mais c'est jamais évident. Cherche dans cette direction...

    Désolé de pas pouvoir faire plus, ça fait un moment que j'ai plus utilisé ça...

  4. #4
    Membre confirmé
    Homme Profil pro
    SAP BC Admin
    Inscrit en
    Août 2004
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : SAP BC Admin
    Secteur : Finance

    Informations forums :
    Inscription : Août 2004
    Messages : 75
    Par défaut
    Tu sais poster un bout de code, histoire de voir comment tu fais pour afficher ton image ?

    J'ai déjà fait quelques affichages d'image, mais je n'ai pas eu les problèmes dont tu parles. As-tu essayé d'afficher l'image en passant par un JLabel ?

  5. #5
    Membre confirmé Avatar de Pepito
    Profil pro
    Inscrit en
    Août 2004
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Août 2004
    Messages : 101
    Par défaut
    Voici le code source. J'ai enlevé toute la partie des labels qui ne posent pas de problemes. Ils marchent et si je fait une version sans eux, le probleme est le meme.

    Version 2


    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
    import java.awt.*;
    import java.applet.*;
    import java.net.*;
    import java.lang.*;
    import javax.swing.*;
     
    public class entree2 extends Applet
    {
    	private JLabel labelo;
    	private String photoe;
    	private Image foto; // photoe en question	
     
    	private GridBagLayout placement;
    	private GridBagConstraints regles;
    	private Color couleur;
     
     	public void init(){	
     		// recuperation des parametres
    		photoe = getParameter("photoe");
     
    		/////////////////// parametres du tableau
    		placement = new GridBagLayout();
    		regles = new GridBagConstraints();
    		setLayout(placement);	
     
    		couleur = new Color(255,255,255);
    		setBackground(couleur);
     
    		// Associer la photo à l'image
    		foto=getImage(getCodeBase(),photoe);
     
    		// JLabel où se sera placée la photoe
    		JLabel labelo = new JLabel("foto");
    		labelo.resize(200,200);
    		regles.gridx = 1; // positionnement dans le tableau
    		regles.gridy = 1;
    		regles.gridwidth = 1;  // nombre de cases que prend 
    		regles.gridheight = 1; // le JLabel
    		placement.setConstraints(labelo,regles);
    		add(labelo);		
     	}
     
     	public void start() {
    	 	// boucle tant que l'image est pas chargée
    	 	while(prepareImage(foto,this)==false){}	
     	}
     
     	public void paint(Graphics g){
    	 	Graphics testFoto=labelo.getGraphics();
     
    	 	// Affiche l'image dans le JLabel reservé
    	 	testFoto.drawImage(foto,0,0,this);	 		
     	}
     
    //  	public void update(Graphics testFoto){
    // 		repaint();
    //  	}
     
    	public void destroy(){}
    }
    [ Modéré par christopheJ ]
    Ajout des balises code : un message lisible est plus agréable
    Les Règles du Forum

  6. #6
    Membre confirmé
    Homme Profil pro
    SAP BC Admin
    Inscrit en
    Août 2004
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : SAP BC Admin
    Secteur : Finance

    Informations forums :
    Inscription : Août 2004
    Messages : 75
    Par défaut
    Tu travailles avec quelle version de Java ?

  7. #7
    Membre éprouvé
    Inscrit en
    Mai 2002
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Mai 2002
    Messages : 101
    Par défaut
    Essaye de forcer l'appel à la méthode paint(). En fait, comme je l'ai dit plus haut, repaint() est asynchrone, donc, il le fait quand il a le temps. Pour FORCER la mise à jour, il faut remplacer repaint() par un appel direct à paint en lui passant ton graphics.

    J'avais fait une application qui modélisait un objet en 3D et qui le faisait tourner et j'avais le même genre de problème... Je voyais la première image et la dernière, puisque comme le prog. calculait toujours, il n'avait jamais le temps d'afficher les images... J'ai dû forcer paint() pour que ça marche. Bonne chance.

  8. #8
    Membre confirmé
    Homme Profil pro
    SAP BC Admin
    Inscrit en
    Août 2004
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : SAP BC Admin
    Secteur : Finance

    Informations forums :
    Inscription : Août 2004
    Messages : 75
    Par défaut
    Je demandais la version de Java, parce que si tu sais utiliser les composant Swing (par exemple JLabel), je pense que l'affichage se fera plus simplement. Tu ne devra pas passer par des méthode paint(), etc.

  9. #9
    Membre confirmé Avatar de Pepito
    Profil pro
    Inscrit en
    Août 2004
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Août 2004
    Messages : 101
    Par défaut
    J'ai essayé aussi avec des JLabel, mais comme en cours on nous a appris que le awt, j'avais tout le temps des erreurs que je ne comprenait pas.

    La version ?? je sais pas. C'est recent !! lol

    Ben si on peut faire ca en swing, pourquoi pas, mais là, je m'y connais pas du tout !!

    (je java sert-il a autre chose qu'à faire chercher les etudiants ?? )

    Pepit'

  10. #10
    Membre confirmé
    Homme Profil pro
    SAP BC Admin
    Inscrit en
    Août 2004
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : SAP BC Admin
    Secteur : Finance

    Informations forums :
    Inscription : Août 2004
    Messages : 75
    Par défaut
    Je demandais la version parce que Swing n'existe pas pour des vielles versions (avant la 1.3). AWT c'est bien, Swing c'est mieux. Si tu ne connais pas, essaie. Tu peux suivre un cours en ligne sur le site de SUN (en anglais, of course), mais il est assez bien fait. En quelques lignes tu peux afficher un JLabel qui contient une image dans une frame sans te casser la tête.

    Si tu veux, je veux, même bien te donner un programme qui fait ça.

    [/code]

  11. #11
    Membre confirmé
    Homme Profil pro
    SAP BC Admin
    Inscrit en
    Août 2004
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : SAP BC Admin
    Secteur : Finance

    Informations forums :
    Inscription : Août 2004
    Messages : 75
    Par défaut
    Pour info, pour connaître la version de java que tu utilises, tapes simplement

    java -version

    Pour moi ca donne

    H:>java -version
    java version "1.4.2_05"
    Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_05-b04)
    Java HotSpot(TM) Client VM (build 1.4.2_05-b04, mixed mode)

    H:>
    J'ai donc la 1.4.2

  12. #12
    Membre confirmé Avatar de Pepito
    Profil pro
    Inscrit en
    Août 2004
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Août 2004
    Messages : 101
    Par défaut
    java version "1.4.2_07"
    Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_07-b05)
    Java HotSpot(TM) Client VM (build 1.4.2_07-b05, mixed mode)

  13. #13
    Membre confirmé Avatar de Pepito
    Profil pro
    Inscrit en
    Août 2004
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Août 2004
    Messages : 101
    Par défaut
    Bon c'est a peu pres bon avec les JLabel !! (enfin je pense)

    Par contre le java, c'est pas logique !!
    Une fois ca marche, après ca marche pas. Et j'ai rien changé (juré). Je me suis juste connecté a internet, et apres Mr l'applet ne voulait plus marcher !!

    La seconde version du code est plus haut !! (je l'ai remise a jour, plutot que de remettre tout une page de code)

    Quelqu'un peut-il maider ?? Ca fait 8 jours que j'essaie d'afficher une simple image !!

    Pepit'

  14. #14
    iuz
    iuz est déconnecté
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 114
    Par défaut
    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
     
    public class Entree2 extends Applet {
      Image image;
     
      public Entree2() {
        // j'utilisai la première ligne pour récupérer l'image, la seconde chez moi ne passait pas. Pour la première, la photo doit être au même endroit que ta class Entree2.
        //image = Toolkit.getDefaultToolkit().getImage(lePackage.Entree2.class.getResource("laPhoto.jpg"));
        image = getImage(getCodeBase(), getParameter("photoe"));
        try {
          MediaTracker mTrack = new MediaTracker(this);
          mTrack.addImage(image, 1);
          mTrack.waitForAll();
        }catch(Exception e) {
          System.out.println("L'image n'a pas pu être chargée");
          e.printStackTrace();
        }
      }
     
      public void init() {
        this.setSize(new Dimension(400,300));
        this.setLayout(new GridBagLayout());
     
        JLabel labelo = new JLabel("foto");
        labelo.setBackground(Color.white);
        labelo.setPreferredSize(new Dimension(200, 200));
        labelo.setIcon(new ImageIcon(image));
     
        this.add(labelo, new GridBagConstraints(1, 1, 1, 1, 0.0, 0.0
                ,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));
      }
    }
    J'utilise un MediaTracker pour charger les images plutôt que de faire une boucle. C'est plus rapide et plus propre.

    Pour l'affichage de ton image, je l'ai passée comme une ImageIcon. Si tu faire une image de fond, il vaut mieux la dessiner dans un JPanel.

    Autrement, il est déconseillé de mélanger swing et awt. Donc si tu concerves une solution avec un JLabel, passe à une JApplet.

    J'espère que ça peut t'aider, j'ai fait quelques tests ici et tout se passe bien.

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

Discussions similaires

  1. [Debutant] Probleme affichage d'une image
    Par iutcien dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 16/11/2006, 15h13
  2. Réponses: 10
    Dernier message: 07/06/2006, 11h12
  3. [DHTML / Javascript] Raffraichissement dynamique d'images
    Par CUCARACHA dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 13/02/2006, 15h51
  4. [Debutant] [JSP/Servlet] Upload d'image vers le serveur
    Par ShinJava dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 05/07/2005, 17h42
  5. [DEBUTANT][HTML] affichage d'une image dans une page
    Par nimport nawak dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 12/04/2005, 19h50

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