Uneori este necesar să se actualizeze o parte a interfeței cu utilizatorul ori de câte ori utilizatorul editează textul, fără să mai aștepte până când utilizatorul face clic pe butonul. Mai jos este un exemplu simplu. Afișăm trei câmpuri de text pentru componentele roșu, albastru și verde. Ori de câte ori se schimbă conținutul câmpurilor de text, trebuie să actualizați culoarea. Fig. 1 prezintă codul de aplicație care rulează, care va fi prezentat la sfârșitul anului.
Fig.1. Urmărirea modificărilor în caseta de text.În primul rând, rețineți că tastatura de cale de pe tastatură - nu este în întregime ideea potrivită. Faptul că unele apăsări de taste (de exemplu, tastele săgeată) nu se schimba textul.
Textul poate fi actualizată ca urmare a unor acțiuni realizate prin utilizarea mouse-ului (de exemplu, utilizarea butonului din mijloc al mouse-ului pentru a introduce date în sistemul X11). În schimb, trebuie să „ceară“ documentul (și nu o componentă de text) pentru a vă anunța de fiecare dată când se efectuează o modificare a datelor. Acest lucru va necesita documentul ascultător (documentul ascultător):
textfield. getDocument (). addDocumentListener (ascultător);
Odată ce textul este schimbat, apelați una dintre următoarele metode:
void insertUpdate (eveniment DocumentEvent)
void removeUpdate (eveniment DocumentEvent)
void changeUpdate (eveniment DocumentEvent)
Primele două metode sunt numite atunci când introduceți sau șterge caractere. A treia metodă pentru câmpurile de text nu este numit deloc. Pentru mai multe tipuri de documente complicate, acesta poate fi invocat la alte schimbări, cum ar fi modificările de formatare.
Din păcate, nu există nici o modalitate de a raporta o modificare a textului printr-un singur apel invers - ca regulă, nu ar trebui să vă faceți griji cu privire la modul în care se schimbă. Mai mult decât atât, în acest caz, nu au nici măcar o clasă specială. Astfel, documentul ascultător trebuie să implementeze toate cele trei metode. Următoarele arată ceea ce se face în program:
setcolor () metodă utilizează metoda getText pentru a obține siruri de caractere introduse de utilizator la un moment dat, din câmpurile de text și setarea de culoare.
Programul nostru are o limitare. Utilizatorul poate introduce text în caseta de text cu erori (de exemplu, „meshina“ în loc de „mașină“) sau chiar lăsați-l necompletat. Până când vom prinde excepții NumberFormatException. generate de parseInt. și pur și simplu nu actualizează culoarea în cazul în care o intrare în câmpul de text nu este un număr.