Java JComboBox Beispiel

Posted: Juli 28th, 2009 | Filed under: Programmieren | Tags: , , , , , , , | 21 Comments »

Heute möchte ich zeigen wie ihr ein Dropdownmenü in Java realisieren könnt. Diese Dropdownkomponente nennt sich JComboBox. Die Werte der JComboBox können über einen DefaultComboBoxModel definiert werden. Das DefaultComboBoxModel kann über einen Vector die Werte des DropDownMenüs erhalten. Dabei können nicht nur Strings sondern auch andere Objekte in diesen Vector gelegt werden. Die toString() – Methode des jeweiligen Objektes gibt den Anzeigewert in der JComboBox an. Um Interaktionen der JComboBox zu verarbeiten wird der ListDataListener benötigt. Bei meinem Beispielprogramm werden Strings in den Vector gelegt.

Beim drücken auf den „wechseln“ – Button wird das ComboBoxModel ausgetauscht und die Werte ändern sich!

JComboBox Beispiel Programm

JComboBox Beispiel Programm

Quelltext

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Vector;

import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.event.ListDataEvent;
import javax.swing.event.ListDataListener;


public class JComboBoxBeispiel implements ActionListener, ListDataListener {
  
  private Container mainContainer;
  private JFrame frame;
  
  private JComboBox dropDown;
  private DefaultComboBoxModel comboBoxModel1;
  private DefaultComboBoxModel comboBoxModel2;
  
  private JButton wechseln;

  public JComboBoxBeispiel(){
    
    frame = new JFrame();
    mainContainer = frame.getContentPane();
    frame.setLayout(new BorderLayout());

    wechseln = new JButton("wechseln");
    wechseln.addActionListener(this);

    // Combobox instanziieren
    dropDown = new JComboBox();
    
    // ComboBoxModel erzeugen
    // Vector erstellen mit Beispielwerten
    Vector<String> tiere = new Vector<String>();
    tiere.add("Hund");
    tiere.add("Katze");
    tiere.add("Maus");
    Vector<String> autos = new Vector<String>();
    autos.add("BMW 3er");
    autos.add("VW-Käfer");
    autos.add("Merceds SLK");    
    
    comboBoxModel1 = new DefaultComboBoxModel(tiere);
    comboBoxModel1.addListDataListener(this);
    comboBoxModel2 = new DefaultComboBoxModel(autos);
    comboBoxModel2.addListDataListener(this);
    
    // ComboBoxModel setzen
    dropDown.setModel(comboBoxModel1);
    
    mainContainer.add(wechseln, BorderLayout.NORTH);
    
    mainContainer.add(dropDown);
    
    frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
    frame.pack();
    frame.setTitle("JComboBox Beispiel");
    frame.setVisible(true);

  }
  
  public static void main(String[] args) {
    new JComboBoxBeispiel();
  }

  public void actionPerformed(ActionEvent arg0) {
    if (arg0.getSource() == wechseln){
      if (dropDown.getModel() == comboBoxModel1){
        dropDown.setModel(comboBoxModel2);
      }else{
        dropDown.setModel(comboBoxModel1);
      }
    }
  }

  public void contentsChanged(ListDataEvent arg0) {
    System.out.println(dropDown.getModel().getSelectedItem());
  }

  public void intervalAdded(ListDataEvent arg0) {
    // TODO Auto-generated method stub
  }

  public void intervalRemoved(ListDataEvent arg0) {
    // TODO Auto-generated method stub
  }
}