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

 Java Discussion :

Problème de transformation d'image.


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 209
    Par défaut Problème de transformation d'image.
    bonjour à tous

    actuellement j'essai de créer un gestionnaire graphique sous JAVA.
    mon interface graphique qui est pour l'instant très rudimentaire, contient un JLabel sur lequel j'affiche l'image que je souhaite traiter, et un JCombobox qui propose un liste de transformations à appliquer. Seulement voila, quand je selectionne une transformation de mon JCombobox, celle ci s'applique deux fois de suite à l'image!
    pouvez vous l'aider à regler ce probleme?

    voila mon code de mon ItemListener qui gère les transfrmations..
    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
     
    public class ChoixModificationListener implements ItemListener {
     
    	private JComboBox choixModification;
    	private JLabel espaceImage;
     
     
     
    	public ChoixModificationListener(JComboBox box, JLabel im){
    		this.choixModification=box;
    		this.espaceImage=im;
    	}
     
     
    	public ImageIcon getImageIconTransf(String string) throws IOException {
    		ImageIcon imtransf = null;
     
    		if (string.equals("Derivateur")) {
    		   File fic = new File(this.espaceImage.getIcon().toString());
     
    			System.out.println("OK");
                System.out.println(this.espaceImage.getIcon().toString());
    			MonImage image_ = new MonImage("", fic, null);
     
    			ImageIcon imtransftemp = new ImageIcon("C:/"
    					+ image_.transformer(new Derivateur()).getFile().getName());
    			imtransf = imtransftemp;
    		} 
     
     
    return imtransf;
     
    }
     
     
    public void itemStateChanged(ItemEvent e) {
     
    		try {
    			this.espaceImage
    					.setIcon(getImageIconTransf((String)choixModification
    							.getSelectedItem()));
    			System.out.println((String) choixModification.getSelectedItem());
    		} catch (IOException e1) {
    			e1.printStackTrace();
    		}
    	}
    }
    J'ai mis ici une seul transformation "Derivateur"..
    je crois que mon probleme vient du fait que je déclare mon Fichier fc au mauvais endroit, mais cela n'explique pas à priori que ma transformation s'applique deux fois de suite.


    en fait, en tenant compte des Sysoutprintln que j'ai mis, j'obtient ça à l'execution:

    OK
    C:/chat.jpg
    Derivateur
    OK
    C:/Version Sobel de chat.jpg
    Derivateur


    Cordialement

  2. #2
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 096
    Par défaut
    Essaye un peu en utilisant ActionPerformed (1 seul appel lors du chg dans la combobox) a la place de ItemStateChanged (2 appels).
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 209
    Par défaut
    J'ai essayé mais, en fait, puisque ma classe ChoixModificationListener implémente un ItemListener, je dois impérativement définir sa méthode ChangeStateListener. donc, où dois je inclure la méthide ActionPerformed ?

    merci

  4. #4
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 096
    Par défaut
    Citation Envoyé par bakaratoun Voir le message
    J'ai essayé mais, en fait, puisque ma classe ChoixModificationListener implémente un ItemListener, je dois impérativement définir sa méthode ChangeStateListener. donc, où dois je inclure la méthide ActionPerformed ?

    merci
    En fait, Je parlais de la ComboBox qui devait utiliser ActionPerf et pas ChangeStatePerf.

    Ce que tu essayes de faire c'est Creer un Panel qui contient un Label et une combobox. Ce panel devra envoyer un Event au moment du changement de la combobox. Donc ta combobox doit avoir un Listener action performed qui fera je ne sais quoi + eventuellement retransmettre l'evenement ou un nouvel evenement a ce qui sera tes listener de ton Panel.
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 209
    Par défaut
    wii, merci, là marche très bien!!
    J'ai rajouter pleusieurs transformations dans ma JComboBox.
    par contre, je n'arrive pas à faire la même transformation deux fois de suite..
    en effet, un Item ne répond pas deux fois d'affilé. Je suis uniquement capable de faire à chaque fois des transformations différentes deux à deux

    savez vous d'où vient ce problème ?

    merci

  6. #6
    Membre émérite Avatar de herch
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    655
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 655
    Par défaut
    dans ce cas il faut que tu utilises un ActionListener comme l'a dit wax78, parceque avec l'itemlistener, lorsque tu clique sur l'élément une deuxième fois, il n'exécutera pas le code de ton listener puisqu'il est déjà sélectionné.

    dans ton code, tu implémentes ActionListener plutôt que ItemListener, et tu remplaces la méthode itemStateChanged(ItemEvent e) par actionPerformed(ActionEvent e)

  7. #7
    Membre émérite Avatar de herch
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    655
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 655
    Par défaut
    salut,

    la méthode itemStateChanged est exécutée lors de la sélection et la déselection de l'élément, donc, tu dois tester dans la méthode si c'est une sélection
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public void itemStateChanged(ItemEvent e) {
        if (e.getStateChange() == ItemEvent.SELECTED)
        {
            //Ton code ici
        }

  8. #8
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 096
    Par défaut
    Ha oui Herch, bien vu en fait
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. Réponses: 13
    Dernier message: 23/12/2004, 18h01
  2. Réponses: 2
    Dernier message: 03/09/2004, 17h35
  3. [débutant] problème de lecture d'image
    Par shura dans le forum OpenGL
    Réponses: 16
    Dernier message: 03/07/2004, 18h05
  4. Problème de nb d'images par seconde
    Par Francky033 dans le forum DirectX
    Réponses: 7
    Dernier message: 17/04/2004, 10h37
  5. Problème de mémoire Affichage images
    Par Repti dans le forum C++Builder
    Réponses: 6
    Dernier message: 29/03/2004, 20h06

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