Adăugarea de componente nu se face direct la instanțele clasei JFrame. În JFrame există un Container (un obiect dintr-o subclasă a clasei Container) numit contentPane, la care se pot adăuga componente. O referință la acest Container se obține prin metoda public Container getContentPane(), existentă în clasa JFrame. Adăugarea de componente se face prin una din metodele add() ale clasei Container. Dacă, de exemplu, comp este referință la o componentă, atunci expresia getContentPane().add(comp), folosită într-o metodă a clasei JFrame sau a subclaselor ei, adaugă componenta comp la containerul contentPane conținut în JFrame.
O prezentare succintă a clasei JFrame este dată în Indexul de clase, iar cea
completă se găsește în Java API, completată cu cea din Tutorialul Java.
Exemplul 1 În fișierul AdComp.java este un exemplu de aplicație, în care se testează adăugarea la fereastra principală a unui buton și se face contorizarea numărului de apăsări pe butonul respectiv. În acest exemplu se arată: - cum se adaugă la fereastra aplicației un buton (o instanță a clasei JButton); - cum se tratează evenimentele de acțiune generate la apasarea butonului. În locul unui buton se putea folosi orice altă componentă.
Remarcăm următoarele: Când punem în execuție această aplicație, pe ecran apare o fereastră cu titlul "Un buton de contorizare a apăsărilor", în interiorul căreia se găsește un buton pe care apare inscripția "Număr de acționări: 0". De fiecare dată, când facem click de mouse pe acest buton, constatăm că s-a modificat textul continut, indicand noua valoare a contorului de acționări. |
Exemplul 2 Folosirea unei clase de buton de
contorizare proprie, derivată din clasa JButton
Având în vedere ca butonul de contorizare a apăsărilor poate
fi, în principiu, folosit și în mai multe aplicații, putem să îl
declarăm ca o clasa publică într-un fișier separat, ca în fișierul ButonContor.java, reprodus aici:
În fișierul AdComp1.java se dă o modificare a aplicației din
exemplul precedent, în care, în locul unei instanțe a clasei JButton, se
folosește o instanță a clasei ButonContor. În acest caz nu a mai fost
necesar să se creeze o clasă de ascultare a butonului, întrucât butonul
din clasa ButonContor se ascultă pe el însuși.
|