Componentele text au arhitectura MVC. model de componenta de text a oferit o interfață destul de simplă Documentul, care oferă informații despre modificările din document și stocat-l în text, și să modifice textul rezultat, dacă este necesar. Vederea este implementată în reprezentanții UI ai componentelor text; dar este compilat pe baza obiectelor speciale Element și View, care corespund mai exact componentelor de text. Cu aceste obiecte pot fi flexibil personaliza și extinde aspectul și structura componentelor de text fără a interfera cu procesul complex de vectorizare final. Controlorul este conectat la o vizualizare pentru procesarea evenimentelor, care de obicei nu sunt asociate cu tastatura, și parțial implementate ca o tastatură. harta tastatură vă permite să flexibil, fără a schimba UI-reprezentant al componentei de text, componenta de text pentru a schimba răspunsul la intrarile de la tastatura.
Link-uri de pe pagină
Câmpul de text JTextField este cea mai simplă componentă și este cel mai frecvent întâlnită în interfețele utilizatorilor. În mod obișnuit, câmpul este o singură linie și servește pentru introducerea textului. Există două câmpuri de text în biblioteca Swing. Primul, reprezentat de clasa JTextField. vă permite să introduceți text cu o singură linie. Cel de-al doilea câmp implementat de clasa JPasswordField și mostenit de la câmpul JTextField. vă permite să organizați introducerea informațiilor "private" (cel mai adesea parole), care nu ar trebui să fie afișate direct pe ecran.
Ambele câmpuri de text JTextField, JPasswordField sunt simple. Lucrul cu aceștia se reduce adesea la specificarea numărului de caractere afișate în câmp și a textului inițial, dacă există. După aceea, rămâne doar să puneți câmpul în container și la momentul potrivit pentru a obține textul tastat de utilizator de la acesta.
Exemplu de utilizare a câmpurilor de text JTextField
Exemplul creează o fereastră cu mai multe câmpuri de text. Primul câmp este creat utilizând constructorul de clasă JTextField. care este trecut numărul maxim de caractere din câmp. Pentru câmpurile de text dintr-o singură linie, nu este necesară derularea și dimensiunea câmpului din caractere ar trebui să corespundă în mare măsură cu cantitatea de informații pe care utilizatorul o introduce în câmp. Al doilea câmp este creat de un constructor mai funcțional: transmite textul care trebuie scris în câmp și numărul maxim de caractere. Apoi, opțiunea de font și opțiunea de aliniere a textului din câmp sunt determinate. Implicit, textul este aliniat spre stânga, în exemplul din dreapta.
Puteți atașa un ActionListener la câmpul de text. Astfel de ascultători sunt notificați atunci când utilizatorul apasă o tastă specială, semnalizând sfârșitul intrării. De obicei, aceasta este tasta Enter. Utilizarea ascultătorului este deosebit de convenabilă în cazul câmpurilor de text destinate introducerii unor informații importante. Aderarea la câmpul ActionListener ascultător pentru a accelera procesul de lucru cu interfața, eliminând nevoia de introducere a datelor de finalizare click pe butonul de confirmare ca butonul OK. În plus față de conexiunea directă la câmpul ascultător ActionListener puteți utiliza, de asemenea, metoda setAction (), să adere la domeniul de acțiune obiect de comandă. Această metodă nu înlătură deja conectat la domeniul de ascultători, ei vor fi, de asemenea, notificate cu privire la finalizarea intrare.
Exemplul utilizează, de asemenea, câmpul pentru a intra în datele "private" JPasswordField. Acest câmp este mostenit din câmpul normal JTextField. Numai metoda setEchoChar () poate fi menționată din metodele proprii ale JPasswordField. care servesc la schimbarea simbolului de înlocuire. În mod implicit, asteriscul "*" este folosit ca un astfel de caracter. Dezvoltatorii clasa JPasswordField nu se recomandă să se aplice pentru valorile introduse în (parola), metoda Gettext obișnuită (). Faptul că datele obținute prin metoda unui șir poate fi salvată în memoria cache (obiecte String în Java compilator cel mai optimizat și mașină virtuală), iar atacatorul poate fura parola memoria aplicației de scanare. Pentru datele furnizate o metodă mai sigură getPassword (), care returnează un șir de caractere char, ale căror valori după verificarea are sens dacă doriți să resetați și cauza colectorul de gunoi. Câmpul JPasswordField copiază în specială a datelor clipboard - suprascrie tăiate () și copie (), definită în clasa de bază JTextComponent, nu poate fi copiat text în clipboard.
Metoda setToolTipText () permite pentru fiecare câmp să seteze un "hint" pop-up. Interfața ferestrei este prezentată în următoarea imagine.
După introducerea valorii în câmpul superior, a fost apăsată tasta
Proprietățile câmpului de text
Proprietățile și metodele de obținere / setare
Definirea unui simbol înlocuitor pentru introducerea informațiilor private. Implicit este un asterisc (*)
Câmpul de text cu mai multe linii JTextArea este conceput pentru a introduce un text simplu care nu este caracterizat de diverse atribute. Spre deosebire de câmpurile obișnuite care vă permit să introduceți numai o singură linie de text, câmpurile cu mai multe linii permit utilizatorului să introducă un număr arbitrar de linii de text.
Pentru câmpurile cu mai multe linii, trebuie să specificați nu numai lățimea (numărul maxim de caractere), ci și înălțimea (numărul maxim de rânduri). JTextArea trebuie plasat în barele de derulare JScrollPane. Să luăm în considerare un exemplu de utilizare a JTextArea.
Exemplul creează două câmpuri de text multi-linie JTextArea. pentru care unele dintre cele mai frecvent utilizate proprietăți au fost schimbate. Primul câmp text este creat utilizând un constructor care umple câmpul cu text și specifică numărul de linii și caractere. Trebuie notat că numărul de linii merge în lista de parametri înaintea numărului de caractere. Numărul de linii și caractere din constructor specificat în constructor determină dimensiunea acestuia în container, dar nu impun restricții asupra cantității de text care trebuie introdus. Pentru primul câmp, fontul a fost modificat și a fost apelată o valoare nestandardă pentru tabulare apelând metoda setTabSize (). Această metodă vă permite să specificați câte caractere de spațiu vor înlocui caracterele tab, inserate prin apăsarea unei taste
Al doilea câmp de text este creat cu ajutorul unui constructor, la care numărul de linii și simboluri este trecut ca parametri. Apoi, folosind metoda setText (), conținutul câmpului este determinat și proprietățile care controlează procesul de mutare a textului pe linii noi sunt modificate. Implicit, textul din câmpul JTextArea nu este mutat pe o linie nouă. Pentru a schimba acest comportament, permite metoda setLineWrap (). Metoda setWrapStyleWord () modifică stilul mutării cuvintelor lungi pe linii noi. Dacă treceți valoarea la adevărat în această metodă, cuvintele care nu se încadrează în linie vor fi transferate complet pe o linie nouă. Valoarea implicită pentru această proprietate este falsă. Aceasta înseamnă că textul este transferat, de îndată ce spațiul din linie nu mai există, indiferent de locul în care cuvântul trebuie mutat.
Casutele de text sunt adăugate în bara de conținut a ferestrei utilizând barele de derulare JScrollPane. Trebuie remarcat faptul că câmpul text JTextArea nu are propriul cadru. Barele de derulare rezolvă această problemă. Interfața ferestrei este prezentată în următoarea imagine.
Rețineți diferența în implementarea înfășurării textului în cele două componente JTextArea. Pentru a transfera textul în câmpul din stânga, trebuie să apăsați manual tasta Enter. iar în câmpul drept transferul se efectuează automat.
Proprietățile câmpurilor de text multi-linie JTextArea
Proprietăți (și obținerea / setarea metodelor)
Obținerea lungimii textului stocat în modelul de document.
Pentru a monitoriza modificările în câmpurile textului Swing, există un eveniment DocumentEvent și ascultătorul său ListListener, pe care îl puteți atașa modelului Document. Un eveniment DocumentEvent apare de fiecare dată când se modifică textul documentului. Sunt definite trei metode în interfața Listener ListListener; fiecare dintre ele este apelată la un anumit tip de eveniment din document: eliminând removeUpdate (DocumentEvent e). actualizați modificatUpdate (DocumentEvent e) sau inserați textul insertUpdate (DocumentEvent e).
Un exemplu de utilizare a clasei JTextField cu un DocumentListener modificat este inclus în arhiva exemplelor examinate pe pagină. În exemplul AutoCompleteFieldTest.java, cuvântul este înlocuit în câmpul text cu mai multe caractere inițiale.
Cursorul pentru componente text este implementat de interfața Caret. Cursorul vă permite să modificați programatic poziția curentă din text și să gestionați textul selectat. Pentru a lucra cu textul selectat, există mai multe metode, dar inițial selectarea textului este administrat de cursorul text în JTextComponent clasei de bază.
Cursorul are două proprietăți principale - poziția punctului și poziția inițială a mărcii de text selectate. Poziția cursorului indică unde vor fi introduse simbolurile.
Cursorul descris de interfața Caret acceptă un eveniment ChangeEvent. Prin atașarea ascultătorului ChangeListener la cursor, puteți obține informații despre toate mișcările cursorului. Clasa de bază JTextComponent acceptă evenimentul CaretEvent. De asemenea, pornește când se mișcă cursorul. Dar dacă evenimentul ChangeEvent conține doar sursa evenimentului (cursorul în sine), evenimentul permite CaretEvent știu imediat poziția curentă a cursorului și punctul de referință.
Un exemplu de utilizare a clasei cursor Caret este inclus în arhiva exemplelor examinate pe pagină. Exemplul CaretTest.java demonstrează funcționarea cu metodele cursorului setDot (poziția int), moveDot (pozitia int), setBlinkRate (int frecvențe), getMark () și getDot ().
Descărcați exemple
Codurile sursă ale exemplelor examinate pe pagină pot fi descărcate aici (10 Kb).