Bevezetés
Az alábbi példa egy nagyon egyszerű program, amely bemutatja a beviteli mező használatát.
A beviteli mezőbe meg kell adni egy nevet, majd megnyomni az ENTER vagy az OK gombot.
Ekkor a mező tartalma törlődik, és egy kis üdvözlő felirat jelenik meg.
Objektumok létrehozása, inicializállása
A beviteli mezőt a java.awt.TextField osztály példányosításával hozzuk létre. (Megjegyzem, hogy a
javax.swing.JTextField osztály is a beviteli mezőt implementálja, használata hasonló a TextField
osztályéhoz.) A TextField és a JTextField osztályok csak az egysoros beviteli mezőt valósítják meg.
Az osztályok konstruktorában meg lehet adni, hogy milyen széles legyen a beviteli mező, valamint, hogy legyen-e valamilyen alapértelmezett
szöveg beleírva. A példában kezdetbe csak egy üres sztring szerepel a beviteli mezőben és a felhasználó ír majd bele valamit.
A beviteli mező szélessége 30 (karakter) lesz (de természetesen ennél több karatert is be lehet gépelni).
private TextField inputField;
...
inputField = new TextField( 30 );
A beviteli mezőbe gépeléssel, vagy a programon belül a void setText(String) függvénnyel
is megadhatunk szöveget. A mező tartalmát a String getText() metódussal kérdezhetjük le.
Eseménykezelés
A TextField osztályhoz KeyListener és ActionListener eseményfigyelőt is lehet rendelni,
ezek közül csak az előbbit mutatom be a példában. Azt az eseményt kell figyelni, amikor a felhasználó megnyomja az ENTER
billentyűt. Az ActionListener -t viszont most csak az OK gombhoz rendelem. Ez azt eredményezi, hogy a név beírása
után akár ENTER-t, akár OK-t nyom a felhasználó, mindkét esetben megjelenik a kis üdvözlő üzenet. Fontos megjegyeznem, hogy
most mindkét esemény létrejöttekor ugyanaz a művelet hajtódik végre.
A KeyListener osztályból a void keyPressed(KeyEvent) , void keyReleased(KeyEvent) és void keyTyped(KeyEvent)
függvényeket implementálni kell. Az utóbbi kettő törzsét nem kell most kitölteni, mivel nem kezelünk le ilyen eseményeket. Az OK gombhoz hozzárendelünk
egy ActionLstener eseményfigyelőt, így implementálni kell a void actionPerformed(ActionEvent) függvényt.
// event handling
public void keyPressed( KeyEvent e ) {
if ( e.getKeyCode() == KeyEvent.VK_ENTER ) { // if enter pressed
this.label.setText( "Hi, " + inputField.getText() + "!" );
this.inputField.setText( "" );
}
}
// event handling
public void keyReleased( KeyEvent e ) {
}
// event handling
public void keyTyped( KeyEvent e ) {
}
// event handling
public void actionPerformed( ActionEvent e ) {
// only the okButton fires ActionEvent
this.label.setText( "Hi, " + inputField.getText() + "!" );
this.inputField.setText( "" );
}
|
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
public class InputFieldExampleApplet extends JApplet implements ActionListener, KeyListener {
private TextField inputField;
private JPanel mainPanel, inputPanel;
private JLabel label;
private JButton okButton;
public void buildGui() {
mainPanel = new JPanel();
mainPanel.setLayout( new BorderLayout() );
inputPanel = new JPanel();
inputPanel.setLayout( new FlowLayout() );
okButton = new JButton( "OK" );
inputField = new TextField( 30 );
label = new JLabel( "" );
// setting layout
this.getContentPane().add( mainPanel );
inputPanel.add( new JLabel( "Name:" ) );
inputPanel.add( inputField );
inputPanel.add( okButton );
mainPanel.add( inputPanel, BorderLayout.NORTH );
mainPanel.add( label, BorderLayout.SOUTH );
// add event listeners
inputField.addKeyListener( this );
okButton.addActionListener( this );
}
// event handling
public void keyPressed( KeyEvent e ) {
if ( e.getKeyCode() == KeyEvent.VK_ENTER ) { // if enter pressed
this.label.setText( "Hi, " + inputField.getText() + "!" );
this.inputField.setText( "" );
}
}
// event handling
public void keyReleased( KeyEvent e ) {
}
// event handling
public void keyTyped( KeyEvent e ) {
}
// event handling
public void actionPerformed( ActionEvent e ) {
// only the okButton fires ActionEvent
this.label.setText( "Hi, " + inputField.getText() + "!" );
this.inputField.setText( "" );
}
public void init() {
buildGui();
repaint();
}
}
Fordítás J2SDK 1.4 vagy magasabb verziójával.
# > javac InputFieldExampleApplet.java
|