JAVATM GUI TUTORIAL
|
Rádiógombok
|
JAVATM GUI Tutorial
>
Rádiógombok
  |  
Applet
 
Forráskód
 
Letöltések
|
Bevezetés
A java.awt csomagban nincs külön osztály a rádiógombok számára. Itt a rádiógombokat is a
java.awt.Checkbox osztály valósítja meg. A különbség annyi, hogyha rádiógombokat szeretnénk használni
jelölőnégyzetek helyett, akkor példányosítani kell a java.awt.CheckboxGroup osztályt. Annyi példányt kell
belőle létrehozni, ahány csoportot akarunk. Az egy csoportban lévő rádiógombok közül mindig csak egy lehet kiválasztva.
Az alábbi példa azt mutatja be, hogyan használhatjuk a rádiógombokat. Az alábbi program nagyon egyszerű, a megfelelő rádiógomb kiválasztásával
átszínezzük a jobb oldalon lévő panelt.
Objektumok létrehozása, inicializállása
A rádiógombok példányosítása előtt létre kell hozni a CheckboxGroup példány(oka)t.
A Checkbox osztányak van olyan kontruktora, amelyben meg lehet adni, hogy melyik
csoporthoz tartozzon a rádiógomb. Érdemes az inicializálás során beállítani csoportonként egy rádiógomb
állapotát IGAZ-ra (true), és a hozzá tartozó opciót is alapértelmezettnek.
private Checkbox radio1;
private Checkbox radio2;
private Checkbox radio3;
...
CheckboxGroup cbg = new CheckboxGroup();
// add checkboxes to group
radio1 = new Checkbox( "Red", cbg, true );
radio2 = new Checkbox( "Green", cbg, false );
radio3 = new Checkbox( "Blue", cbg, false );
A példaprogramban a radio1 rádiógombot állítottuk be alapértelmezettként, ezért a
colorPanel színét pirosra kell állítani.
colorPanel.setBackground( Color.RED );
Eseménykezelés
Csakúgy mint a jelölőnégyzetek esetében a rádiógombokhoz is az ItemListener eseményfigyelőt kell adni.
Az osztályban implemementálni kell az ItemListener void itemStateChanged(ItemEvent) metódusát. Itt kell
leírni azt, hogy mi történjen, ha egy rádiógombot kiválasztunk. Azzal nem kell foglalkozni, hogy egy rádiógomb kiválasztásakor
a többi állapotát false-ra állítsuk, mivel a rádiógombok csoport(ok)ban vannak és így ez a funkció automatikus. Jelen példában
a megfelelő rádiógomb kiválasztásakor meg kell változtatni a colorPanel háttérszínét.
// event handling
public void itemStateChanged(ItemEvent e) {
// if radio1 radio button is checked, then the colorPanel's
// background will be red
if ( e.getSource().equals( radio1 ) ) {
colorPanel.setBackground(Color.RED);
}
// if radio2 radio button is checked, then the colorPanel's
// background will be green
if ( e.getSource().equals( radio2 ) ) {
colorPanel.setBackground(Color.GREEN);
}
// if radio3 radio button is checked, then the colorPanel's
// background will be blue
if ( e.getSource().equals( radio3 ) ) {
colorPanel.setBackground(Color.BLUE);
}
}
|
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
public class RadioButtonExampleApplet extends JApplet implements ItemListener {
private Checkbox radio1;
private Checkbox radio2;
private Checkbox radio3;
private JPanel colorPanel;
private JPanel radioPanel;
private JPanel mainPanel;
public void buildGui() {
CheckboxGroup cbg = new CheckboxGroup();
mainPanel = new JPanel();
radioPanel = new JPanel();
colorPanel = new JPanel();
// add checkboxes to group
radio1 = new Checkbox( "Red", cbg, true );
radio2 = new Checkbox( "Green", cbg, false );
radio3 = new Checkbox( "Blue", cbg, false );
this.getContentPane().add(mainPanel);
mainPanel.setLayout(new BoxLayout(mainPanel, BoxLayout.X_AXIS));
radioPanel.setLayout(new BoxLayout(radioPanel, BoxLayout.Y_AXIS));
radioPanel.add(radio1);
radioPanel.add(radio2);
radioPanel.add(radio3);
mainPanel.add( radioPanel );
mainPanel.add( colorPanel );
colorPanel.setBackground( Color.RED );
// add action listener
radio1.addItemListener(this);
radio2.addItemListener(this);
radio3.addItemListener(this);
}
// event handling
public void itemStateChanged(ItemEvent e) {
// if radio1 radio button is checked, then the colorPanel's
// background will be red
if ( e.getSource().equals( radio1 ) ) {
colorPanel.setBackground(Color.RED);
}
// if radio2 radio button is checked, then the colorPanel's
// background will be green
if ( e.getSource().equals( radio2 ) ) {
colorPanel.setBackground(Color.GREEN);
}
// if radio3 radio button is checked, then the colorPanel's
// background will be blue
if ( e.getSource().equals( radio3 ) ) {
colorPanel.setBackground(Color.BLUE);
}
}
public void init() {
buildGui();
repaint();
}
}
Fordítás J2SDK 1.4 vagy magasabb verziójával.
# > javac RadioButtonExampleApplet.java
|
Vissza a lap tetjére
|