Este - arhivă

Clasa JList a bibliotecii Swing (continuare)

În lecția anterioară nu am luat în considerare mecanismul de acțiuni de programare pentru selectarea unui element de listă. Acum vom considera acest mecanism din punct de vedere al utilizării practice.

Când selectați un element de listă, evenimentul javax.swing.event.ListSelectionEvent este generat. În consecință, pentru a programa reacția la acest eveniment, trebuie să creați și să înregistrați un ascultător pentru acest eveniment.

Să luăm în considerare metodele și clasele necesare pentru implementarea acestui proces.

În clasa JList, există o metodă

Adaugă un ascultător de tipul ListSelectionListener.

Interfața ListSelectionListener este definită în pachetul javax.swing.event. Să vedem documentația. Această interfață are o singură metodă

Astfel, de fiecare dată când selectați următorul element din listă, JList apelează metoda valueChanged pentru toți ascultătorii înregistrați.

Ca parametru pentru metoda valueChanged, este trecut un obiect din clasa ListSelectionEvent. În cadrul metodei valueChanged, puteți utiliza metodele din această clasă pentru a determina ce element din listă a fost selectat. Dar este mult mai convenabil să folosiți metodele din clasa JList în sine. care va determina numărul sau numărul articolelor selectate. Să luăm în considerare aceste metode.

vă permite să determinați numărul elementului de listă selectat. Dacă sunt selectate mai multe elemente, acestea returnează numărul primei. Dacă nu sunt selectate elemente, acesta returnează -1.

vă permite să obțineți primul dintre elementele selectate din listă. Dacă nu sunt selectate elemente, aceasta returnează null.

După cum puteți vedea, clasa JList vă permite să selectați nu unul, ci mai multe elemente de listă. Într-un dialog, puteți face acest lucru. Țineți apăsată tasta Shift. dați clic pe primul element pe care doriți să-l selectați, apoi pe ultimul. Ca rezultat, va fi selectat un bloc continuu de elemente de listă. De asemenea, puteți selecta un grup de articole nelegat utilizând tasta Ctrl în loc de Shift. Metodele adecvate pentru a lucra cu un grup de elemente selectate sunt getSelectedIndices și getSelectedValues ​​(consultați documentația).

Abilitatea de a selecta grupuri de elemente poate fi activată / dezactivată prin metoda setSelectionMode (consultați documentația).

Lucrare practică

Applets (applet-uri)

Să ne familiarizăm cu un concept mai important - cu aplicații. Appletele sunt programe mici care rulează în interiorul unui browser.

Aici adjectivul "mic" reflectă practica tipică de a folosi applet-uri, și nu o cerință formală. Teoretic, applet-urile pot fi arbitrar de mari și complexe. Dar cantitatea de applet afectează timpul în care începe, deoarece de obicei codul de applet este trimis prin Internet / Intranet. În consecință, un applet mare va dura mult timp pentru a încărca și utilizarea sa nu va fi justificată.

Cele mai populare browsere sunt Netscape Navigator și Microsoft Internet Explorer (IE). Versiunile actuale ale ambelor browsere acceptă funcționarea aplicațiilor. Pentru a face acest lucru, fiecare dintre ele are un built-in VM (Java virtual machine), care vă permite să executați applet.

Deoarece există o specificitate a executării programelor Java în browser, există reguli pentru construirea acestor programe, adică reguli pentru construirea applet-urilor. Vom examina aceste reguli puțin mai târziu, dar pentru moment, luați în considerare unele probleme comune cu privire la applet.

Problemă de securitate

Esența problemei este că apletul este, de regulă, un program obținut dintr-o sursă externă. În consecință, este periculos. Prin rautate sau eroare, poate fi dăunătoare. Mai mult, applet-ul pare să fie unul cu pagina web și pentru utilizator nu poate fi chiar evident că o pagină web inofensivă ascunde codul potențial periculos.

Din motive de securitate, applet-urile, în mod implicit, sunt strict restricționate în drepturile lor. Aceste restricții sunt determinate de setările unui anumit browser. Ele pot fi slăbite de utilizatorul însuși cu privire la toate applet-urile și pentru aplicațiile specifice.

Există o mulțime de restricții, dar vom lua în considerare numai cele principale.

Versiunea de compatibilitate a versiunii

În plus, alte probleme sunt asociate cu applet-uri.

Apoi, versiunile noi de browsere ar trebui instalate de utilizatori. De asemenea, este nevoie de o anumită perioadă de timp.

Prin urmare, atunci când dezvoltăm aplicații, trebuie să ținem seama de faptul că există browsere depășite care nu acceptă aceste sau alte inovații.

În special, relativ recent (în termeni de timp necesar pentru instalarea versiunilor moderne de browsere) posibilitatea de a pachetului Java-programe, inclusiv applet-uri, în borcan-fișiere, ceea ce reduce drastic de download applet și puternic influențează dezvoltarea tehnologiei practic applets eficiente.

Anterior, aplicația a încercat să execute un singur sau un număr mic de clase. Acest lucru se datorează faptului că fiecare clasă este tradusă într-un fișier separat, iar descărcarea fiecărui fișier pe Internet necesită o conexiune (conexiune). În versiunile recente, acest lucru este imaterial - viteza de descărcare nu este afectată de numărul de clase, ci de dimensiunea fișierului jar.

În plus, structura jar-fișierelor se schimbă în mod constant, îmbunătățind. Acestea includ componente opționale cu o anumită funcționalitate. Deci, în cele mai recente versiuni în semnătură digitală poate include compoziția jar fișier asigură că applet-ul a fost dezvoltat dezvoltator special, și nu a fost modificat de către unii intrus.

Crearea de aplicații

Tehnica de scriere a applet-urilor se bazează pe clasa JApplet a pachetului javax.swing.

Această clasă are multe dintre metodele sale și o serie de metode moștenite de la clasa Applet. Cu toate acestea, studiul lor de documentare nu va da mult pentru stăpânirea tehnicii de construire a applet-urilor. Trebuie doar să știi cum să construiești un applet folosind aceste metode.

Pentru a construi un applet, trebuie să creați o clasă care moștenește clasa JApplet și să înlocuiască o serie de metode de clasă Applet în ea. În clasa JApplet, aceste metode sunt implementate ca niște stuburi goale care nu fac nimic. Când applet-ul rulează în interiorul browserului, acesta numește aceste metode în anumite situații. Dacă definim metodele noastre, browserul le va apela, nu metodele clasei Applet.

Să luăm în considerare aceste metode.

Acesta este apelat de către browser-ul imediat după ce apletul este încărcat înainte de primul apel la metoda start (). Această metodă trebuie redefinită aproape întotdeauna dacă apletul necesită cel puțin o anumită inițializare.

Chemat de browser ori de câte ori vizitați această pagină. Înseamnă că puteți descărca această pagină, apoi descărcați o altă pagină, fără a o elimina și apoi reveniți la aceasta. De obicei, aceasta este folosită în combinație cu metoda stop pentru a salva resursele în cazul, de exemplu, dacă apletul realizează o anumită animație. Apoi opriți-o puteți opri și o puteți porni din nou.

Acesta este apelat de către browser atunci când această pagină este dezactivată, ca în cazul încărcării unei noi pagini fără descărcarea acesteia și în cazul descărcării acesteia. În cel de-al doilea caz, oprirea este chemată înainte de distrugere.

Chemat de browser înainte de descărcarea acestei pagini.

De obicei, atunci când creați un applet, suprascrieți metoda init () și implementați generarea de ecran în el. În acest caz, toată funcționalitatea aplicației este furnizată de ascultători de câmpuri, butoane și alte componente vizuale active. Să luăm în considerare un exemplu.

Exemplu de applet

În acest exemplu de demonstrație pură, există o etichetă cu inscripția "Primul aplet", un buton și un câmp de text în care se afișează textul "Hi" când este apăsat butonul.

Pentru a rula acest applet, faceți clic pe următorul link: Un exemplu de aplet.

Observați un detaliu. Ca și în cazul JFrame for JApplet, trebuie să adăugați componente în panoul getContentPane ().

Ie applet arata foarte mult ca un program de conversație normală în Java, dar spre deosebire de programe interactive am discutat exemple în care formarea ecranului se efectuează în constructor, ecranul este format în init metoda ().

Lansarea de aplicații

Cu toate acestea, dacă încercați să utilizați codul de mai sus AppDemo.html. rezultatul va fi aproximativ același ca cel prezentat în Fig.

Faptul este că acum din mai multe motive de natură comercială, applet-ul tag-ul nu este susținut de browsere și totul a devenit oarecum mai complicat. Sun, pentru sprijinul independent al muncii lui Apple, a trebuit să creeze elemente plug-in pentru browserele Internet Explorer și Netscape Navigator. În consecință, în codul html ar trebui să existe link-uri de un fel special la aceste elemente.

De exemplu, echivalentul textului de mai sus ar trebui să pară așa.

Dacă applet-ul este creat și funcționează normal pe mașină, nu înseamnă nimic. În ceea ce privește toate aplicațiile de rețea, pentru appleturi trebuie să efectuați teste suplimentare pe Internet. Pentru a face acest lucru, trebuie să aveți propriul site, să puneți applet-ul pe site și să îl sunați prin Internet de la mai multe mașini diferite, de preferință folosind diferite browsere.

Câteva recomandări simple

Uneori, atunci când scrieți applet-uri, în loc de init, redefinește metoda vopselei. Aceasta este o metodă a clasei Container. care este baza pentru clasa Applet. O astfel de implementare este posibilă, dar nu este recomandată.

Applete și aplicații

Aproape orice aplicație Java de dialog poate fi pus în aplicare, astfel încât să poată funcționa ca un program și ca un Applet (nu trebuie doar să uite limitările impuse applet-uri pentru accesul la resursele de mașini).

Să schimbăm exemplul de mai sus, astfel încât să funcționeze ca o aplicație normală.

Pentru a face acest lucru, trebuia să implementăm principala metodă. În el, creăm un obiect al clasei noastre AppDemo. obiect al clasei JFrame. plasați un obiect AppDemo pe cadru, setați dimensiunea cadrului. După aceasta, numim metodele de inițiere și de pornire. efectuând acțiunile pe care le-ar face browserul dacă am rula aplicația cu el. Și, în final, activăm cadrul folosind metoda setVisible.

Lucrare practică

Implementați un exemplu cu un notebook, astfel încât să funcționeze atât ca aplicație, cât și ca un applet.

Articole similare