Clasa GridLayout

Gestionarele de poziționare din clasa java.awt.GridLayout plasează componentele în celulele unei grile rectangulare. În consecință, toate componentele de pe aceeași coloană sunt aliniate vertical.

Clasa are doi constructori:
    public GridLayout(int rows, int cols) - are ca argumente numărul de linii și de coloane al grilei;
    public GridLayout(int rows, int cols, int hgap, int vgap) - are în plus ca argumente spațiul orizontal și, respectiv, vertical între componente.

Deși în constructor se indică atât numărul de linii, cât și cel de coloane ale grilei, în realitate numai numărul de linii este respectat, în timp ce numărul de coloane este practic ignorat. La stabilirea amplasării componentelor în container, dacă numarul lor total este mai mic sau egal cu cel de linii, toate componentele vor fi așezate vertical, una sub alta. Dacă numărul de componente este mai mare decât numărul de linii, numărul de coloane se stabilește automat, prin împărțirea numărului de componente la cel de linii, cu rotunjire în plus. Plasarea efectivă a componentelor în celulele grilei astfel creeate se face apoi de la stânga la dreapta și de sus in jos, la fel ca în cazul gestionarului FlowLayout, dar respectând alinierea verticală și orizontală impusă de grilă.
 
Exemplu
În fișierul Grila.java se dă un exemplu de aplicație, în care se testează gestionarul de poziționare GridLayout. La punerea în execuție a aplicației, se dau ca parametri în linia de comandă numărul total de butoane de contorizare, numărul de linii al grilei și numărul de coloane. Se poate observa ordinea în care sunt butoanele așezate pe grilă și modul în care se schimbă aspectul ferestrei, dacă se modifică cu mouse-ul dimensiunile acesteia. Se poate verifica și ce se întâmplă dacă numărul de coloane dat ca parametru este mai mic sau mai mare decât cel necesar.
 
/* Testarea alinierii componentelor cand se foloseste
   gestionarul de pozitionare GridLayout.

   In fereastra aplicatiei apar mai multe butoane din clasa
   ButonContor si un buton de anulare. 

   Punerea in executie a aplicatiei se face prin comanda
    java Grila <numarContoare> <nrLinii> <nrColoane>

   Actionarea butonului de anulare produce anuloarea tuturor
   contoarelor.
*/

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

class Grila { 
 static AF af=new AF(); // ascultatorul de fereastra
 static Actiuni actiuni=new Actiuni(); // ascultatorul
               // butonului de anulare
 static IUG iug;  // fereastra aplicatiei
 static int numarButoane, nrLinii, nrColoane;

 static class IUG extends JFrame {
  JLabel lab=new JLabel("Actionati butoanele");
  ButonContor bc[];
  JButton br=new JButton("Anulare");

  IUG(String titlu) { // constructorul ferestrei aplicatiei
   super(titlu);
   Container cp=getContentPane();
   setSize(400,250);
   setLocation(200,150);
   addWindowListener(af);
   cp.setLayout(new GridLayout(nrLinii, nrColoane)); // setarea 
                           // gestionarului de pozitionare
   bc=new ButonContor[numarButoane];
   for(int i=0; i<numarButoane; i++) { 
    bc[i]=new ButonContor("B"+(i+1)); // crearea butoanelor
    cp.add(bc[i]); // adaugarea butoanelor la contentPane
   }
   cp.add(br); // adaugarea butonului de anulare
   br.addActionListener(actiuni); // adaugarea ascultatorului
   setVisible(true);
  }
 }

 static class AF extends WindowAdapter { 
  public void windowClosing(WindowEvent e) {
   System.exit(0);
  }
 }

 static class Actiuni implements ActionListener {
  public void actionPerformed(ActionEvent e) {
    String comanda=e.getActionCommand();
    if(comanda.equals("Anulare"))
      for(int i=0; i<numarButoane; i++) iug.bc[i].reset();
  }
 }

 public static void main(String args[]) throws Exception {
  /* Verificarea numarului de argumente din linia de comanda */
  if(args.length!=3) {
    System.out.println(
     "Utilizare: java  <numarButoane> <nrLinii> <nrColoane>");
    System.exit(1);
  }
  /* Preluarea argumentelor din linia de comanda */
  numarButoane=Integer.parseInt(args[0]); 
  nrLinii=Integer.parseInt(args[1]);
  nrColoane=Integer.parseInt(args[2]);
  /* Crearea ferestrei aplicatiei */
  iug=new IUG("GridLayout cu "+numarButoane+
   " butoane de contorizare");
 }
}



© Copyright 2000 - Severin BUMBARU, Universitatea "Dunărea de Jos" din Galați