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

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

// mit     GridBagLayout()  und Schalter

// voll funktionsfähig
// Aber mit Array

public class RadioButton06 extends JFrame {
  Box box1;
  JLabel label;


  JRadioButton [] rb_links;
  JRadioButton [] rb_rechts;


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

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

    JButton BnOk;
    JButton BnEsc;

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

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

    rb_links = new JRadioButton[4];

    // zwei Möglichkeiten zur Initialisierung

    int k=0;  // Schalter !!!!!!!!
    if (k==0) {
      for (int i=0; i<4; i++) {
        rb_links[i] = new JRadioButton( Integer.toString(i+1)+". Wahl", false);
      }
    }
    else {
      rb_links[0] = new JRadioButton("1. Wahl", false);
      rb_links[1] = new JRadioButton("2. Wahl", true);
      rb_links[2] = new JRadioButton("3. Wahl", false);
      rb_links[3] = new JRadioButton("4. Wahl", false);
    }

    rb_rechts = new JRadioButton[4];

    rb_rechts[0] = new JRadioButton("A. Wahl", false);
    rb_rechts[1] = new JRadioButton("B. Wahl", false);
    rb_rechts[2] = new JRadioButton("C. Wahl", true);
    rb_rechts[3] = new JRadioButton("D. Wahl", false);

    int ii=1;
    if (ii==0) return;

    group1 = new ButtonGroup();
    for (JRadioButton radio : rb_links ) {
       group1.add( radio );
    }

    group2 = new ButtonGroup();
    for (int i=0; i<rb_rechts.length; i++) {
       group2.add( rb_rechts[i] );
    }

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

    for (int i=0; i<4; i++) {
      panel1.add( rb_links[i] );
      panel1.add( rb_rechts[i] );
    }

    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));


     // 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(e);
      }
    });



  } // setGUI


  void BnOk_click(ActionEvent e) {
     int RadioLinks;
     int RadioRechts;

     RadioLinks = -1;  // nicht gesetzt !!!!!!
     for (int i=0; i<rb_links.length; i++) {
        if ( rb_links[i].isSelected() ) RadioLinks=i+1;
     }
     if (RadioLinks==-1){
       throw new IllegalArgumentException("Keine linke RadioButton gesetzt");
     }
     System.out.println("gesetzt ist linke die "+Integer.toString(RadioLinks)+". Radiobuttons");

     RadioRechts = -1;  // nicht gesetzt !!!!!!
     for (int i=0; i<4; i++) {
        if ( rb_rechts[i].isSelected() ) RadioRechts=i+1;
     }

     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 BnEsc_click(ActionEvent e) {
      System.exit(0);
  }  // Bn ESC Click




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


}




