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

/**
 * Ikkunaluokka.
 */
public class CheckboxFrame extends JFrame
{
  private JRadioButton radioButton1 = new JRadioButton();
  private JRadioButton radioButton2 = new JRadioButton();
  private JButton radioButton = new JButton();
  private JCheckBox checkbox1 = new JCheckBox();
  private JCheckBox checkbox2 = new JCheckBox();
  private JButton checkboxButton = new JButton();
  private JLabel label1 = new JLabel();
  private JLabel label2 = new JLabel();
  private JLabel label3 = new JLabel();

  /**
   * Konstruktori.
   */
  public CheckboxFrame()
  {
    JPanel panel = new JPanel();
    panel.setLayout( new GridBagLayout() );

    JPanel contentPane = ( JPanel ) getContentPane();
    Border border = BorderFactory.createEtchedBorder( Color.white, new Color( 134, 134, 134 ) );
    contentPane.setLayout( new GridBagLayout() );
    setResizable( false );
    setSize( new Dimension( 400, 300 ) );
    setTitle( "CheckBox & RadioButton" );
    setDefaultCloseOperation( WindowConstants.DISPOSE_ON_CLOSE );

    radioButton1.setSelected( true );
    radioButton1.setText( "RadioButton1" );
    radioButton2.setText( "RadioButton2" );
    radioButton.setText( "Radio" );
    radioButton.addActionListener( new java.awt.event.ActionListener()
    {
      public void actionPerformed( ActionEvent e )
      {
        radioButton_actionPerformed( e );
      }
    } );

    checkbox1.setText( "CheckBox1" );
    checkbox2.setText( "CheckBox2" );
    checkboxButton.setText( "Check" );
    checkboxButton.addActionListener( new java.awt.event.ActionListener()
    {
      public void actionPerformed( ActionEvent e )
      {
        checkboxButton_actionPerformed( e );
      }
    } );

    label1.setBorder( border );
    label1.setText( " " );
    label2.setBorder( border );
    label2.setText( " " );
    label3.setBorder( border );
    label3.setText( " " );

    contentPane.add( panel, new GridBagConstraints( 1, 0, 1, 1, 1.0, 1.0
        , GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets( 0, 2, 0, 0 ), 0, 201 ) );
    panel.add( radioButton1, new GridBagConstraints( 1, 0, 1, 1, 0.0, 0.0
        , GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets( 0, 0, 0, 0 ), 0, 0 ) );
    panel.add( radioButton2, new GridBagConstraints( 1, 1, 1, 1, 0.0, 0.0
        , GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets( 0, 40, 0, 40 ), 0, 0 ) );
    panel.add( radioButton, new GridBagConstraints( 1, 2, 1, 1, 0.0, 0.0
        , GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets( 20, 0, 0, 0 ), 0, 1 ) );
    panel.add( checkbox1, new GridBagConstraints( 0, 0, 1, 1, 0.0, 0.0
                                                  , GridBagConstraints.CENTER, GridBagConstraints.NONE,
                                                  new Insets( 0, 0, 0, 0 ), 0, 0 ) );
    panel.add( checkbox2, new GridBagConstraints( 0, 1, 1, 1, 0.0, 0.0
                                                  , GridBagConstraints.CENTER, GridBagConstraints.NONE,
                                                  new Insets( 0, 40, 0, 40 ), 0, 0 ) );
    panel.add( checkboxButton, new GridBagConstraints( 0, 2, 1, 1, 0.0, 0.0
        , GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets( 20, 0, 0, 0 ), 0, 0 ) );
    panel.add( label1, new GridBagConstraints( 0, 3, 1, 1, 0.0, 0.0
                                               , GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL,
                                               new Insets( 10, 0, 0, 0 ), 80, 0 ) );
    panel.add( label2, new GridBagConstraints( 0, 4, 1, 1, 0.0, 0.0
                                               , GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL,
                                               new Insets( 10, 0, 0, 0 ), 0, 0 ) );
    panel.add( label3, new GridBagConstraints( 1, 4, 1, 1, 0.0, 0.0
                                               , GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL,
                                               new Insets( 10, 0, 0, 0 ), 0, 0 ) );

    ButtonGroup buttonGroup = new ButtonGroup();
    buttonGroup.add( radioButton1 );
    buttonGroup.add( radioButton2 );
  }

  /**
   * Radiopainikkeiden tutkinen.
   * @param e tapahtuman tarkempi kuvaus
   */
  void radioButton_actionPerformed( ActionEvent e )
  {
    if ( radioButton1.isSelected() )
      label3.setText( "Radio1 päällä" );
    else
      label3.setText( "Radio2 päällä" );
  }

  /**
   * Checkboxien tutkinen.
   * @param e tapahtuman tarkempi kuvaus
   */
  void checkboxButton_actionPerformed( ActionEvent e )
  {
    if ( checkbox1.isSelected() )
      label1.setText( "Check1 päällä" );
    else
      label1.setText( "Check1 pois" );

    if ( checkbox2.isSelected() )
      label2.setText( "Check2 päällä" );
    else
      label2.setText( "Check2 pois" );
  }

}
