JAVA : Bouton associé à des JComboBox

Fermé
JeremINSA Messages postés 3 Date d'inscription jeudi 11 novembre 2010 Statut Membre Dernière intervention 13 novembre 2010 - 13 nov. 2010 à 13:39
 Utilisateur anonyme - 13 nov. 2010 à 19:55
Tout d'abord, bonjour à tous et à toutes

Dans le cadre d'un projet informatique à l'INSA de Rouen, j'ai pour but de créer un quiz, sous la forme du jeu "tout le monde veut prendre sa place" pour ceux qui connaissent. J'ai décidé de le faire en java puisque c'est ce langage de programmation dans lequel je suis le plus à l'aise.

Mais je veux permettre à l'utilisateur de créer un avatar qui pourra être à son image. Pour cela, j'ai crée 5 objets JComboBox qui détermineront : _sexe (homme / femme)
_couleur de peau (blanc / café / noir)
_couleur des cheveux (brun / châtain / blond /roux)
_couleur du haut (bleu / vert / jaune / rouge)
_couleur du bas (bleu / gris / noir)

J'ai ensuite placé un bouton OK en dessous de ces JComboBox.
Tous les éléments de la fenêtre sont dans une grille de positionnement que j'ai crée.
Pour ce qui est de la création de ces JComboBox, il n'y a pas de problème. Mais je souhaiterais qu'après avoir sélectionné les caractéristiques des JComboBox, et après l'appui sur le bouton OK, que l'image correspondante aux caractéristiques se charge dans la même fenêtre dans l'emplacement du JLabel imagejpg. Il faut savoir que j'ai déjà crée l'ensemble des images (288).

Par exemple, si l'utilisateur choisit un homme blanc, brun, avec un haut jaune et un pantalon bleu, l'image correspondante sera H1C1CH1H1B1.jpg
Vous comprendrez ces notations en regardant le code.

Après bon nombre de recherches, j'ai vu que les outils imageIcon et setSelectedIndex pouvaient m'aider mais je n'arrive pas à les utiliser convenablement et à les adapter à ma situation.

Voici la partie de mon code en rapport avec mes interrogations :

class info extends JPanel
{

(autres éléments sans rapport avec le sujet)

private String S1 = "Masculin";
private String S2 = "Feminin";
private String [] MF = {"Sexe",S1,S2};
private JComboBox sexe = new JComboBox (MF);

private String C1 = "Blanc";
private String C2 = "Cafe";
private String C3 = "Noir";
private String [] BCN = {"Couleur de la peau",C1,C2,C3};
private JComboBox couleur = new JComboBox (BCN);

private String CH1 = "Brun";
private String CH2 = "Chatain";
private String CH3 = "Blond";
private String CH4 = "Roux";
private String [] BrCBlR = {"Couleur des cheveux",CH1,CH2,CH3,CH4};
private JComboBox cheveux = new JComboBox (BrCBlR);

private String H1 = "Bleu";
private String H2 = "Vert";
private String H3 = "Jaune";
private String H4 = "Rouge";
private String [] BVJR = {"Couleur du haut",H1,H2,H3,H4};
private JComboBox haut = new JComboBox (BVJR);

private String B1 = "Bleu";
private String B2 = "Gris";
private String B3 = "Noir";
private String [] BGN = {"Couleur du pantalon",B1,B2,B3};
private JComboBox bas = new JComboBox (BGN);

private JButton OK = new JButton ("OK");

public JLabel imagejpg = new JLabel("");

public info()
{
add(sexe);
add(couleur);
add(cheveux);
add(haut);
add(bas);
OK.addActionListener(new EcouteurOK());
add(OK);
add(imagejpg);
}

class EcouteurOK implements ActionListener
{
public void actionPerformed(ActionEvent evt)
{}
}


En espérant que quelqu'un puisse me venir en aide
Bonne journée


A voir également:

1 réponse

Salut,

J'ai cette petite demo qui montre comment créer l'imageIcon, comment utiliser setSelectedIndex et comment mettre le label à jour.

J'espère que tu y trouveras ce qu'il te faut...

   import java.awt.*; 
   import java.awt.event.*; 
   import javax.swing.*; 
   import java.io.File; 

    
   public class ComboBox1Bis extends JPanel 
    implements ActionListener 
   { 
      private JLabel labelImage; 
      private JComboBox listeDrapeaux; 
       
      private String chemin = "F:/Drapeaux/"; 
       
      private boolean nonTrouve = false; 
    
      public ComboBox1Bis() 
      { 
         super (new BorderLayout()); 
          
         String[] tableauImages = { 
               chemin + "flagFr.png", chemin + "situFr.png", chemin + "flagMx.png", 
               chemin + "situMx.png", chemin + "flagUs.png", chemin + "situUs.png", 
               chemin + "flagKg.png", chemin + "situKg.png", chemin + "flagCn.png", 
               chemin + "situCn.png", chemin + "flagBr.png", chemin + "situBr.png", 
               chemin + "flagDz.png", chemin + "situDz.png", chemin + "flagMa.png", 
               chemin + "situMa.png", chemin + "flagTn.png", chemin + "situTn.png"}; 
                
       // création de la combo box listeDrapeaux 
         listeDrapeaux = new JComboBox(tableauImages); 
            
         // Nombre de lignes (rows) visibles par défaut 
         int maxVisibleRows = listeDrapeaux.getMaximumRowCount(); 
         System.out.println("Lignes visibles: " + maxVisibleRows + " par defaut."); 
         // Modification de ce nombre 
         maxVisibleRows = 18; // Si + de 18 lignes: scroll 
         listeDrapeaux.setMaximumRowCount(maxVisibleRows); 
         System.out.println("Lignes visibles: " + maxVisibleRows + " apres modif.\n"); 
             
         listeDrapeaux.setSelectedIndex(0); // selection par defaut du cas n° 1 
         listeDrapeaux.addActionListener(this); 
        
       // set up label image 
         labelImage = new JLabel(); 
         labelImage.setHorizontalAlignment(JLabel.CENTER); 
         updateLabel(tableauImages[listeDrapeaux.getSelectedIndex()]); 
         labelImage.setBorder(BorderFactory.createEmptyBorder(20, 0, 0, 0)); // 40, 0, 0, 0 
               
       // taille 
         labelImage.setPreferredSize(new Dimension(250, 325)); 
          
       // lay out 
         add(listeDrapeaux, BorderLayout.PAGE_START); 
         add(labelImage, BorderLayout.PAGE_END); 
         setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); 
      } 
       
      // Listen. 
      public void actionPerformed(ActionEvent ae) 
      { 
         JComboBox jcb = (JComboBox)ae.getSource(); 
         String nomCas = (String)jcb.getSelectedItem(); 
         updateLabel(nomCas); 
      } 
       
      protected void updateLabel(String nom) 
      { 
         ImageIcon img = createImageIcon(nom); 
         labelImage.setIcon(img); 
         labelImage.setToolTipText("Drawing de " + nom);  //.toLowerCase()); 
      } 
       
    // retour de l'image, ou null si path invalide (nom) 
      protected static ImageIcon createImageIcon(String nom) 
      { 
         File f = new File(nom); 
         if (!f.isFile()) 
         { 
            System.err.println(nom + "  non trouvé!!!"); 
            return null; 
         } 
          
         ImageIcon img = new ImageIcon(Toolkit.getDefaultToolkit().getImage(nom)); 
         int wi = img.getIconWidth(); 
         int hi = img.getIconHeight(); 
         System.out.println("L  86  wi/hi : " + wi + "/" + hi); 
         return img; 
      } 
     
      public static void main(String s[]) 
      { 
         JFrame.setDefaultLookAndFeelDecorated(true); 
          
         JFrame fr = new JFrame("Choisir une autre image."); // titre 
          
         //fr.setBounds(w-910, 0, 800, h-30); 
         fr.setBounds(0, 0, 820, 770); 
          
         fr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
        
         JComponent newContentPane = new ComboBox1Bis(); 
         newContentPane.setOpaque(true); 
         fr.setContentPane(newContentPane); 
        
         fr.pack(); 
         fr.setVisible(true); 
      } 
   }


Cordialement,

Dan
0