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 :

Déclenchement ActionListener non souhaité


Sujet :

AWT/Swing Java

  1. #1
    Membre à l'essai
    Homme Profil pro
    Ingénieur étude et développement java
    Inscrit en
    Juin 2016
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur étude et développement java

    Informations forums :
    Inscription : Juin 2016
    Messages : 34
    Points : 17
    Points
    17
    Par défaut Déclenchement ActionListener non souhaité
    Bonjour le forum,

    Je reviens vers vous concernant une difficulté sur des actionListener.

    J'ai une IHM avec 2 ComboBox: une pour une liste d'usine de production et une autre contenant la liste des lignes de production

    Ces deux listes sont alimentées par l'appel de deux REST services: l'un me renvoi la liste des usines et l'autre la liste des lignes (je précise que la liste des lignes est l'ensemble des lignes de production de toutes les usines confondues). Je précise également que j'ai ajouté dans chacune de ces combobox un item "vide" qui permettra à l'utilisateur de ré-initialiser la combobox en question.

    Ce que je cherche à faire:
    -Lorsque l'utilisateur choisis une usine, je souhaite que toutes les lignes de production de cette usine s'affiche dans ma seconde combobox
    -Lorsque l'utilisateur choisis une ligne de prod, je souhaite que l'usine correspondante s'affiche dans ma première combobox
    -Lorsque l'utilisateur choisis le champs "vide", la combobox se réinitialise avec l'ensemble des items du rest service

    Voici mon code actuel:
    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
     
    //******************************************************************************************
    //	ACTIONS
    //******************************************************************************************
    //When a plant is selected
    //cbPlant.addActionListener(new ActionListener(){
    ActionListener plantListener = new ActionListener(){
        public void actionPerformed(ActionEvent e) {
            cbLine.removeAllItems();
            cbLine.addItem("");
            if(cbPlant.getSelectedItem() == ""){
                LinesList lineslist = ClientRest.getLinesList();
                    for(Line line : lineslist.getLine()){
        		    cbLine.addItem(line);
    	        }
    	}else{
                String plant = (String) cbPlant.getSelectedItem();
                for(Line line : parseLines(lineslist.getLine(), plant)){
                    cbLine.addItem(line.getName());
                }
                cbLine.setSelectedIndex(1);
            }
            updateIHM();
        }
    //});
    };
     
    //When a line is selected
    cbLine.addActionListener(new ActionListener(){
    //lineListener = new ActionListener(){
        public void actionPerformed(ActionEvent e) {
            cbPlant.removeActionListener(plantListener);
            cbPlant.removeAllItems();
            cbPlant.addItem("");
            if(cbLine.getSelectedItem() == ""){
                PlantsList plantslist = ClientRest.getPlantsList();
                for(Plant plant : plantslist.getPlant()){
                    cbPlant.addItem(plant.getName());
                }
            }else{
                cbPlant.addItem(parsePlants((Line)cbLine.getSelectedItem()));
                cbPlant.setSelectedIndex(1);
            }
            cbPlant.addActionListener(plantListener);
            updateIHM();
        }
    });
    //};
    Le gros soucis ici, c'est que lorsque l'utilisateur choisis une usine je supprime tout ce qu'il y a dans la combo des ligne et le programme l'interprète comme une action sur la ligne, je passe donc dans l'autre action Listener.

    J'ai réussi à gérer le cas où l'utilisateur choisis une ligne de production en déclarant un actionListener (plantListener) que je peux désactiver et réactiver. Par contre je ne peux pas réaliser la même chose avec un lineListener du fait qu'il est déclaré plus bas.

    Je bloque complètement là dessus
    Si quelqu'un sait comment m'aider???

    Merci d'avance.
    A bientot

  2. #2
    Membre à l'essai
    Homme Profil pro
    Ingénieur étude et développement java
    Inscrit en
    Juin 2016
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur étude et développement java

    Informations forums :
    Inscription : Juin 2016
    Messages : 34
    Points : 17
    Points
    17
    Par défaut
    Bonjour,

    J'ai finalement réussi à trouver une solution. Pour ceux que ça pourrait intéresser:
    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
     
    // ******************************************************************************************
    // ACTIONS
    // ******************************************************************************************
    // When a plant is selected
    cbPlant.addItemListener(new ItemListener() {
        @Override
        public void itemStateChanged(ItemEvent e) {
            //Test if plant have changed (compare plant in combobox with currentPlant
                if (cbPlant.getSelectedItem()!= null && !cbPlant.getSelectedItem().equals(currentPlant)) {
    	        currentPlant = (String) cbPlant.getSelectedItem();
    		cbLine.removeAllItems();
    	        cbLine.addItem(emptyLine.getName());
                    //If user selected "" => re-initialize combobox
                    if (cbPlant.getSelectedItem()!= null && cbPlant.getSelectedItem().equals("")) {
                        LinesList lineslist = ClientRest.getLinesList();
                        for (Line line : lineslist.getLine()) {
                            cbLine.addItem(line);
                        }
                    //Else user selected a Plant => the combobox for the lines
                    //display all the line for this plant
                    } else {
                        String plant = (String) cbPlant.getSelectedItem();
                        for (Line line : parseLines(lineslist.getLine(), plant)) {
    		        cbLine.addItem(line);
    		    }
                    }
                    updateIHM();
             }
        }
    });
     
    // When a line is selected
    cbLine.addItemListener(new ItemListener() {
        @Override
        public void itemStateChanged(ItemEvent e) {
            //Test if line have changed (comapre line in comobox with emptyLine)
            if (cbLine.getSelectedItem() != null && !(emptyLine.getName()).equals(cbLine.getSelectedItem())) {
                String newPlant = ((Line)cbLine.getItemAt(cbLine.getSelectedIndex())).getPlantName();
    	    if (!newPlant.equals(currentPlant)) {
    	        for (int i = 0; i < cbPlant.getItemCount(); i++) {
    		    if (newPlant.equals(cbPlant.getItemAt(i))) {
    		        currentPlant = newPlant;
    			cbPlant.setSelectedIndex(i);
    			break;
    		    }
    		}
    	    }
    	    updateIHM();
    	    } else {
    	        cbPlant.setSelectedIndex(0);
    	    }
            }
    });

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

Discussions similaires

  1. [JDOM] Element Text non souhaité dans la construction
    Par alex.nd dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 24/10/2006, 14h38
  2. suppression de context non souhaité
    Par 205 dans le forum Tomcat et TomEE
    Réponses: 14
    Dernier message: 26/09/2006, 14h27
  3. Appel de procedure non souhaité
    Par DURVILLE dans le forum Delphi
    Réponses: 2
    Dernier message: 24/09/2006, 16h19
  4. [Débutant] Enregistrement non souhaité.
    Par Monsieur Peck dans le forum Access
    Réponses: 1
    Dernier message: 11/06/2006, 14h40
  5. Raffraichissement de Combobox non souhaité
    Par Kara dans le forum Composants VCL
    Réponses: 12
    Dernier message: 04/11/2005, 09h44

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