/*
Esempio che mostra vari tipi di bottoni.
Una finestra top-level (frame) con 3 bottoni di comando,
3 bottoni a due stati non mutuamente esclusivi (check box),
3 bottoni a due stati mutuamente esclusivi (radio button).
Il layout manager e' una griglia 4 x 3 che ospita i 9
bottoni e un'etichetta che spiega il tipo di bottone.
*/

import java.awt.*;

public class ExButtons extends Frame
{
  static final String names[] = {"uno", "due", "tre"};
  Button buttons[]; /* i 3 bottoni di comando */
  Checkbox checks[]; /* i 3 bottoni check box */
  Checkbox radios[]; /* i 3 bottoni radio */  
  CheckboxGroup cbg; /* gruppo di bottoni radio */
  Label labels[]; /* le etichette per i titoli */

  public ExButtons()
  {
    int i; /* contatore per cicli for */

    /* crea la finestra e le assegna layout manager */
    setTitle("Buttons");
    setLayout(new GridLayout(4,3));

    /* crea i 3 bottoni di comando */
    buttons = new Button[3];
    for (i=0; i<3; i++) buttons[i] = new Button(names[i]);

    /* crea i 3 bottoni check box */
    checks = new Checkbox[3];
    for (i=0; i<3; i++) checks[i] = new Checkbox(names[i]);

    /* crea i 3 bottoni radio */
    cbg = new CheckboxGroup();
    radios = new Checkbox[3];
    for (i=0; i<3; i++)
    {  if (i==0) radios[i] = new Checkbox(names[i],cbg,true);
       else radios[i] = new Checkbox(names[i],cbg,false);
    }

    /* crea le etichette dei titoli */
    labels = new Label[3];
    labels[0] = new Label("Command",Label.CENTER);
    labels[1] = new Label("Check",Label.CENTER);
    labels[2] = new Label("Radio",Label.CENTER);

    /* aggiunge le 3 etichette e i 9 bottoni dentro la finestra */
    for (i=0; i<3; i++) add(labels[i]);
    for (i=0; i<3; i++)
    {
       add(buttons[i]);
       add(checks[i]);
       add(radios[i]);
    }

    /* impacchetta la finestra */
    pack();
  }

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

