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 :

Plusieurs JComboBox liées et actualisation


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 6
    Par défaut Plusieurs JComboBox liées et actualisation
    Bonjour,

    Je sollicite votre aide concernant un soucis en java lié au JComboBox d'un JTable.

    Contexte:
    Une JTable contenant dans 2 de ces colonnes des JComboBox.
    La seconde colonne de JComboBox est dépendante du choix de la 1ère (JComboBox2 de la ligne N dépend du choix de la JComboBox1 de la même ligne).

    Statut:
    J'arrive bien à afficher ces 2 JComboBox avec les items à l'intérieur.

    Problème:
    Lorsque j'effectue un choix sur une JComboBox1, la JComboBox2 liée ne se met pas à jour.

    Question:
    Comment rafraichir la JComboBox2 pour afficher les sous-catégorie liée à la catégorie sélectionnée dans la JComboBox1 ?

    Code:
    Class Main/Application:
    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
     
    ...
    		tab = new CustomTableModel(pilote,host,login,pw,sql);
    		T = new JTable(tab);
    		T.setModel(tab);
     
    		////////////////////////////
    		// JCombobox
     
    		// CATEGORIE
    		TableColumn catColumn = getColumnEntity(2);
    		tab.setUpCategoryColumn(catColumn);
    		String categorie = tab.getCategorie();
    		System.out.println(categorie);
     
    		// SOUSCATEGORIE
    		TableColumn sscatColumn = T.getColumnModel().getColumn(3);
    		tab.setUpSousCategoryColumn(sscatColumn, categorie);
     
    		JScrollPane jsp= new JScrollPane(T);//ScrollPane
     
    	    topPanel.add(jsp);
    ...
    	public TableColumn getColumnEntity(int idCol) {
    		TableColumn catColumn = T.getColumnModel().getColumn(idCol);
    		return catColumn;
    	}
    Class CustomTableModel:
    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
     
    ...
    	 public void setUpCategoryColumn(TableColumn catColumn) {
    		 //ComboBox for the CATEGORIE cells
    		 JComboBox categorieCb = new JComboBox();
    		 categorieCb.addItem("Categorie 1");
    		 categorieCb.addItem("Categorie 2");
    		 categorieCb.setEditable(true);
    		 catColumn.setCellEditor(new DefaultCellEditor(categorieCb));
    		 //Set up tool tips for the CATEGORIE cells
    		 //DefaultTableCellRenderer renderer = new DefaultTableCellRenderer();
    		 //renderer.setToolTipText("Click for combo box");
    		 //sportColumn.setCellRenderer(renderer);
    		 categorieCb.addItemListener(this);
    	 }
     
    	 public void setUpSousCategoryColumn(TableColumn scColumn, String categorie) {
    		 if(categorie == "Categorie 1") {
    			 System.out.println("passage HighTech");
    			 //ComboBox for the SOUSCATEGORIE cells
    			 JComboBox souscategorieCb = new JComboBox();
    			 souscategorieCb.addItem("Sous Categorie 11");
    			 souscategorieCb.addItem("Sous Categorie 12");
    			 scColumn.setCellEditor(new DefaultCellEditor(souscategorieCb));
    		}
    		else if(categorie == "Categorie 2") {
    			System.out.println("passage else");
    			//ComboBox for the SOUSCATEGORIE cells
    			JComboBox souscategorieCb = new JComboBox();
    			souscategorieCb.addItem("Sous Categorie 21");
    			souscategorieCb.addItem("Sous Categorie 22");
    			scColumn.setCellEditor(new DefaultCellEditor(souscategorieCb));
    		}
    	 }
    ...
    	  public void itemStateChanged(ItemEvent ie) {
    	      categorie = (String)ie.getItem();
    	      System.out.println("CAT: "+categorie);
    	      //TableColumn sscatColumn = getColumnModel().getColumn(3);
    	      Application ap = new Application();
    	      TableColumn sscatColumn = ap.getColumnEntity(3);
    	      setUpSousCategoryColumn(sscatColumn,categorie);
     
    	  }
     
    	  public String getCategorie() {
    		  return categorie;
    	  }
    Merci d'avance !

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 6
    Par défaut
    Je ré up ce post.

    Je n'ai pas trouvé de réponse... silvouplé ? un âme charitable?

  3. #3
    Membre Expert

    Homme Profil pro
    Responsable des études
    Inscrit en
    Mars 2009
    Messages
    553
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2009
    Messages : 553
    Par défaut
    Je crois que tu n'utilises pas le bon listener. Tu devrais essayer actionListener au lieu de itemListener...

  4. #4
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    144
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 144
    Par défaut
    Citation Envoyé par nnovic Voir le message
    Je crois que tu n'utilises pas le bon listener. Tu devrais essayer actionListener au lieu de itemListener...
    moi , il me semble que j'aurais plutôt eété voir du coté du firePropertyChange
    non?

  5. #5
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    144
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 144
    Par défaut
    tu peux aussi aller voir de se cote :
    http://java.sun.com/j2se/1.4.2/docs/...JComboBox.html

  6. #6
    Nouveau membre du Club
    Profil pro
    Ingénieur Logiciel
    Inscrit en
    Juin 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur Logiciel

    Informations forums :
    Inscription : Juin 2009
    Messages : 6
    Par défaut
    Fais attention avec ton itemlistener, une jcombobox change deux fois d'état quand tu change l'item sélectionné, une fois pour déselectionner l'item qui était auparavant sélectionné, et une fois pour sélectionner l'item que tu as choisi.
    J'ai eu pas mal d'erreur sur les JComboBox quand je ne prenais pas ca en compte.

    Dans ton itemStateChanged tu devrais rajouter un controle dans ce style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public void itemStateChanged(ItemEvent ie) {
         if (ie.getStateChange()==ItemEvent.SELECTED){
            categorie = (String)ie.getItem();
            System.out.println("CAT: "+categorie);
            //TableColumn sscatColumn = getColumnModel().getColumn(3);
            Application ap = new Application();
            TableColumn sscatColumn = ap.getColumnEntity(3);
            setUpSousCategoryColumn(sscatColumn,categorie); 
         }
    }
    En rajoutant cette ligne il ne traitera que le passage à la nouvelle valeur sélectionnée. Auparavant il traitait aussi le cas de l'ancienne valeur déselectionnée, pour peu qu'il ne le fasse pas dans le bon sens :p

Discussions similaires

  1. Réponses: 1
    Dernier message: 26/03/2007, 02h20
  2. [AJAX] plusieurs listes liées
    Par highman dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 02/03/2007, 11h31
  3. Réponses: 2
    Dernier message: 24/02/2007, 21h14
  4. [VB]Utiliser plusieurs table liées avec un contrôle Data
    Par yangoal25 dans le forum VB 6 et antérieur
    Réponses: 25
    Dernier message: 21/02/2006, 16h36

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