JComboBox tester l'existance d'un élément [Résolu]

Messages postés
87
Date d'inscription
mardi 17 juin 2003
Dernière intervention
13 mars 2009
- - Dernière réponse : amundain
Messages postés
110
Date d'inscription
mercredi 28 mars 2007
Dernière intervention
28 août 2012
- 13 mars 2009 à 15:09
Bonjour
Comment dans une JComboBox tester l'existance d'un élément
Merci
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
Messages postés
110
Date d'inscription
mercredi 28 mars 2007
Dernière intervention
28 août 2012
3
Merci
Salut,


Il y a un souci sur ta comparaison : tu compares 2 instances de String qui ont le même texte mais pas la même référence ! La comparaison la + efficace peut se faire sur le contenu, à savoir le texte elle-même


Essaie de remplacer ta méthode actionPerformed avec celle-ci :





public










void


actionPerformed(ActionEvent e) {




boolean


exists =



false


;String sAction =



"Pas ajouté"

;String selected =



fenetre

.getListe1().getSelectedItem().toString();




for


(



int


i = 0 ; i <


fenetre

.getListe2().getItemCount() ; i++){ String itemToCompare=



fenetre

.getListe2().getItemAt(i).toString();




if


(itemToCompare.equals(selected)){exists=




true


;}

}




if


(!exists){



fenetre

.getListe2().addItem(selected);sAction =



"Ajouté"

;}










A +,

amundain





<hr width="100%" size="2" />


Java bien,merci.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 97 internautes nous ont dit merci ce mois-ci

Commenter la réponse de amundain
Messages postés
110
Date d'inscription
mercredi 28 mars 2007
Dernière intervention
28 août 2012
0
Merci
Salut,






Tu fais une boucle de récupération des éléments et tu testes chaque élément...




for





(



int


i=0;i<ta_jComboBox.getItemCount();i++){


boolean exists=
((String)ta_jComboBox.getItemAt(i)).equals(TA_VARIABLE_COMPAREE));}





A +,

amundain

<hr width="100%" size="2" />Java bien,merci.
Commenter la réponse de amundain
Messages postés
87
Date d'inscription
mardi 17 juin 2003
Dernière intervention
13 mars 2009
0
Merci
Merci Amundain pour ta solution.

Je pense qu'il doit exister une fonction qui permet de tester, si un élément existe dans une JComboBox.

Merci

@+
Commenter la réponse de stigmate101
Messages postés
87
Date d'inscription
mardi 17 juin 2003
Dernière intervention
13 mars 2009
0
Merci
Je chercher à ajouter un élément selectionné dans une JComboBox dans une seconde JCombobox en testant au préalable l'existance de cette élément.
Dans mon code, le comportement n'est pas satisfaisant. J'utilise la fonction equal(). Ce que je ne comprends pas, c'est le premier test n'est pas pris en compte.
Par exemple si je selection "Element 1" dans la première JComboBox et que je le copie dans la seconde, alors qu'il est déjà présent. La première fois, il est copie, la deuxième fois non.
Ni la première fois ni la seconde, il ne devrait être copié.
Merci d'avance
Voici le code :


 


// --- début Classe FenetreListes_04 --- //
import java.awt.FlowLayout;


import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JPanel;


@SuppressWarnings("serial")
public class FenetreListes_04 extends JFrame{
 private JComboBox liste1;
 private JComboBox liste2;
 
 public FenetreListes_04(){
  super();
  
  build();//On initialise notre fenêtre
 }
 
 private void build(){
  setTitle("Fenêtre qui propose une liste de choix"); //On donne un titre à l'application
  setSize(420,340); //On donne une taille à notre fenêtre
  setLocationRelativeTo(null); //On centre la fenêtre sur l'écran
  setResizable(true); //On permet le redimensionnement
  setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //On dit à l'application de se fermer lors du clic sur la croix
  setContentPane(buildContentPane());
 }
 
 private JPanel buildContentPane(){
  JPanel panel = new JPanel();
  panel.setLayout(new FlowLayout());
  
  Object[] elements = new Object[]{"Element 1", "Element 2", "Element 3", "Element 4", "Element 5"};
  
  liste1 = new JComboBox(elements);  
  panel.add(liste1);
  
  JButton bouton = new JButton(new CopierAction_04(this, "Copier"));  
  panel.add(bouton);
  
  liste2 = new JComboBox(elements);  
  panel.add(liste2);
  
  /*
  JButton bouton2 = new JButton(new SupprimmerAction_04(this, "Enlever"));  
  panel.add(bouton2);
  
  JButton bouton3 = new JButton(new ViderAction_04(this, "Vider"));  
  panel.add(bouton3);
  */
  return panel;
 }
 
 public JComboBox getListe1(){
  return liste1;
 }
 
 public JComboBox getListe2(){
  return liste2;
 }
 
 public static void main(String[] args) {
  //On crée une nouvelle instance de notre FenetreTexte
  FenetreListes_04 fenetre = new FenetreListes_04();
  fenetre.setVisible(true);//On la rend visible
 }
}
// --- Fin Classe FenetreListes_04 --- //


// --- Début class CopierAction_04 --- //
import java.awt.event.ActionEvent;
import javax.swing.AbstractAction;


@SuppressWarnings("serial")
public class CopierAction_04 extends AbstractAction {
 private FenetreListes_04 fenetre;
 
 public CopierAction_04(FenetreListes_04 fenetre, String texte){
  super(texte);  
  this.fenetre = fenetre;
 }
 
 public void actionPerformed(ActionEvent e) {
  boolean exists = false;
  String sAction = "Pas ajouté";
  Object selected = fenetre.getListe1().getSelectedItem();
  
  for ( int i = 0 ; i < fenetre.getListe2().getItemCount() ; i++){   
   exists = (fenetre.getListe2().getItemAt(i).equals(selected));   
  } 


  if(!exists){
   fenetre.getListe2().addItem(selected);
   sAction ="Ajouté";
  }
  System.out.println( sAction +" " + selected);    
 }
}
// --- Fin  class CopierAction_04 --- //
Commenter la réponse de stigmate101

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.