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

Forráskód

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

Letöltés

Fordítás J2SDK 1.4 vagy magasabb verziójával.
# > javac RadioButtonExampleApplet.java
Applet: RadioButtonExampleApplet.java
Stand-alone változat: RadioButtonExample.java



Vissza a lap tetjére