Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
AccessAdobe photoshopAlgoritmiAutocadBaze de dateCC sharp
CalculatoareCorel drawDot netExcelFox proFrontpageHardware
HtmlInternetJavaLinuxMatlabMs dosPascal
PhpPower pointRetele calculatoareSqlTutorialsWebdesignWindows
WordXml


ADMINISTRATORUL DE DISPUNERE TABELARA NEPROPORTIONALA (GridBagLayout)

java



+ Font mai mare | - Font mai mic



ADMINISTRATORUL DE DISPUNERE TABELARA NEPROPORTIONALA (GridBagLayout)

Acesta administrator reprezinta de fapt o extensie a dispunerii tabelare.Exista cateva diferente intre aceasta dispunere si cea tabelara standard:

-         o componenta poate ocupa mai multe celule ale tabelului



-         proportiile intre diferitele randuri sau coloane nu trebuie sa fie aceeasi

-         componentele dispuse in cadrul celulelor pot fi aranjate in diferite moduri

Pentru a crea o astfel de dispunere se folosesc clasa GridBagLayout si clasa GridBagConstraints.Prima clasa este chiar administratorul de dispunere iar cea de a doua este folosita pentru a defini constrngerile fiecarei componente ce va fi plasata intr-o celula - pozitia, dimensiunile, alinierea, etc.

In forma generala crearea unei dispuneri tabelare neproportionale presupune cativa pasi:

-         crearea unui obiect GridBagLayout si stabilirea sa ca administrator de dispunere curent

-         crearea unei noi instante a clasei GridBagConstraints

-         definirea restrictiilor pentru o componenta

-         anuntarea componentei si a restrictiilor sale in administratorul de dispunere

-         introducerea componentei in container

Pentru realizarea in practica a unei astfel de dispuneri sa luam un exemplu direct:

-         prima etapa:proiectarea tabelului

Aceasta parte se realizeaza pe hartie, unde vom schita interfata grafica.Fiecare componenta a interfetei trebuie plasata intr-o celula separata - desi o componenta poate ocupa mai multe celule.

Schita noastra sa presupunem ca este ceva de genul:


La pasul urmator ar trebui sa tabelam deja interfata noastra etichetand celulele cu coordonatele lor x, y:


0,0 1,0


0,1 1,1


0,2 1,2

-         etapa a doua:crearea tabelului

In aceasta etapa ne vom axa pe dispunere doar asa ca vom folosi doar niste butoane care sa tina locul elementelor reale ce vor apare pe panou.

Pentru usurinta specificarii restrictiilor vom defini o metoda care preia mai multe valori si stabileste restrictiile pentru aceastea.Metoda definireRestrictii() preia sapte argumente:un obiect GridBagConstraints si sase intregi care reprezinta variabilele gridx, gridy, gridwidth, gridheight, weightx si weighty.

Primele doua argumente reprezinta valorile coordonatelor celulei respective - in cazul in care o componenta ocupa mai multe celule coordonatele date sunt cele ale celului aflate cea mai in stanga-sus ca pozitie.

Urmatoarele doua argumente reprezinta numarul de celule pe care le ocupa componenta:gridwidth pentru coloane si gridheight pentru linii.

Ultimele doua argumente sunt date pentru latimea si inaltimea celulei - ca proportii din totalul pe orizontala respectiv verticala.

Pentru atribuirea restrictiilor unui obiect se foloseste metoda setConstraints() ; aceasta preia doua argumente:componente si restrictiile acesteia.Dupa ce toate acestea s-au realizat componenta poate fi adaugata in panou.

Crearea de fapt a dispunerii se face in metoda init().Aici vom defini un administrator de dispunere GridBagLayout si se creaza un obiect pentru restrictii.

La finalul acestei etape trebuie sa verificam aspectul functional al tabelului, daca are numarul corect de linii si coloane, daca unele componente care ocupa mai multe celule sunt prezentate corect si daca nu apar alte anomalii vizibile.

-         etapa a treia:determinarea proportiilor

Acum se vor determina proportiile liniilor si coloanelor in relatiile cu alte linii si coloane.Cel mai usor este sa luam valorile weightx si weighty ca procente din latimea si inaltimea totale ale panoului.In acest caz valorile insumate pentru toate variabilele weightx si weighty trebuie sa fie 100.

Celulele care ocupa mai multe linii sau coloane trebuie sa aiba totdeauna valoarea o in directia in care se extind.In afara de acest lucru trebuie sa ne hotaram doar asupra celulei care va primi o valoare ; toate celelalte de pe rand sau de pe coloana trebuie sa aiba valoarea 0.

Scopul acestei etape este de a incerca sa stabilim proportiile de baza ale liniilor si celulelor care vor apare pe ecran.In general in aceasta etapa vor apare mai multe incercari pana la obtinerea rezultatului dorit.

-         etapa a patra:adaugarea si aranjarea componentelor

Aici mai apar restrictiile care sa aranjeze componentele in cadrul celulelor.Avem doua astfel de restrictii:fill si anchor.

Restrictia fill determina - pentru componentele care se pot extinde in orice directie - in ce directie se face aceasta extindere (cum ar fi casetele de text sau butoanele).Restrictia fill poate avea una dintre urmatoarele patru valori, definite drept variabile de clasa in GridBagConstrints:

-         GridBagConstraints.BOTH - determina extinderea pentru a umple celula in ambele directii

-         GridBagConstraints.NONE - determina afisarea la dimensiunea mimina necesara componentei

-         GridBagConstraints.HORIZONTAL - determina extinderea pe orizontala

-         GridBagConstraints.VERTICAL - determina extinderea pe verticala

Implicit restrictia fill are valoarea NONE pentru toate componentele.

A doua restrictie care afecteaza aparitia unei componente intr-o celula este anchor.Aceasta se aplica doar componentelor care nu umplu intreaga celula si indica functiilor AWT unde sa plaseze componenta in cadrul celulei.Valorile posibile pentru aceasta restrictie sunt:

-         GridBagConstraints.NORTH

-         GridBagConstraints.NORTHEAST

-         GridBagConstraints.SOUTH

-         GridBagConstraints.SOUTHWEST

-         GridBagConstraints.EAST

-         GridBagConstraints.SOUTHEAST

-         GridBagConstraints.WEST

-         GridBagConstraints.NORTHWEST

-         GridBagConstraints.CENTER

Valoarea prestabilita pentru ancorare este GridBagConstraints.CENTER.

-         etapa a cincea:ajustari

In realitate aceasta etapa apare aproape totdeauna ; pentru ca totul sa arate perfect va trebui sa mai facem anumite modificari ale unor restrictii de obicei.

In listingul de mai jos avem un exemplu complet de creare a unui applet care implementeaza o interfata grafica similara celei prezentate in etapa intai a constructiei teoretice a unei interfete ce foloseste un administrator de dispunere tabelara neproportionala:

import java.awt.*;

public class NumeParola extends java.applet.Applet

public void init()

}

In afara restrictiilor discutate anterior mai trebuie amintite inca doua restrictii ipadx si ipady.Acestea doua controleaza bordurile - spatiul care inconjoara o componenta dintr-un panou.In mod prestabilit componentele nu au nici un spatiu liber in jurul lor.Restrictia ipadx adauga un spatiu in stanga si in dreapta componentei iar ipady adauga deasupra si dedesubtul componentei.

Pentru a determina spatiul lasat in jurul unui panou putem folosi insertiile (insets).Clasa Insets contine valori pentru insertiile din partea de sus, de jos, din stanga si din dreapta, valori folosite la desenarea panoului.

Insertiile determina spatiul dintre marginile panoului si comonentele acestuia.

Pentru a modifica insertiile trebuie sa suprascriem metoda insets() - in Java 1.02, sau metoda getInsets() din Java2 - ambele metode realizand acelasi lucru.

In cadrul metodei getInsets() (sau insets()) se creaza un nou obiect Insets unde constructorul clasei primeste ca argumente patru valori intregi reprezentand insertiile pentru partea de sus, din stanga, de jos si din dreapta panoului.Metoda va returna apoi obiectul Insets.In continuare avem o prezentare a codului necesar pentru adaugarea insertiilor intr-o dispunere tabelara:10 pentru partea de sus si de jos si 30 pentru laterale:

public Insets getInsets()



Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 1153
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved