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

import java.util.Vector;

// JFrame mit zwei ComboBoxen
// Haupt und NebenBox

/*
Object getSelectedItem()
Object[] getSelectedObjects()
*/

public class ComboBox2 extends JFrame {

  JComboBox combo1;

  JComboBox combo2;

  Vector liste1, liste2;

  //Frame konstruieren
  public ComboBox2() {
    setSize(700, 350);
    setTitle("JComboBox 2");
    setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
    setGUI();
  }


 private void setGUI() {
    JButton bn1;
    JLabel label1, label2;
    JButton BnOk;
    JButton BnEsc;


    this.getContentPane().setLayout ( new GridBagLayout() );

    label1 = new JLabel("Fachbereiche");
    label1.setFont( new Font("Arial", Font.BOLD,32));

    liste1 = new Vector();

    liste1.add( "AI");
    liste1.add( "VW");
    liste1.add( "W");
    //liste1.add( "Medizin");

    combo1 = new JComboBox(liste1);

    combo1.setSelectedIndex( 0 );
    combo1.setFont( new Font("Arial", Font.BOLD,32));

    this.getContentPane().add(label1, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0
            ,GridBagConstraints.WEST, GridBagConstraints.NONE,
            new Insets(10,10,10, 30), 0, 0));

    this.getContentPane().add(combo1, new GridBagConstraints(0, 1, 1, 1, 1.0, 0.0
            ,GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL,
            new Insets(10,10,10,30), 0, 0));

    combo1.addActionListener(new java.awt.event.ActionListener() {

      public void actionPerformed(ActionEvent e) {
        combo1_click();
      }
    });


    label2 = new JLabel("Studiengänge");
    liste2 = new Vector();
    label2.setFont( new Font("Arial", Font.BOLD,32));

    liste2.add( "ATI");
    liste2.add( "IB");
    liste2.add( "WING");
    liste2.add( "MI");
    liste2.add( "WI");
    combo2 = new JComboBox(liste2);
    combo2.setSelectedIndex( 0 );
    combo2.setFont( new Font("Arial", Font.BOLD,32));

    this.getContentPane().add(label2, new GridBagConstraints(1, 0, 1, 1, 0.0, 0.0
            ,GridBagConstraints.WEST, GridBagConstraints.NONE,
            new Insets(10,10,10,10), 0, 0));

    this.getContentPane().add(combo2, new GridBagConstraints(1, 1, 1, 1, 1.0, 0.0
            ,GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL,
            new Insets(10,10,10,10), 0, 0));



    //   Schalter unten

    JPanel panel = new JPanel();

    panel.setLayout( new FlowLayout() );

    BnOk = new JButton("Ok");  // Label erzeugen
    panel.add(BnOk);
    BnOk.setFont( new Font("Arial", Font.BOLD,32));


    BnOk.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(ActionEvent e) {
        BnOk_click(e);
      }
    });

    BnEsc = new JButton("Esc");  // Label erzeugen
    panel.add(BnEsc);
    BnEsc.setFont( new Font("Arial", Font.BOLD,32));



    BnEsc.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(ActionEvent e) {
        BnEsc_click(e);
      }
    });

    this.getContentPane().add(panel, new GridBagConstraints(0, 3, 2, 1, 1.0, 0.0
            ,GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL,
            new Insets(30,0,10,0), 0, 0));

  } // setGUI


  private void combo1_click() {
    int i = combo1.getSelectedIndex();
      // Wert selektiert,   dann  -1 !!
    if (i >= 0)  {
       liste2.clear();  // Alte Daten werden geloescht
       switch (i) {
         case 0:  // FB AI
                  liste2.add( "II");
                  liste2.add( "IB");
                  liste2.add( "WI");
                  liste2.add( "Wing");
                  break;
         case 1:  // FB VW
                  liste2.add( "Verwaltungsrecht");
                  liste2.add( "Öffentliches Recht");
                  liste2.add( "Verwaltungs-Informatik");
                  break;
         case 2:  // FB W
                  liste2.add( "BWL");
                  liste2.add( "VWL");
                  liste2.add( "Marketing");
                  liste2.add( "Tourismus");
                  break;
         default: throw new IllegalArgumentException("falscher case-fall");
       } // case

       // Falls es nicht klappt, dann setListData verwenden
       //    dann wird der Vektor neugeschrieben
       // combo2.setListData( liste2 );
       combo2.updateUI();
       combo2.setSelectedIndex( 0 );
    }
  }


  void BnOk_click(ActionEvent e) {
     String sRes;
     int i;

     i = combo1.getSelectedIndex();
     sRes = (String) combo1.getSelectedItem();

    System.out.println("Der "+Integer.toString(i)+" Eintrag wurde gewaehlt");
    System.out.println("Ergebnis: "+sRes);
     // rechte ComboBox
     i = combo2.getSelectedIndex();
     sRes = (String) combo2.getSelectedItem();
    System.out.println("Der "+Integer.toString(i)+" Eintrag wurde gewaehlt");
    System.out.println("Ergebnis: "+sRes);
    System.out.println("");
    System.out.println("");
    System.out.println("");
  }  // Bn Ok Click



  void cbBox1_actionPerformed(ActionEvent e) {
    System.out.println("Änderung in der Markierung der ComboBox");
  }


  void BnEsc_click(ActionEvent e) {
      System.exit(0);
  }  // Bn ESC Click


  public static void main(String[] args) {
    ComboBox2 frame = new ComboBox2();
    frame.setVisible(true);
  }



}
