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

import java.util.Vector;

// Beispiel mit Vector
// mit Klasse CPruefung
// Vorlage

public class Liste05 extends JFrame {

   JList jlist;
   Vector liste;

  //Frame konstruieren
  public Liste05() {
    setSize(420, 320);
    setTitle("liste Liste05");
    setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
    setGUI();
  }

  private void setGUI() {
     JButton BnOk;  // Aktionsschalter Links
     JButton BnESC;  // Aktionsschalter Abbruch
     JScrollPane scroll;

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

      // Liste
    setData();  // create + insert
    jlist = new JList(liste);
    jlist.setSelectionMode( ListSelectionModel.MULTIPLE_INTERVAL_SELECTION );

    scroll = new JScrollPane(jlist);
    this.getContentPane().add(scroll, 
             new GridBagConstraints(0, 0, 4, 1, 1.0, 1.0
            ,GridBagConstraints.CENTER, GridBagConstraints.BOTH, 
             new Insets(20,20,0,20), 0, 0));
    /*
    SINGLE_SELECTION
    SINGLE_INTERVAL_SELECTION
    MULTIPLE_INTERVAL_SELECTION
    */

    JPanel panelBn = new JPanel();
    panelBn.setLayout( new FlowLayout() );
    BnOk = new JButton("Ok");  // Label erzeugen
    BnESC = new JButton("Abbruch");  // Label erzeugen
    panelBn.add(BnOk);
    panelBn.add(BnESC);
    this.getContentPane().add(panelBn, 
             new GridBagConstraints(0, 1, 4, 1, 1.0, 0.0
            ,GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, 
             new Insets(20,0,20,0), 0, 0));

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


    BnESC.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(ActionEvent e) {
        BnESC_actionPerformed(e);
      }
    });
    JButton bn1=new JButton("1");  // Aktionsschalter Links
    JButton bn2=new JButton("2");  // Aktionsschalter Links
    JButton bn3=new JButton("3");  // Aktionsschalter Links
    JButton bn4=new JButton("4");  // Aktionsschalter Links
    this.getContentPane().add(bn1, 
             new GridBagConstraints(0, 2, 1, 1, 1.0, 0.0
            ,GridBagConstraints.CENTER, GridBagConstraints.NONE, 
            new Insets(20,0,20,0), 0, 0));
    this.getContentPane().add(bn2, 
             new GridBagConstraints(1, 2, 1, 1, 1.0, 0.0
            ,GridBagConstraints.CENTER, GridBagConstraints.NONE, 
             new Insets(20,0,20,0), 0, 0));
    this.getContentPane().add(bn3, 
             new GridBagConstraints(2, 2, 1, 1, 1.0, 0.0
            ,GridBagConstraints.CENTER, GridBagConstraints.NONE, 
             new Insets(20,0,20,0), 0, 0));
    this.getContentPane().add(bn4, 
             new GridBagConstraints(3, 2, 1, 1, 1.0, 0.0
            ,GridBagConstraints.CENTER, GridBagConstraints.NONE, 
             new Insets(20,0,20,0), 0, 0));

    bn1.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(ActionEvent e) {
        bn1_click();
      }
    });
    bn2.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(ActionEvent e) {
        bn2_click();
      }
    });


    bn3.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(ActionEvent e) {
        bn3_click();
      }
    });
    bn4.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(ActionEvent e) {
        bn4_click();
      }
    });

    jlist.setFont( new Font("Arial", Font.BOLD,18)  );
    BnOk.setFont( new Font("Arial", Font.BOLD,18)  );
    BnESC.setFont( new Font("Arial", Font.BOLD,18)  );
    bn1.setFont( new Font("Arial", Font.BOLD,18)  );
    bn2.setFont( new Font("Arial", Font.BOLD,18)  );
    bn3.setFont( new Font("Arial", Font.BOLD,18)  );
    bn4.setFont( new Font("Arial", Font.BOLD,18)  );

  } // create

  void bn1_click() {
    // 1. Ausgabe  nur Prüfung
    jlist.updateUI();
  }
  void bn2_click() {
    // 2. Ausgabe  nur Note
    jlist.updateUI();
  }

  void bn3_click() {
    // 3. Ausgabe  Prüfung und Note
    jlist.updateUI();
  }
  void bn4_click() {
    // 4. Ausgabe Note und Prüfung
    jlist.updateUI();
  }

   // Ausgabe der selektierten Elemente
  void BnOK_click(ActionEvent e) {
     CPruefung Result;
     Object[] elements = jlist.getSelectedValues();

     if (elements.length==0) {
       System.out.println("Kein Eintrag selektiert");
     }
     else {
       for (int i=0; i<elements.length; i++) {
          // Casting
         Result = (CPruefung) elements[i];  // Typecasting
         System.out.println( Result.toString() );
       }
       System.out.println("");
       System.out.println("");
     }
  }


  void BnESC_actionPerformed(ActionEvent e) {
      System.exit(0);
  }


     // Eintragen
    private void setData() {
      CPruefung prf;

      liste = new Vector();

      prf = new CPruefung( "Grundlagen der Informatik 1", 1.3);
      liste.add(prf);

      prf = new CPruefung( "Grundlagen der Informatik 2", 2.3);
      liste.add(prf);

      prf = new CPruefung( "Grundlagen der Informatik 3", 1.7);
      liste.add(prf);

      prf = new CPruefung( "XXMathematik 1", 2.3);
      liste.insertElementAt(prf,0);

      prf = new CPruefung( "Mathematik 2", 1.0);
      liste.add(prf);

      prf = new CPruefung( "Mathematik 3", 2.0);
      liste.add(prf);

      prf = new CPruefung( "Physik 1", 2.3);
      liste.add(prf);

      prf = new CPruefung( "Physik 2", 3.3);
      liste.add(prf);


      prf = new CPruefung( "Elektrotechnik 1", 3.0);
      liste.add(prf);

      prf = new CPruefung( "Elektrotechnik 2", 5.0);
      liste.add(prf);

    }  // setData



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


}




class CPruefung {
    private String _Pruefung;
    private double _Note;

    public CPruefung() {
    }

    public CPruefung( String Pruefung, double Note) {
      _Pruefung = Pruefung;
      _Note = Note;
    }


   public String getPruefung() {
     return _Pruefung;
   }
   public void setPruefung(String Pruefung) {
     _Pruefung = Pruefung;
   }


   public Double getNote() {
     return new Double (_Note);
   }
   public void setNote(double Note) {
     _Note = Note;
   }



}  // CPruefungen









/*
  public String toString() {
     return "Prüfung: "+_Pruefung+"    Note: "+_Note;
   }

public String toString() {
      switch (typ) {
        case 0: return "Prüfung: "+_Pruefung;
        case 1: return "Note: "+_Note;
        case 2: return "Prüfung: "+_Pruefung+"    Note: "+_Note;
        case 3: return "Note: "+_Note+"      Prüfung: "+_Pruefung;
        default: return "";
      }
   }
*/







