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 :

[SWING] Image persistante


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Par défaut [SWING] Image persistante
    Bonjour,
    je développe une interface graphique qui comporte en autre un bouton qui ouvre une fenetre 'résultat'.
    Cette fenêtre ne contient qu'un jpg qui est généré entre la sélection du bouton et la création de la fenêtre.

    Cela fonctionne la première fois.
    Après, le résultat peut être modifié, le jpg est alors supprimé puis remplacé par le nouveau résultat. Cette étape fonctionne, je l'ai vérifié, le jpg présent dans le dossier est correct.
    Je fais alors un dispose() sur la fenetre, j'en créé une nouvelle et je l'affiche. L'image présente est la première.
    Il la trouve alors qu'elle a été supprimée du dossier...

    J'aimerai savoir d'où vient le problème et comment le contourner.

    Merci

  2. #2
    Membre Expert
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Par défaut
    Tu dois sùrement garder la première image en mémoire. Montre-nous le code en question peut-étre qu'on pourra t'aider d'avantage


    Mes publications
    Lisez
    Les régles du forum
    Pensez au bouton

  3. #3
    Membre émérite
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Par défaut
    le Listener appel directement la fonction majorite.
    la JFrame maj est un élément privé de l'interface graphique.

    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
    	protected void majorite() {
    		int[] majorite = new int[etats[0].length];
    	  (...calculs...)
    		try {
    /** Le résultat est stoké dans majorite.jpg */
    			Outils.versJpg("majorite", majorite, largeur);
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    		maj = new JFrame("majorite");
    		maj.getContentPane().add(new JLabel(new ImageIcon("majorite.jpg")));
    		maj.pack();
    		maj.setLocationRelativeTo(this.getParent());
    		maj.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    		maj.setVisible(true);
    	}

  4. #4
    Membre éprouvé Avatar de BlackWood
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 167
    Par défaut
    As-tu essayé de garder la même fenêtre, et juste changer l'image de son JLabel puis repaint() ? Plutôt que de recréer les objets à chaque fois (dont les anciens restent en mémoire à une autre adresse, comme l'image)...

  5. #5
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Montre nous aussi ta classe Outils, notamment la méthode versJpg()...

  6. #6
    Membre émérite
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Par défaut
    J'ai essayé comme ça et ça donne le même résultat.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    		if (maj == null) {
    			imgMaj = new ImageIcon("majorite.jpg");
    			maj = new JFrame("majorite");
    			maj.getContentPane().add(new JLabel(imgMaj));
    			maj.pack();
    			maj.setLocationRelativeTo(this.getParent());
    		} else {
    			imgMaj.setImage(new ImageIcon("majorite.jpg").getImage());
    		}
    		maj.setVisible(true);
    		maj.repaint();
    Pour le versJpg le voilà :

    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
    	public static void versJpg(String nomFichier, int[] emotions, int largeurLignes) throws IOException{
    		int mult = 4; //Math.min(500/largeurLignes, 500*largeurLignes/agents.size());
    		BufferedImage img = new BufferedImage(largeurLignes*mult, emotions.length*mult/largeurLignes, BufferedImage.TYPE_INT_RGB);
    		for (int j = 0; j < emotions.length/largeurLignes; j++) {
    			for (int i = 0; i < largeurLignes; i++) {
    				int couleur = COULEURS[emotions[i + j*largeurLignes]].getRGB();
    				for (int x = 0; x < mult; x++) {
    					for (int y = 0; y < mult; y++) {
    						img.setRGB(i*mult + x, j*mult + y, couleur);
    					}
    				}
    			}
    		}
    		if (new File(nomFichier + ".jpg").exists()) {
    			new File(nomFichier + ".jpg").delete();
    		}
    		ImageIO.write(img, "JPG", new File(nomFichier + ".jpg"));
    	}
    Mais comme je l'ai déjà dit, l'image présente sur le dur est la bonne, je doute que le pb vienne de ce fichier.
    Mais je peux me tromper

Discussions similaires

  1. [swing][image] transparence
    Par harold63 dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 23/12/2015, 18h26
  2. [SWING][Images] image flottante
    Par marcsaker dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 11/08/2006, 11h22
  3. [Swing] Images différentes dans un JTree
    Par tck-lt dans le forum Composants
    Réponses: 3
    Dernier message: 23/03/2006, 16h16
  4. [Swing]Image en fond de JFrame+ objets par dessus
    Par matt92700 dans le forum Agents de placement/Fenêtres
    Réponses: 6
    Dernier message: 16/01/2006, 15h12
  5. [Swing] images et jPanel
    Par nma dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 08/10/2004, 23h20

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