Apleturi Java

4. Interactiunea Java cu utilizatorul: obiecte de tip Button, Label, Textfield, Choice.


Label
Obiectele de tip Label sunt aproape cele mai simple din Java, fiind totusi mai mult decat un simplu sir de text. Un obiect de tip Label poate fi creat prin apelul constructorului clasei Label (din pachetul java.awt), astfel:

Label nume_label = new Label(sir);
Pentru a afisa mai multe obiecte de tip Label la niste coordonate date si pentru a seta dimensiunile lor, scrieti in functia init() urmatoarele linii:
- setLayout(null); (aceasta functie va permite sa apelati functia reshape, layout-ul implicit fiind altul care nu permite acest lucru)
- adaugati fiecare label cu comanda add(nume_label);
- dupa adaugarea fiecarui label, scrieti linia: nume_label.reshape(stanga,sus,latime,inaltime). Aceasta functie a fost definita in clasa java.awt.Component, din care deriva clasa Label si toate clasele discutate in acest capitol.
Astfel, fiecare label va fi mutat la coordonatele (stanga, sus) si va fi redimensionat la o anumita latime si inaltime.
In loc de functia reshape, mai puteti folosi fie functia move(stanga,sus), fie functia resize(latime,inaltime), fie alte functii definite in clasa java.awt.Component sau definite de dumneavoastra.
Clasa Label are mai multe metode utile pentru manipularea instantelor sale, dintre care le amintesc pe cele mai folosite:
String getText() - returneaza sirul scris pe label:
void setText(String sir) - inlocuieste sirul curent cu sirul dat ca parametru acestei functii.

Button
Pentru crearea unui obiect de tip Button, veti apela constructorul clasei java.awt.Button:
Button nume_buton=new Button(sir), unde sir este sirul care va aparea scris pe buton.
Ca si in cazul clasei Label, si aici intalnim functii pentru returnarea si schimbarea textului scris pe buton:
String nume_buton.getLabel(), respectiv nume_buton.setLabel(String sir).
Ca si mai sus, veti adauga butonul creat cu ajutorul functiei add(nume_buton) si veti muta si redimensiona butonul cu ajutorul functiei reshape sau move sau resize.
Cand utilizatorul apasa butonul cu cursorul mouse-ului, Java apeleaza functia action(). Programatorul trebuie sa suprascrie aceasta functie astfel incat codul scris sa determine ce se va intampla atunci cand utilizatorul apasa butonul.
Aceasta functie are doi parametri, asa cum puteti vedea din antetul ei:
public void boolean(Event evt, Object arg);
Primul parametru este o instanta a clasei Event. Aceasta este o clasa portabila care incapsuleaza evenimente de pe platforma GUI (Graphical User Interface) locala (apasarea sau eliberarea unei taste, miscarea mouse-ului, apasarea sau eliberarea unui buton al mouse-ului etc.). Campul target al unui eveniment indica tipul obiectului care a generat evenimentul. Pentru a determina obiectul se foloseste cuvantul cheie instanceOf. Al doilea parametru este label-ul obiectului pentru care a avut loc actiunea:
public boolean action(Event evt, Object arg) {
     if (evt.target instanceof Button) //daca s-a efectuat o actiune pe un obiect de tip buton
          if (arg == str) // daca butonul are label-ul identic cu sirul str
                 { //executa cod;
                 }
     
return true;

}
Astfel, daca avem mai multe butoane sau mai multe obiecte care raspund in mod diferit la diferite actiuni, se folosesc mai multe if-uri imbricate.

TextField
Pentru a permite utilizatorului sa introduca un anumit text de la tastatura, trebuie introdus un obiect de tip TextField. Pentru aceasta trebuie apelat constructorul clasei:
TextField nume_camp= new TextField(sir, dimensiune);
Cei doi parametri sunt: textul implicit care va fi afisat in campul respectiv si dimensiunea in caractere a campului. Dupa crearea campului, el trebuie adaugat apletului prin functia add.
Iata cateva dintre metodele mai des folosite definite in clasa TextField:
int getColumns() - returneaza dimensiunea in caractere a campului;
void setEchoCharacter(char c) - seteaza caracterul de ecou pe c, ceea ce inseamna ca atunci cand utilizatorul va testa literele, vor fi afisate caractere c;
char getEchoChar() - returneaza caracterul ecou setat;
void setText(String str) - seteaza textul pe str;
String getText() - returneaza textul setat.

Choice
O modalitate de a permite utilizatorului sa selecteze o valoare din mai multe prestabilite este folosirea obiectelor de tip Choice. Pentru a crea un astfel de meniu se procedeaza astfel:
Choice meniu = new Choice();
Elementele acestui meniu vor fi create cu ajutorul metodei addItem(sir) definita in clasa Choice, unde sir este textul care va aparea ca optiune in meniu. Astfel, functia addItem trebuie apelata pentru fiecare element care se doreste adaugat meniului.
Iata un exemplu de meniu de tip Choice:
Choice meniu = new Choice();
meniu.addItem("Rosu");
meniu.addItem("Verde");
meniu.addItem("Albastru");
add(meniu);

Cateva metode din clasa Choice sunt urmatoarele:
int countItems() - returneaza numarul de elemente din meniu;
int getSelectedIndex() - returneaza numarul elementului selectat. Primul are numarul 0, urmatorul numarul 1 s.a.m.d.;
String getSelectedItem() - returneaza textul elementului selectat;
String getItem(int index) - returneaza textul elementului cu numarul index;
void select(int index) - selecteaza elementul cu numarul index;
void select(String sir) - selecteaza elementul care are textul identic cu sir.

Alte clase care se incadreaza in categoria celor discutate mai sus sunt: Checkbox, List, Menu, TextArea etc., a caror creare si manipulare este asemanatoare cu a celor discutate.

1