Câmpul de text

Câmpul de text este principalul instrument al interfeței grafice prin care utilizatorul introduce date de la tastatură. El se prezintă sub forma unei ferestre dreptunghiulare editabile, în care se poate introduce o singură linie de text. De obicei, prin intermediul câmpului de text se introduce o singură valoare numerică sau un șir de caractere.

În JFC/Swing, câmpurile de text se realizează ca instanțe ale clasei javax.swing.JTextField. Când câmpul de text este activ și se apasă tasta Enter, este generat un eveniment de acțiune din clasa java.awt.ActionEvent.
 
Textul conținut în câmpul de text poate fi obținut în două moduri:
  - prin metoda public String getText() a clasei JTextField;
  - prin metoda public String getActionCommand() a clasei ActionEvent.

Dacă în câmpul de text se introduce o valoare numerică, ea trebuie verificata sintactic și convertită din forma externă (de șir de caractere) în forma internă. În acest scop, se folosesc metodele de analiză și conversie din clasele acoperitoare. De exemplu, pentru un numar de tip double se va folosi metoda 
public double parseDouble(String str)
din clasa acoperitoare java.lang.Double, unde str este șirul care trebuie analizat. Întrucât aceste metode pot să genereze excepții de format incorect (NumberFormatException), ele trebuie utilizate în secvențe try .. catch;

Pentru aprofundarea utilizării câmpurilor de text, recomandăm capitolul How to Use Text Fields din Java Tutorial.

Menționăm că, în afara clasei JTextField, există și clasa javax.swing.JPasswordField, care se folosește pentru introducerea parolelor.


 
Exemplu
În fișierul CâmpuriText.java este dat un exemplu de aplicație în care se utilizează trei câmpuri de text, pentru a introduce, respectiv, un șir de caractere, un număr întreg și un număr în virgulă mobilă. În clasa imbricată Actiuni, prin care este realizat ascultătorul de evenimente de acțiune, se poate observa cum se determină care câmp de text a generat evenimentul de acțiune și cum se preia și analizează textul din câmpul respectiv, în funcție de tipul valorii pe care acest câmp trebuie să o conțină.
 
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

class CampuriText { 
 static AF af=new AF();
 static Actiuni act=new Actiuni();
 static IUG iug=new IUG("Campuri de text");

 /* clasa imbricata pentru interfata utilizator grafica */
 static class IUG extends JFrame {
  JPanel panel;
  JTextField tf1, tf2, tf3;
  JLabel label;

  IUG(String titlu) { // constructorul clasei IUG
   super(titlu);
   setSize(450, 150);
   setLocation(200, 50);
   Container cp=getContentPane();
   addWindowListener(af);  // adaugarea ascultatorului de fereastra

   /* Crearea panoului pentru campurile de text */
   panel=new JPanel();
   panel.setLayout(new GridLayout(3,2));

   /* Adaugarea la panou a etichetelor si campurilor de text */
   panel.add(new JLabel("Un sir de caractere: "));
   tf1=new JTextField();
   tf1.addActionListener(act);
   panel.add(tf1);
   panel.add(new JLabel("Un numar intreg"));
   tf2=new JTextField();
   tf2.addActionListener(act);
   panel.add(tf2);
   panel.add(new JLabel("Un numar real: "));
   tf3=new JTextField();
   tf3.addActionListener(act);
   panel.add(tf3);
   /* Adaugarea la contentPane a panoului cu campuri de text */
   cp.add(panel, BorderLayout.CENTER); 

   /* Se creeaza o "eticheta" pentru afisarea mesajelor */
   label=new JLabel("Introduceti date in campuri si urmariti efectul");
   label.setBorder(BorderFactory.createTitledBorder(
      "Afisarea mesajelor privind campurile de text"));
   cp.add(label, BorderLayout.SOUTH);

   setVisible(true);
  }
 } 

 /* Clasa ascultatoare de fereastra */ 
 static class AF extends WindowAdapter {
  public void windowClosing(WindowEvent e) {
   System.exit(0); // incheierea executarii aplicatiei
  }
 }

 /* Clasa ascultatoare a actiunilor asupra campurilor de text */
 static class Actiuni implements ActionListener {
  public void actionPerformed(ActionEvent e) {
    JTextField sursa=(JTextField)e.getSource();
    String text=e.getActionCommand(),
           text1="Ati introdus in campul ";
    if(sursa==iug.tf1) 
      iug.label.setText(text1+"1 textul: "+text);
    else if(sursa==iug.tf2)
      try {
       int n=Integer.parseInt(text);
       iug.label.setText(text1+" 2 numarul intreg "+n);
      }
      catch(Exception e1) {
       iug.label.setText("In campul 2 nu este un numar intreg!");
      }
    else if(sursa==iug.tf3)
      try {
       double d=Double.parseDouble(text);
       iug.label.setText(text1+"3 numarul real "+d);
      }
      catch(Exception e2) {
       iug.label.setText("In campul 3 nu este un numar real!");
      }
  }
 }

 /* Metoda principala a aplicatiei */
 public static void main(String args[]) {
 }
}



© Copyright 2000 - Severin BUMBARU, Universitatea "Dunărea de Jos" din Galați