Un JComboBox comme le tag SELECT en HTML: afficher les label et accéder au valeu

cs_budhax Messages postés 20 Date d'inscription dimanche 18 août 2002 Statut Membre Dernière intervention 6 septembre 2007 - 22 août 2007 à 18:36
cs_budhax Messages postés 20 Date d'inscription dimanche 18 août 2002 Statut Membre Dernière intervention 6 septembre 2007 - 22 août 2007 à 22:38
Salut,
En Java, comment construire un JComboBox comme son 'équivalent' en HTML ?
J'ai besoin d'un menu déroulant affichant des labels (blue, green, red),
Puis je voudrais accéder aux valeurs (#6600FF, #339900, #FF0000) sur l'événement onChange.

<select name="colors">

    <option value="#6600FF">blue</option>

    <option value="#339900">green</option>

    <option value="#FF0000">red</option>

</select>

Merci.

4 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
22 août 2007 à 18:58
ben tout dépend ce que tu utilise comme techno : mais en JSP c'est comme en HTML !
cs_budhax Messages postés 20 Date d'inscription dimanche 18 août 2002 Statut Membre Dernière intervention 6 septembre 2007
22 août 2007 à 21:06
En Java: composant Swing

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import javax.swing.event.*;

public class Composants extends JFrame

{

    public static void main(String args[])

    {

        new Composants();

    }

    public Composants() {

        super("Quelques composants Swing");

        JPanel p=new JPanel();

        JComboBox colors=new JComboBox();

        colors.addItem("blue");

        colors.addItem("green");

        colors.addItem("red");

        p.add(colors);

        JList langue=new JList(new String[] {"Français","Anglais","Allemand"});

        p.add(langue);

        this.getContentPane().add(p);

        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        this.setSize(300,300);

        this.setLocationRelativeTo(null);

        this.setVisible(true);

    }

}
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
22 août 2007 à 22:21
Salut,

pour ce qui est de savoir quand l'utilisateur change la valeur de ton combo il te suffit d'implémenter le listener ActionListener et de le rattacher dessus :

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;

public class Composants extends JFrame implements ActionListener,
        ListSelectionListener {

    private static final long    serialVersionUID    = 6178586080324487307L;
    private static final String[]    COLORS    = { "blue", "green", "red" };
    private static final String[]    LANG    = { "Français", "Anglais", "Allemand" };
    private JComboBox                colors    = null;
    private JList                    langue    = null;

    public static void main(final String args[]) {

        new Composants();

    }

    public Composants() {
        super("Quelques composants Swing");
        final JPanel p = new JPanel();

        p.add(getColors());
        p.add(getLangue());
        setContentPane(p);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        this.setSize(300, 300);
        setLocationRelativeTo(null);
        setVisible(true);
    }

    private JComboBox getColors() {
        if (colors == null) {
            colors = new JComboBox();
            for (final String s : COLORS)
                colors.addItem(s);
            colors.addActionListener(this);//listener pour la selection
        }
        return colors;
    }

    private JList getLangue() {
        if (langue == null) {
            langue = new JList(LANG);
            langue.addListSelectionListener(this);//listener pour la selection
        }
        return langue;
    }

    public void actionPerformed(final ActionEvent e) {
        //recup l'item selectione et affichage
        final Object item = getColors().getSelectedItem();
        JOptionPane.showMessageDialog(this, "Item : " + item);
    }

    public void valueChanged(final ListSelectionEvent e) {
        //recup l'item selectione et affichage (en html pour la mise en page ^^)
        final Object[] items = getLangue().getSelectedValues();
        String str = "<html>Items : ";
        for (final Object item : items)
            str += "<li>" + item + "</li>";
        str += "</html>";
        JOptionPane.showMessageDialog(this, str);
    }

}

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
cs_budhax Messages postés 20 Date d'inscription dimanche 18 août 2002 Statut Membre Dernière intervention 6 septembre 2007
22 août 2007 à 22:38
Rejoignez-nous