KeyStroke getKeyStroke (String keyString) - toți parametrii sunt scrise într-o singură linie
keyString. Regulile de înregistrare sunt prezentate în documentație.
Obiectul clasei KeyStroke obținut prin apăsarea sau eliberarea cheii este apoi utilizat de obiectul de implementare a interfeței Keymap. Acest obiect specifică răspunsul la o apăsare de tastă sub forma unui obiect care implementează interfața Action. și stochează un set de perechi de chei de acțiune cheie din tipul "KeyStroke-Action". Interfața Action este descrisă în
Acest mecanism pentru specificarea răspunsului la acțiunile de la tastatură înlocuiește procesarea obișnuită a evenimentelor tastaturii prin adăugarea unui ascultător la componenta de text.
O nouă pereche "cheie-acțiune" este adăugată la set prin metoda
void addActionForKeyStroke (cheia KeyStroke, acțiunea a);
Întregul set de acțiuni sub forma unei matrice de acțiuni [] poate fi obținut prin metoda respectivă
getBoundActions (). și setul de obiecte KeyStroke [] prin metoda getBoundKeyStrokes (). distinct
Acțiunea este returnată de metoda getAction (KeyStroke).
Obiectele de tip Keymap pot fi legate într-un lanț prin specificarea unui obiect parent folosind metoda setResolveParent (Keymap). Dacă perechea "cheie-acțiune" nu este găsită în acest obiect, va fi căutată în obiectul părinte și apoi în lanț.
Biblioteca Swing nu implementează interfața Keymap cu o clasă deschisă. În schimb, implementarea este realizată de câmpul privat al clasei JTextComponent. Când creați o componentă de text, acest câmp este populate cu aspectul implicit al DEFAULT_KEYMAP. Puteți obține aspectul curent utilizând metoda getKeymap (). și setați unul nou utilizând metoda setKeymap (Keymap). Adăugați un nou aspect lantului folosind metoda statică
addKeymap (nume șir, cheie parentală);
Imprimați textul documentului
Câteva metode de imprimare logică () ale clasei JTextComponent determină afișarea pe ecran a casetei de dialog standard de imprimare, ajutând la selectarea unei imprimante și imprimarea conținutului componentei pe ea. Metodele returnează false. dacă utilizatorul a anulat imprimarea, făcând clic pe butonul Anulare din caseta de dialog și este adevărat altfel.
print () - imprimă textul componentei fără anteturi și subsoluri.
print (antet MessageFormat, MessageFormat footer) - imprimă partea de sus
antetul și subsolul footerului, formatate ca obiecte de clasă
MessageFormat din pachetul java.text.
Metodele de imprimare mai complexe și mai complexe folosesc serverul de imprimare, dar acest lucru este dincolo de scopul cărții noastre.
Deși structura internă a componentelor textului este dificilă, utilizarea obișnuită nu prezintă dificultăți.
Un câmp de intrare cu o singură linie este creat de unul dintre constructori:
JTextField (coloane int) - un câmp de intrare gol, cu o fereastră a cărei dimensiune este suficientă pentru a găzdui coloane de simboluri. Puteți introduce orice număr de caractere în câmp, fereastra va derula;
JTextField (text șir) - un câmp de introducere cu textul inițial;
JTextField (text șir, coloane int) - un câmp de introducere cu textul textului inițial și lățimea -
caractere de caractere;
JTextField (Doc document, String text, coloane int) - Specificați modelul de date doc.
Puteți înlocui modelul de date cu metoda setDocument (Document). Este permis să nu se înlocuiască întregul model, ci doar fontul - cu metoda setFont (Font).
Metodele moștenite de la JTextComponent. Puteți introduce text în câmpul de introducere folosind metoda setText (String). obțineți tot textul folosind metoda getText (). o parte a textului prin metoda getText (int offset, int length) sau doar partea selectată a textului prin metoda
Textul selectat în câmp poate fi înlocuit cu un alt text prin metoda
Implicit, textul din câmp este apăsat în stânga. Puteți schimba această regulă folosind
setHorizontalAlignment (int). specificând una dintre constantele din ea: STÂNGA. CENTER. DREAPTA. LEADING. TRAILING clasa JTextField.
Implicit, textul din câmp poate fi editat, dar este permisă crearea unui câmp numai pentru citire cu metoda setEditable (false) moștenită.
În câmp, puteți seta noul cursor utilizând metoda setCaret (Caret). Puteți modifica pur și simplu culoarea cursorului utilizând metoda setCaretColor (Color). Poziția cursorului poate fi urmărită utilizând metoda getCaretPosition (). și setați-o programabil cu metoda setCarePosition (int). Pentru a muta programat cursorul, selectând astfel o secțiune de text, puteți utiliza metoda moveCarePosition (int).
Limitele zonei selectate returnează metodele getSelectionStart () și getSelectionEnd (),
și set - metode setSelectionStart (int) și setSelectionEnd (int).
Culoarea textului selectat poate fi setată utilizând metoda setSelectedTextColor (Color). iar culoarea de fundal a textului selectat este setSelectionColor (Culoare).
Fișa 12.1 prezintă un exemplu de câmp de text pentru introducerea numai a cifrelor.
Listarea 12.1. Numărul câmpului de introducere
import java.awt. *; import javax.swing. *;
clasa publica NumberText extinde JFrame JLabel l = JLabel nou ("Introduceți numere:"); super ("text"); setLayout (nou FlowLayout ()); // Introduceți filtrul de caractere de intrare ((PlainDocument) tf.getDocument ()). setDocumentFilter (noul NumărFilter ()); // Textul va fi evidențiat numai în roșu tf.setSelectedTextColor (Color.red); // Când textul este selectat, fundalul rămâne alb tf.setSelectionColor (Color.white); // Cursorul va fi roșu tf.setCaretColor (Color.red); l.setLabelFor (tf); setSize (400, 400); setDefaultCloseOperation (EXIT_ON_CLOSE); setVisible (adevărat); public static void principal (String [] args) // Filtru de intrare clasa NumberFilter extinde DocumentFilter
// Înlocuiți o singură metodă public void insertString (FilterBypass fb, int-pos, text șir, AttributeSet attr) Integer.parseInt (text); // Introduceți numărul? // Dacă nu este o cifră, atunci caracterul nu intră în super.insertString (fb, 0, "", attr); return; // Dacă este introdusă o cifră, puneți-o în câmpul super.insertString (fb, pos, text, attr); Clasa JPasswordField extinde direct clasa JTextField. prin urmare, tot ceea ce sa spus înainte se referă la aceasta. O diferență este că în acest câmp, în loc de caracterele introduse, se repetă un caracter, implicit este un asterisc. Asteriscul poate fi înlocuit cu un alt caracter folosind metoda setEchoChar (char). A doua diferență este că, în locul metodei getText (), getPassword () este folosit pentru a prelua text din câmpul de parolă. Returnează o matrice de caractere char []. nu un șir. O altă extensie a clasei JTextField, clasa JFormattedTextField, este proiectată să funcționeze cu obiecte care conțin caractere, cum ar fi Data. Numărul. Cu toate acestea, con- Structura clasei JFormattedTextField (Object) și metoda setValue (Object) permit JFormattedTextField ftf = nou JFormattedTextField (noua dată ()); ftf.addActionListener (acest lucru); // Editarea datei. Apoi apăsați tasta public void actionPerformed (ActionEvent e) Metoda getValue () returnează un obiect de tipul Object. Acesta este rezultatul transformării inverse a liniei editate în fereastră în obiectul original. Clasa abstractă AbstractFormatter, încorporată în JFormattedTextField, convertește obiectul spre și din șir. Pentru a face acest lucru, are metode valueToString (Object) și stringToValue (String). Aceste metode sunt lăsate abstracte. Po- instalați (JFormattedTextField) din clasa AbstractFormatter sau folosiți const- sau prin metoda setFormatter (AbstractFormatter) a clasei JFormattedTextField. În plus față de transformarea obiectului, AbstractFormatter definește o instanță a clasei DocumentFilter și o instanță a clasei NavigationFilter. care pot fi obținute prin metode rol - pentru a verifica și a filtra textul introdus în câmp, permițând numai anumite caractere. În biblioteca Swing există o implementare a clasei AbstractFormatter - extensia sa DefaultFormatter. Pentru a converti un obiect la un șir, metoda valueToString (Object) înCâmpul de introducere a parolei JPasswordField
Articole similare