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

import javax.swing.border.*;

// Beispiel mit Radiobuttons
// Einfügen der Radiobuttons
// richtige Reihenfolge

// mit     GridBagLayout()  und Schalter

// voll funktionsfähig
// OnClick-Event für alle RadioButton
// OnClick-Event für den Schalter Ok
// wenn 4a angeklickt Exception !!!!!!1

public class RadioButton04 extends JFrame  {
    JButton BnOk;
    JButton BnEsc;

     private int RadioLinks;
     private  int RadioRechts;

  JLabel label;
  JRadioButton rb1;
  JRadioButton rb2;
  JRadioButton rb3;
  JRadioButton rb4;
  JRadioButton rb4a;

  JRadioButton rb5;
  JRadioButton rb6;
  JRadioButton rb7;
  JRadioButton rb8;

  //Frame konstruieren
  public RadioButton04() {
    setSize(400, 300);
    setTitle("Beispiel Radiobutton04 mit Funktion");
    setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
    setGUI();
  }

  void setGUI() {
    JPanel panel1;
    JLabel label1;
    JLabel label2;
    ButtonGroup group1;
    ButtonGroup group2;

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

    label1 = new JLabel("1. Auswahl");
    label2 = new JLabel("2. Auswahl");

    rb1 = new JRadioButton("1. Wahl", false);
    rb2 = new JRadioButton("2. Wahl", false);
    rb3 = new JRadioButton("3. Wahl", false);
    rb4 = new JRadioButton("4. Wahl", false);
    rb4a = new JRadioButton("4a. Wahl", false);

    rb5 = new JRadioButton("A. Wahl", false);
    rb6 = new JRadioButton("B. Wahl", false);
    rb7 = new JRadioButton("C. Wahl", true);
    rb8 = new JRadioButton("D. Wahl", false);

    label1.setFont( new Font("Arial", Font.BOLD, 18)  );
    label2.setFont( new Font("Arial", Font.BOLD, 18)  );
    rb1.setFont( new Font("Arial", Font.BOLD, 18)  );
    rb2.setFont( new Font("Arial", Font.BOLD, 18)  );
    rb3.setFont( new Font("Arial", Font.BOLD, 18)  );
    rb4.setFont( new Font("Arial", Font.BOLD, 18)  );
    rb5.setFont( new Font("Arial", Font.BOLD, 18)  );
    rb6.setFont( new Font("Arial", Font.BOLD, 18)  );
    rb7.setFont( new Font("Arial", Font.BOLD, 18)  );
    rb8.setFont( new Font("Arial", Font.BOLD, 18)  );
    rb4a.setFont( new Font("Arial", Font.BOLD, 18)  );

    group1 = new ButtonGroup();
    group1.add(rb1);
    group1.add(rb2);
    group1.add(rb3);
    group1.add(rb4);
    group1.add(rb4a);

    group2 = new ButtonGroup();
    group2.add(rb5);
    group2.add(rb6);
    group2.add(rb7);
    group2.add(rb8);

    panel1 = new JPanel();
    panel1.setLayout ( new GridLayout(6,2) ); // 5 Zeilen , 2 Spalte
    panel1.add( label1 );
    panel1.add( label2 );

   TitledBorder tb;
    tb = new TitledBorder( LineBorder.createBlackLineBorder(),
            "UNummer");
   panel1.setBorder(tb);


    panel1.add( rb1 );
    panel1.add( rb5 );

    panel1.add( rb2 );
    panel1.add( rb6 );

    panel1.add( rb3 );
    panel1.add( rb7 );

    panel1.add( rb4 );
    panel1.add( rb8 );
    panel1.add( rb4a );


    this.getContentPane().add(panel1, 
             new GridBagConstraints(0, 0, 2, 1, 1.0, 1.0
            ,GridBagConstraints.CENTER, GridBagConstraints.BOTH, 
              new Insets(10,10,20,10), 0, 0));


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

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

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

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

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

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

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

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

      public void actionPerformed(ActionEvent e) {
        rb1_8_click(e);
      }
    });
     // Schalter

    BnOk = new JButton("Ok");  // Label erzeugen
    this.getContentPane().add(BnOk, new GridBagConstraints(0, 1, 1, 1, 1.0, 0.0
            ,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0,0,20,0), 0, 0));


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

    BnEsc = new JButton("Esc");  // Label erzeugen
    this.getContentPane().add(BnEsc, new GridBagConstraints(1, 1, 1, 1, 1.0, 0.0
            ,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0,0,20,0), 0, 0));


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

    BnOk.setEnabled(true);


  } // setGUI


  public int getRadioLinks() {
    return RadioLinks;
  }
  public int getRadioRechts() {
    return RadioRechts;
  }

   // Absturz, wenn rb4a angeklickt
  void BnOk_click(ActionEvent e) {
     RadioLinks = -1;  // nicht gesetzt !!!!!!
     if (rb1.isSelected() ) RadioLinks=1;
     if (rb2.isSelected() ) RadioLinks=2;
     if (rb3.isSelected() ) RadioLinks=3;
     if (rb4.isSelected() ) RadioLinks=4;

     if (RadioLinks==-1){
       throw new IllegalArgumentException
        ("Keine linke RadioButton gesetzt");
     }
     System.out.println("gesetzt ist die linke "+Integer.toString(RadioLinks)+". Radiobuttons");

     RadioRechts = -1;  // nicht gesetzt !!!!!!
     if (rb5.isSelected() ) RadioRechts=1;
     if (rb6.isSelected() ) RadioRechts=2;
     if (rb7.isSelected() ) RadioRechts=3;
     if (rb8.isSelected() ) RadioRechts=4;

     System.out.println("gesetzt ist rechts die "+Integer.toString(RadioRechts)+". Radiobuttons");

     if (RadioRechts==-1){
       throw new IllegalArgumentException("Keine rechte RadioButton gesetzt");
     }

  }  // Bn Ok Click


  void rb1_8_click(ActionEvent e) {
    System.out.println("hier in Click 1 bis 8");
    if (e.getSource() == rb1 ) {
       BnOk.setEnabled(false);
    }
    if (e.getSource() == rb2 ) {
       BnOk.setEnabled(true);
    }
    if (e.getSource() == rb3 ) {
       System.out.println("RadioSchalter 3 angeklickt");
    }
    if (e.getSource() == rb4 ) {
       System.out.println("RadioSchalter 4 angeklickt");
    }
    if (e.getSource() == rb5 ) {
       System.out.println("RadioSchalter 5 angeklickt");
    }
    if (e.getSource() == rb6 ) {
       System.out.println("RadioSchalter 6 angeklickt");
    }
    if (e.getSource() == rb7 ) {
       System.out.println("RadioSchalter 7 angeklickt");
    }
    if (e.getSource() == rb8 ) {
       System.out.println("RadioSchalter 8 angeklickt");
    }
  }


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




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


}




