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

Messages postés
20
Date d'inscription
dimanche 18 août 2002
Statut
Membre
Dernière intervention
6 septembre 2007
-
Messages postés
20
Date d'inscription
dimanche 18 août 2002
Statut
Membre
Dernière intervention
6 septembre 2007
-
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

Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
133
ben tout dépend ce que tu utilise comme techno : mais en JSP c'est comme en HTML !
Messages postés
20
Date d'inscription
dimanche 18 août 2002
Statut
Membre
Dernière intervention
6 septembre 2007

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);

    }

}
Messages postés
5367
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
27 janvier 2022
111
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
Messages postés
20
Date d'inscription
dimanche 18 août 2002
Statut
Membre
Dernière intervention
6 septembre 2007