tschanne: ComboBox

Kann ich bei einer JAVA-Combo-Box bei addItem nicht nur einen String, sondern auch noch einen Value hinzufügen
(wie bei HTML <option value></option>-Tag)
wenn nein, mit welcher funktion ist das machbar?

und wie kann ich dann denn value ansprechen? zbs. um einer Variablen zuzuweisen.

vielen dank

mfg tschanne

  1. Hallo,

    Kann ich bei einer JAVA-Combo-Box bei addItem nicht nur einen String, sondern auch noch einen Value hinzufügen

    Du kannst einer JComboBox mit .addItem(Object anObject) überhaupt _nur_ Objekte hinzufügen. Natürlich können das auch spezielle, von Dir erstellte, Objekte sein.

    Beispiel:

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

    public class MyJComboBox extends JFrame implements ActionListener{

    public MyJComboBox() {
            super("JList Sampler Demo");
            initList();
        }

    public void initList() {
            JComboBox jcbb = new JComboBox();
            jcbb.addItem(new TextValuePair("text1", "value1"));
            jcbb.addItem(new TextValuePair("text2", "value2"));
            jcbb.addItem(new TextValuePair("text3", "value3"));
            jcbb.addActionListener(this);

    Container cp = this.getContentPane();
            cp.setLayout(new FlowLayout());
            cp.add(jcbb);
        }

    public void actionPerformed(ActionEvent e) {
            JComboBox jcbb = (JComboBox)e.getSource();
            String text = ((TextValuePair)jcbb.getSelectedItem()).text;
            String value = ((TextValuePair)jcbb.getSelectedItem()).value;
            System.out.println(text + " " + value);
        }

    private final class TextValuePair {
            final String text;
            final String value;

    TextValuePair(String text, String value) {
                this.text = text;
                this.value = value;
            }
            public String toString() {
                return this.text;
            }
        }

    public static void main(String[] args) {
            JFrame frame = new MyJComboBox();
            frame.addWindowListener(new WindowAdapter() {
                public void windowClosing(WindowEvent e) {
                    System.exit(0);
                }
            });
            frame.pack();
            frame.setSize(200,100);
            frame.setVisible(true);
        }
    }

    viele Grüße

    Axel

    1. Hammergeil :)

      vielen dank für den Code
      so klappts ohne prob

      mfg
      tschanne

    2. aber wie kann ich jetzt auf den selektierten value zugreifen??

      1. Hallo,

        aber wie kann ich jetzt auf den selektierten value zugreifen??

        Genau das passiert doch hier:
        ...
            public void actionPerformed(ActionEvent e) {
                JComboBox jcbb = (JComboBox)e.getSource();
                String text = ((TextValuePair)jcbb.getSelectedItem()).text;
                String value = ((TextValuePair)jcbb.getSelectedItem()).value;
                System.out.println(text + " " + value);
            }
        ...

        viele Grüße

        Axel

        1. :)
          ahso :9
          vielen dank, bin halt net so der java-hirsch ;)....

          mfg tschanne