RadioButton

AWT

In dit voorbeeld wordt een radiobutton gemaakt door Checkboxes in een CheckboxGroup onder te brengen.

Applet

H8P4.jpg (11594 bytes)

Programmacode

// AwtRadioButton.java
// Maak radiobuttons met CheckboxGroup en Checkbox.
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;

public class AwtRadioButton extends Applet implements ItemListener {
   private TextField tekstField = new TextField( "Hallo, allemaal", 30 );
   private Font font;

   private CheckboxGroup radio;
   private Checkbox radioVet, radioCursief, radioNormaal;

   public void init()   {
      // alloceer checkbox group en de radiobuttons
      radio        = new CheckboxGroup(); 
      radioNormaal = new Checkbox("normaal", radio, true );
      radioCursief = new Checkbox("cursief", radio, false);  
      radioVet     = new Checkbox("vet", radio, false );
      // voegt toe aan de LayoutManager 
      add( tekstField );   
      add( radioNormaal);
      add( radioCursief);  
      add( radioVet );

      // aanmelden bij de ItemListener; wordt afgehandeld in itemStateChanged
      radioNormaal.addItemListener(this);
      radioCursief.addItemListener(this);  
      radioVet.addItemListener(this);
   }

   public void itemStateChanged( ItemEvent e )  {
      int stijl;
      // filter Checkbox events
      if ( e.getSource() instanceof Checkbox) {

         // test toestand van radiobuttons
         if ( radioNormaal.getState() == true  )  
            stijl = Font.PLAIN;
         else if ( radioCursief.getState() == true )
            stijl = Font.ITALIC;
         else
            stijl = Font.BOLD;  
 
         // wijzig het lettertype
	font = new Font( "TimesRoman", stijl, 14 );
	tekstField.setFont( font );
      }
   }
}

Uitleg

In Java bestaan er geen apart radiobuttons. Het zijn "gewone" Checkboxen die zijn samengevoegd in een CheckboxGroup. Door ze onder te brengen in deze group veranderd het uiterlijk in een radiobutton.

init methode
Eerst wordt een CheckboxGroup gealloceerd, deze wordt als parameter meegegeven aan de constructor van de drie Checkboxen radioNormal, radioCursief en radioVet, die de drie verschillende stijlen van een lettertype vertegenwoordigen.

De checkboxen en niet de CheckboxGroup, worden aangemeld bij de LayoutManager en de ItemListener.

public void init()   {
      // alloceer checkbox group en de radiobuttons
      radio        = new CheckboxGroup(); 
      radioNormaal = new Checkbox("normaal", radio, true );
      radioCursief = new Checkbox("cursief", radio, false);  
      radioVet     = new Checkbox("vet", radio, false );
      // voegt toe aan de LayoutManager 
      add( tekstField );   
      add( radioNormaal);
      add( radioCursief);  
      add( radioVet );
      // aanmelden bij de ItemListener; wordt afgehandeld in itemStateChanged
      radioNormaal.addItemListener(this);
      radioCursief.addItemListener(this);  
      radioVet.addItemListener(this);
   }

itemStateChange methode
Nadat is gecontroleerd of het event van de Checkbox afkomstig is, wordt gecontroleerd welke van de drie radiobuttons is ingedrukt. Het kan altijd maar één van de drie zijn - een eigenschap van radiobuttons-. Is een radiobutton geactiveerd dan wordt de bijbehorende waarde toegekend aan de variabele stijl. Met de waarde van stijl wordt een nieuw Font gealloceerd en de tekst verschijnt in de aangeklikte stijl in het tekstField.

   public void itemStateChanged( ItemEvent e )  {
      int stijl;
      if ( e.getSource() instanceof Checkbox) {
         if ( radioNormaal.getState() == true  )  
            stijl = Font.PLAIN;
         else if ( radioCursief.getState() == true )
            stijl = Font.ITALIC;
         else
            stijl = Font.BOLD;  

	font = new Font( "TimesRoman", stijl, 14 );
	tekstField.setFont( font );
      }
   }

 


De CheckboxGroup klasse

public class CheckboxGroup extends Object
   
public CheckboxGroup(); Constructor
public Checkbox getSelectedCheckbox(); haal de geselecteerde checkbox
public void setSelectedCheckbox(Checkbox box); selecteer een checkbox

De Checkbox klasse

public class Checkbox extends Component
public Checkbox();
public Checkbox(String label);
public Checkbox(String label, CheckboxGroup group, boolean state);
Constructors
   
public CheckboxGroup getCheckboxGroup(); haal de groep
public void setCheckboxGroup(CheckboxGroup g); stel de groep in
   
public String getLabel(); haal de tekst
public void setLabel(String label); stel de tekst in
   
public boolean getState(); haal de status
public void setState(boolean state); stel de status in
copyright ® Little World 1997