JAVATM GUI TUTORIAL

Jelölőnégyzet

JAVATM GUI Tutorial > Jelölőnégyzet   |   Applet   Forráskód   Letöltések

Bevezetés

Jelölőnégyzeteket JAVATM-ban a java.awt.Checkbox osztály példányosításával hozhatunk létre. A jelölőnégyzetek két állapotot vehetnek fel. Az alábbi példa egy olyan felhasználását mutatja be a jelölőnégyzeteknek minek során egy felsorolás elemeinek száma attól függően nő vagy csökken, hogy hány jelölő négyzet van bekapcsolva.



Objektumok létrehozása, inicializállása

A konstruktorban megadhatjuk a jelölőnégyzet melletti szöveget, amely arra vonatkozik, hogy az adott jelölő négyzettel milyen opció kapcsolható be vagy ki a programban. A konstruktorban meg lehet adni a jelölő négyzetek kezeti állapotát, később azonban ez változtatható. Természetesen a jelölőnégyzetek is lehetnek aktív vagy inaktív állapotban. A példában a jelölőnágyzetek egy-egy autómárkát képviselnek, bekapcsolt állapotban az autómárka megjelenik a felsorolásban.

private Checkbox checkbox1; private Checkbox checkbox2; private Checkbox checkbox3; private Checkbox checkbox4; ... checkbox1 = new Checkbox( "Audi", false ); checkbox2 = new Checkbox( "Volkswagen", false ); checkbox3 = new Checkbox( "Jaguar", false ); checkbox4 = new Checkbox( "Mercedes", false );

A jelölőnégyzetek állapotát a void setState(boolean) metódussal állíthatjuk be, állapotukat a boolean getState() függvénnyel kérdezhetjük le.

Eseménykezelés

A jelölőnégyzetekhez is rendelhetünk eseménykezelést, azonban előfordulhat az is, hogy a jelölő négyzetekkel csak egy opció logikai (Igaz/Hamis) állapotát szeretnénk jelképezni. A java.awt.Checkbox objektumhoz hozzá lehet rendelni egy ItemListener-t. Abban az osztályban, ahol az eseményeket szeretnénk lekezelni, implementálni kell a void itemStateChanged(ItemEvent) metódust. itt kell leírni azt, hogy mi történjen akkor, ha egy jelölőnégyzet állapota megváltozik.
Jelen példában kezdetben üres sztringhez hozzáfűzzük azokat az automárkákat, amelyek be vannak jelölve. Mielőtt egy márkanevet hozzáfűzünk a listához, ellenőrizni kell, hogy az az első-e a listában, ha nem, akkor egy vesszőt és egy szóközt is is hozzá kell füzni a márkanév előtt.

// add action listener checkbox1.addItemListener(this); checkbox2.addItemListener(this); checkbox3.addItemListener(this); checkbox4.addItemListener(this); ... // event handling public void itemStateChanged(ItemEvent e) { // for each checkbox check its state // if it is checked, then we add its label to the text String text = ""; boolean isFirst = true; if ( checkbox1.getState() == true ) { text = text + checkbox1.getLabel(); isFirst = false; } if ( checkbox2.getState() == true ) { if ( isFirst == false ) { // check if this car is the first in the list text = text + ", "; } text = text + checkbox2.getLabel(); isFirst = false; } if ( checkbox3.getState() == true ) { if ( isFirst == false ) { // check if this car is the first in the list text = text + ", "; } text = text + checkbox3.getLabel(); isFirst = false; } if ( checkbox4.getState() == true ) { if ( isFirst == false ) { // check if this car is the first in the list text = text + ", "; } text = text + checkbox4.getLabel(); isFirst = false; } if ( text == "" ) { text = "Nothing selected"; } label.setText( text ); }

Forráskód

import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; public class CheckboxExampleApplet extends JApplet implements ItemListener { private Checkbox checkbox1; private Checkbox checkbox2; private Checkbox checkbox3; private Checkbox checkbox4; private JPanel textPanel; private JPanel checkboxPanel; private JPanel mainPanel; private JLabel label; public void buildGui() { mainPanel = new JPanel(); checkboxPanel = new JPanel(); textPanel = new JPanel(); checkbox1 = new Checkbox( "Audi", false ); checkbox2 = new Checkbox( "Volkswagen", false ); checkbox3 = new Checkbox( "Jaguar", false ); checkbox4 = new Checkbox( "Mercedes", false ); this.getContentPane().add(mainPanel); mainPanel.setLayout(new BoxLayout(mainPanel, BoxLayout.X_AXIS)); checkboxPanel.setLayout(new BoxLayout(checkboxPanel, BoxLayout.Y_AXIS)); checkboxPanel.add(checkbox1); checkboxPanel.add(checkbox2); checkboxPanel.add(checkbox3); checkboxPanel.add(checkbox4); mainPanel.add( checkboxPanel ); mainPanel.add( textPanel ); label = new JLabel( "Nothing selected" ); textPanel.add( label ); // add action listener checkbox1.addItemListener(this); checkbox2.addItemListener(this); checkbox3.addItemListener(this); checkbox4.addItemListener(this); } // event handling public void itemStateChanged(ItemEvent e) { // for each checkbox check its state // if it is checked, then we add its label to the text String text = ""; boolean isFirst = true; if ( checkbox1.getState() == true ) { text = text + checkbox1.getLabel(); isFirst = false; } if ( checkbox2.getState() == true ) { if ( isFirst == false ) { // check if this car is the first in the list text = text + ", "; } text = text + checkbox2.getLabel(); isFirst = false; } if ( checkbox3.getState() == true ) { if ( isFirst == false ) { // check if this car is the first in the list text = text + ", "; } text = text + checkbox3.getLabel(); isFirst = false; } if ( checkbox4.getState() == true ) { if ( isFirst == false ) { // check if this car is the first in the list text = text + ", "; } text = text + checkbox4.getLabel(); isFirst = false; } if ( text == "" ) { text = "Nothing selected"; } label.setText( text ); } public void init() { buildGui(); repaint(); } }

Letöltés

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



Vissza a lap tetjére