JAVATM GUI TUTORIAL

Beviteli mező

JAVATM GUI Tutorial > Beviteli mező   |   Applet   Forráskód   Letöltések

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

Forráskód

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

Letöltés

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



Vissza a lap tetjére