Preluarea și vizualizarea imaginilor raster

În această secțiune, am dat un exemplu de o aplicație independentă Java care se poate descărca și de afișare în fereastra de fișiere raster în format grafic GIF și GPG dumneavoastră.

Un pic de teorie

Lucrul cu fișiere grafice utilizând software-ul standard de interfață pentru Windows, de obicei, cauzează o mulțime de dificultăți pentru programatori. Ei trebuie să descărcați mai întâi fișierul de imagine în memorie, iar apoi analiza antete, efectuați decompresie, selectați și implementa paleta de culori.

Programatorii crea un Java stand-alone, sunt într-o poziție mai bună - la dispoziția lor sunt clase convenabile proiectate pentru a lucra cu formatele GIF și fișiere JPG.

Dacă cererea dumneavoastră are nevoie să se afișeze în grafica raster fereastra, care sunt în fișierele, atunci este suficient pentru a crea un obiect de clasa de imagine, și apoi afișa în fereastra folosind metode standard.

Iată cum să rezolve prima parte a acestei probleme - încărcați fișierul grafic:

Aici, vom obține mai întâi o referire la Toolkit clasa de serviciu, apelarea getDefaultToolkit metodă, și apoi utilizați metoda getImage, definită în această clasă. În acest caz, vom trece această cale metodă pentru fișierul imagine locală c: \ Pics \ mypic.jpg.

Pentru selectarea fișierului aplicație poate afișa caseta de dialog standard de clasa FileDialog.

În ceea ce privește a doua problemă - a afișa imaginea încărcată în fereastra aplicației, atunci acesta poate fi rezolvată folosind metoda drawImage.

Descriere exemplu

În fereastra principală a aplicației noastre stand-alone are un meniu de fișiere cu linie și ieșire Deschideți (fig. 1).

Fig. 1. Fereastra principală

Folosind șir deschis, puteți selecta și a încărca un fișier pentru a afișa orice grafic care are un format GIF sau JPG. Panoul corespunzător dialog de selectare a fișierului prezentat în Fig. 2.

Fig. 2. afișajul panoului de dialog pentru selectarea fișierelor

Vă rugăm să rețineți că am limitat gama de GIF utilizator și JPG tip de fișier, stabilind conținutul corespunzător al câmpului „File name“.

Luați în considerare codul sursă al aplicației.

Clasa principală a aplicației

În clasa principală a aplicației noastre, vom crea o fereastra de clasa FrameWindow și o afișează:

clasa FrameWindow

clasa FrameWindow definite în cererea noastră de la clasa de bază Frame și implementează trei interfețe:

ActionListener interfață și WindowListener aplică, respectiv, să se ocupe de evenimentele din meniu și evenimente care apare atunci când un utilizator încearcă să închidă fereastra principală a aplicației. interfață ComponentListener nevoie pentru a urmări modificările în fereastra principală.

Următoarele patru câmpuri sunt furnizate în FrameWindow clasă pentru link-uri la meniu și liniile sale:

Această imagine este desenată în imgViewer panel clasa situată în fereastra SP:

Programul creează, de asemenea, un MediaTracker obiect de clasă, destinat să aștepte finalizarea descărcării imaginii selectate:

clasa FrameWindow Designer

Constructorul primul lucru FrameWindow clasa stabilește titlul aplicației fereastra principală și dimensiunea acestei ferestre:

Mai mult, acesta generează meniu:

conectați Stivuitoare eveniment la bara de meniu:

Apoi, meniul este setat în fereastra principală a aplicației:

Ultimul pas - setarea manipulare eveniment asociat cu închiderea fereastra principală a aplicației și de a schimba dimensiunea:

Metoda clasei actionPerformed FrameWindow

Atunci când utilizatorul selectează Open din meniul File linia, metoda FileOpen se numește, download-uri și afișează o reprezentare grafică:

Selectarea rând Ieșire din același meniu, duce la completarea cererii.

Metoda FileOpen a clasei FrameWindow

În primul rând metoda FileOpen afișează o casetă de dialog standard de selecție fișier:

Vă rugăm să rețineți că am restricționat lista de fișiere care sunt afișate în acest panou specificând o mască pentru a selecta fișiere de setFile.

Calea completă la fișierul vom scrie câmpul szCurrentFilename și afișat în antetul ferestrei principale:

În etapa următoare, vom încărca imaginea grafică dintr-un fișier, crearea unui obiect de clasă Imagine:

În continuare, așteptăm până când procesul de boot:

Înainte de afișarea conținutului fișierului descărcat, vom verifica câmpul SP:

Dacă mai devreme în fereastra aplicației a fost încărcat o altă imagine, vom elimina înainte de a încărca un container nou de la ea sp clasa ScrollPane.

Apoi, vom crea un nou container și setați dimensiunea la dimensiunea ferestrei principale:

container creat se adaugă la fereastra aplicației folosind componenta modul de plasare BorderLayout:

Imaginea este desenată în fereastra panoul imgViewer care este creat după cum urmează:

Rețineți că aici vom cere dimensiunea panoului egală cu dimensiunea graficului încărcat.

După această clasă panou imgViewer se adaugă la clasa geam ScrollPane:

vom efectua componenta de plasare obligatorie, referindu-se la acest sistem la Layout Manager pentru dimensiunile corecte setările container:

Metoda clasei componentResized FrameWindow

Atunci când utilizatorul redimensionează fereastra principală a aplicației, metoda componentResized efectuează reamenajarea și redesenarea containere sp si iv:

componentShown metoda clasei FrameWindow

Metoda componentShown se numește atunci când fereastra principală a aplicației de cartografiere a:

Avem aceasta efectuează aceiași pași ca și metoda componentResized discutate anterior.

windowClosing metoda clasei FrameWindow

Această metodă se numește atunci când utilizatorul încearcă să închidă fereastra principală a aplicației. punerea în aplicare a metodei noastre de completare a cererii:

Alte metode de clasă FrameWindow

În FrameWindow clasă definit mai multe metode care nu fac nimic, dar sunt necesare pentru caracterul complet al punerii în aplicare a interfețelor relevante:

clasa imgViewer

Clasa imgViewer creat pe baza clasei Panel:

În clasa am definit două domenii:

Primul dintre aceste magazine o imagine de referință, iar al doilea - dimensiunea geamului, transmis prin al doilea parametru constructorului.

Iată modul în care aceste domenii sunt inițializate cu constructorul:

vopsea metoda de clasa imgViewer

Metoda de vopsea atrage o imagine grafică în colțul din stânga sus al panoului:

Alte metode de clasă imgViewer

Sunt necesare următoarele metode pentru funcționarea corespunzătoare a sistemului de plasare componente în JDK versiunea 1.0 și 1.1:

Ei pur și simplu a reveni dimensiunile panoului.