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 :

itemStateChanged qui morche pas trop sur ma combo


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de poulette3000
    Profil pro
    Inscrit en
    Août 2006
    Messages
    183
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 183
    Par défaut itemStateChanged qui morche pas trop sur ma combo
    Voila j'aurai aimé que la séléection d'un item fasse un changement imédiat sur mon applet.

    de toute évidence cela ne marche plus car je n'ai plus de fonctionnement!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public MapLangue(AppletPh2 app){
     
    	private final String[] langueStrings = {"Fran\u00e7ais", "English", "Polski", "Espa\u00f1ol", "Deutsch", "Portugu\u00eAs", "Catal\u00E0","Chinese","Vi\u00EAt nam"};
     
    Integer[] intArray = new Integer[AppletPh2.nbr_langue];
    		for (int i = 0; i < AppletPh2.nbr_langue; i++) {
    .....et j'en passe ..... [suite]
    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
     
    langueList = new JComboBox(intArray);
    ComboBoxRenderer renderer= new ComboBoxRenderer();
    renderer.setPreferredSize(new Dimension(90, 25));
    langueList.setRenderer(renderer);
    langueList.setMaximumRowCount(4);
    langueList.setBackground(Color.WHITE);
    langueList.setBounds(5,130,150,30);
    langueList.addItemListener(this);
    add(langueList);
     
    	}
     
    	public void itemStateChanged(ItemEvent e){
    		if(e.getSource() == langueList) {
    			 applet.miseAJourLangue();
    	} 
    	}
    merci

  2. #2
    Membre éprouvé
    Avatar de Janitrix
    Inscrit en
    Octobre 2005
    Messages
    3 391
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 3 391
    Par défaut
    je n'ai plus de fonctionnement!
    Sois un peu plus précis s'il te plait .
    Peux tu donner le code de miseAJourLangue() ? Merci.

  3. #3
    Membre confirmé Avatar de poulette3000
    Profil pro
    Inscrit en
    Août 2006
    Messages
    183
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 183
    Par défaut miseAJourlangue est plutot complexe
    je l'uitilise pour l'applet
    et dans chaque sous fenetre mise à JourLangue declenche la miseAJourLangue des autres fenetres
    ça fonctionne plus --> c'est à dire que j'ai plus de MiseAjour langue dutout pour aucun truc. ça se bloque totalement

    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
     
     
    /**
     * Interface permettant l'implémentation de plusieurs langues pour l'application AppletPh2
     * Elle définit la fonction miseAJourLangue() permettant la traduction
     */
    public interface Multilangue {
     
    	/**
         * Fonction mettant à jour la langue utilisée par l'applet
         * Elle doit traduire les items de la classe courante, et appellée la 
         *  fonction miseAJourLangue() des sous panneaux de la classe courante
         * Structure typique:
         *    // Mise à jour des items du panneau
         *    itemClasseCourante.setToolTipText(monAppletPh2.getItemInfobulle(index));
         *    itemClasseCourante.setText(monAppletPh2.getItemName(index));
         *    
         *    // Mise à jour des items des sous panneaux
         *    sousPanneau1.miseAJourLangue();
         *    sousPanneau2.miseAJourLangue();
         */    
        public void miseAJourLangue();
    }
    J'ai aussi la classe IndexLangue, ça fonctionne avec des fichiers .lang

    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
    public class IndexLangue {
     
        private Hashtable<String,ItemLangue> hash_items; 
        private String langue;  // Nom de la langue utilisée
     
        //------------------------------------------------------------------------//
        /** 
         * Constructeur à partir d'un fichier de langue (*.lang)
         * Prend l'URL de base de l'application en paramètre pour récupérer le fichier de langue
         */
        public IndexLangue(String fichier, AppletPh2 app) {
     
            ItemLangue il;
            String ligne;
            String []champs;
            int i;
     
            hash_items = new Hashtable<String,ItemLangue>();
     
            try {
     
                // Ouverture du fichier
                try {
                    URL fileURL = getClass().getResource("/Data/Langue/"+fichier);//new java.net.URL(app.getCodeBase(), "Data/Drapeaux/"+fichier);
                    DataInputStream dis = new DataInputStream(fileURL.openConnection().getInputStream());
                    BufferedReader in = new BufferedReader(new InputStreamReader(dis));
     
                    // Lecture du nom de la langue
                    //System.out.println("\tLecture du nom de langue...");
                    ligne = "//";
                    while ( ligne.startsWith("//") ) {
                        ligne = in.readLine();
                    }
                    this.langue = ligne;
     
                    // Lecture des itemLangue
                    i = 2;
                    while ((ligne = in.readLine()) != null) {
                    	//System.out.println("\tLecture de la ligne " + i + " de " + fichier + "..." + ligne);
                        // On en tient pas compte des commentaires dans le fichier de langue
                        if (!ligne.startsWith("//")) {
                            // Découpage de la ligne pour récréer le itemLangue
                            champs = ligne.split(":");
                            il = new ItemLangue(champs[0], champs[1], champs[2]);
                            hash_items.put(champs[0],il);
                        }
                        i++;
                    }
     
                    in.close();
                } catch (MalformedURLException me) { 
                    System.err.println("Couldn't find file: " + fichier);
                }
            } catch (Exception e) {
                System.out.println ("ERREUR: Fichier de langue incorrect: " + fichier + " invalide");
                e.printStackTrace();
            }
     
        }
     
        //------------------------------------------------------------------------//
        /** 
         * Retourne un ItemLange d'index i
         */
        public ItemLangue getItemLangue(String i) {
            return (ItemLangue)this.hash_items.get(i);
        }
     
        //------------------------------------------------------------------------//
        /** 
         * Retourne le nom de la langue
         */
        public String getNomLangue() {
            return this.langue;
        }
     
     
    }
    la fonction miseAJourLangue des sous panneaux de l'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
    public void miseAJourLangue() {
     
    		// Mise ˆ jour des items du panneau: pas d'item sur le panneau
     
    		// Mise ˆ jour de la langue sur les sous panneaux:
     
    		this.f_graphe.miseAJourLangue();
    		this.f_fichier.miseAJourLangue();
    		this.f_choixreact.miseAJourLangue();
     
    		this.protection.miseAJourLangue();
     
    		this.p_boutons.miseAJourLangue();
    		this.fp.miseAJourLangue();
     
    		this.ml.miseAJourLangue();
    		this.pp.miseAJourLangue();
    		this.photo.miseAJourLangue();
     
    		this.p_logo.miseAJourLangue();
     
    		this.f_affQN.miseAJourLangue(); 
    		repaint();
    	}
    voila merci de votre aide

  4. #4
    Membre éprouvé
    Avatar de Janitrix
    Inscrit en
    Octobre 2005
    Messages
    3 391
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 3 391
    Par défaut
    Fais un System.out.println("Source : " + e.getSource()); et dis moi ce qui se passe. Encore mieux, mets un bloc try/catch comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public void itemStateChanged(ItemEvent e){
    		if(e.getSource() == langueList) {
                             try {
    			      applet.miseAJourLangue();
                             }catch(Exception e){
                                   e.printStackTrace();
                             }
    	}
    Il doit y avoir une erreur lors de l'appel à la méthode. Si c'est le cas, il te faudra descendre dans la méthode petit à petit pour trouver la source de l'erreur. Bonne chance.

  5. #5
    Membre confirmé Avatar de poulette3000
    Profil pro
    Inscrit en
    Août 2006
    Messages
    183
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 183
    Par défaut :-/
    il me met duplicate parameter e , alors j'ai mis ez

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    	public void itemStateChanged(ItemEvent e){  
    		if(e.getSource() == langueList) 
    		{  try {  applet.miseAJourLangue(); }
    		catch(Exception ey)
    		{  ey.printStackTrace(); }
    		}
    	}
    en tou cas ça marche tjs pas :

    java.lang.NullPointerException
    at AppletPh2.fenetrePrincipale.DocumentViewer.miseAJourLangue(DocumentViewer.java:145)
    at AppletPh2.fenetrePrincipale.Protection.miseAJourLangue(Protection.java:70)
    at AppletPh2.AppletPh2.miseAJourLangue(AppletPh2.java:350)
    at AppletPh2.fenetrePrincipale.MapLangue.itemStateChanged(MapLangue.java:102)
    at javax.swing.JComboBox.fireItemStateChanged(Unknown Source)
    at javax.swing.JComboBox.selectedItemChanged(Unknown Source)
    at javax.swing.JComboBox.contentsChanged(Unknown Source)
    at javax.swing.AbstractListModel.fireContentsChanged(Unknown Source)
    at javax.swing.DefaultComboBoxModel.setSelectedItem(Unknown Source)
    at javax.swing.JComboBox.setSelectedItem(Unknown Source)
    at javax.swing.JComboBox.setSelectedIndex(Unknown Source)
    at javax.swing.plaf.basic.BasicComboPopup$Handler.mouseReleased(Unknown Source)
    at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
    at java.awt.Component.processMouseEvent(Unknown Source)
    at javax.swing.JComponent.processMouseEvent(Unknown Source)
    at javax.swing.plaf.basic.BasicComboPopup$1.processMouseEvent(Unknown Source)
    at java.awt.Component.processEvent(Unknown Source)
    at java.awt.Container.processEvent(Unknown Source)
    at java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)

    aie aie aie


    ça veut dire quoi tout ça ......

  6. #6
    Membre éprouvé
    Avatar de Janitrix
    Inscrit en
    Octobre 2005
    Messages
    3 391
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 3 391
    Par défaut
    Il y a une NullPointerException, c'est une erreur très courante. Tu dois utiliser un objet non initialisé ou périmé. Les messages d'erreurs ne sont pas vide de sens, et il te faut savoir les déchiffrer : c'est simple en fait, le message t'indique la source de l'erreur puis par où elle s'est propagée.
    at AppletPh2.fenetrePrincipale.DocumentViewer.miseAJourLangue(DocumentViewer.java:145)
    L'erreur en elle même viens de là : dans la classe AppletPh2.fenetrePrincipale.DocumentViewer (mais c'est des vilaines classes internes ça ), la méthode miseAJourLangue à la ligne 145. Tu vois l'intéret du message d'erreur ? Tu localises directement la source. Tu peux aussi t'apercevoir que la méthode miseAJourLangue a été appelé par la méthode
    miseAJourLangue de la classe Protection, elle même appelé par miseAJourLangue de AppletPh2 qui elle a été appelé par ta fameuse méthode itemStateChanged.

    Bonne chance.

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

Discussions similaires

  1. pthread qui marche.. pas trop
    Par ikeas dans le forum Langage
    Réponses: 10
    Dernier message: 23/02/2015, 21h28
  2. Un programme qui veut bosser; mais pas trop.
    Par Flodelarab dans le forum C++
    Réponses: 8
    Dernier message: 28/08/2006, 15h33
  3. Réponses: 22
    Dernier message: 04/08/2006, 00h29
  4. [Sécurité] .htaccess qui marche pas sur le serveur
    Par Alain15 dans le forum Langage
    Réponses: 6
    Dernier message: 26/06/2006, 09h10

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