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 );
}
|
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();
}
}
Fordítás J2SDK 1.4 vagy magasabb verziójával.
# > javac CheckboxExampleApplet.java
|