Java / Layouts / GroupLayouts

İnternette pek kaynağı bulunmayan ve diğer layoutlara nazaran daha zor olan GroupLayout, doğru yerlerde kullanıldığında oldukça kullanışlı olmakta. Video yok mu dersen (ki bu yazıda çok detaylı bir şekilde ele aldım) buraya tıklayarak farklı bir kaynağa bakabilirsin :(
  • GroupLayout'u kısaca özetlersek;
    • Hem yatay, hem de dikey olarak özel tasarlanmış bir layout oluşturmamıza olanak sağlamakta.
    • Bu layout diğer layoutların aksine, new GroupLayout(...) şeklinde kullanılmamakta, bunu kullanmak için GroupLayout gl = new GroupLayout(component); şeklinde nesnesini oluşturup özelleştirmemiz gerekmekte.
      • compenent ; Layout'u kullanacak olan compenent.
    • Özelleştirmeyi yaparken, soldan sağa (horizontal) ve yukarıdan aşağı (vertical) olarak componentlerin konumlarını ayarlamamız gerekmekte. Ayrıca girilen kodların birbiri ile uyumlu olması gerekmekte, aksi halde kod hata verecektir.
  • Ana metodları;
    • setHorizontalGroup(Group grup); Componentlerin yatay konumlarını bu metodu kullanarak ayarlayacağız.
    • setVerticalGroup(Group grup); Componentlerin dikey konumlarını ayarlamak için.
    • Bu iki metodun içerisine;
      • createSequentialGroup(); Ardışık olarak compenent eklemek için oluşturulan grup.
      • createParallelGroup(); Paralel olarak component eklemek için oluşturulan grup.
    • Bu metodların ardından da
      • addComponent(component); ile componentlerimizi ekleyeceğiz.
      • addGap(...); ile gerekirse boşluk ekleyeceğiz.
  • Nasıl yapacağız?
    • Yatay İnceleme için hayali dikey çizgiler
    • Dikey İnceleme için hayali yatay çizgiler çiziyoruz
    • Aynı çizgide olanlar paralel, farklı çizgilerde olanlar seridir.
İnceleme 1


Üst taraftaki gibi bir çıktı almak istediğimiz zaman, adım adım yatay ve dikey olarak inceleme yapmamız gerekmekte; (gl = GroupLayout, b1 = buton1, b2 = buton2)
  • Yatay Olarak İncelersek;
    • Buton1 ve Buton2 birbirlerine seri (ardışık) durmakta.
    • gl.setHorizontalGroup(
      • gl.createSequentialGroup()
        • .addComponent(b1)
        • .addComponent(b2)
      • );
  • Dikey Olarak;
    • Buton1 ve Buton2 birbirlerine paralel durmakta.
    • gl.setVerticalGroup(
      • gl.createParallelGroup()
        • .addComponent(b1)
        • .addComponent(b2)
      • );
  • Detaylı olarak;

  • Kaynak kodlarına buraya tıklayarak ulaşabilirsin.


İnceleme 2


Üstteki resimdeki gibi bir boşluk eklemek istersen;
  • Yatay Olarak İncelersek;
    • Yatayda 10px boşluk var.
    • İnceleme 1'de alt kısımdaki yeri bulup, b1 ve b2 arasına .addGap(10) eklemen yeterli.
    • gl.setHorizontalGroup(
      • gl.createSequentialGroup()
        • .addComponent(b1)
        • .addGap(10) // Boşluk
        • .addComponent(b2)
      • );
  • Dikey Olarak;
    • Dikeyde boşluk bulunmamakta.

Bir örnek daha verelim;


İnceleme 3



  • Yatay Olarak İncelersek;(Kırmızı Çizgiler)
    • Buton1 ve Buton2 birbirlerine seri (ardışık) durmakta. ( Dikey konumlarını göz ardı ediyoruz, tek boyut olarak inceliyoruz.)
    • gl.setHorizontalGroup(
      • gl.createSequentialGroup()
        • .addComponent(b1)
        • .addComponent(b2)
      • );
  • Dikey Olarak; (Mor Çizgiler)
    • Buton1 ve Buton2 birbirlerine seri durmakta. (Yatay konumlarını göz ardı ediyoruz, tek boyut olarak inceliyoruz.)
    • gl.setVerticalGroup(
      • gl.createSequentialGroup()
        • .addComponent(b1)
        • .addComponent(b2)
      • );

Sonuç olarak;


Biraz daha örnek;



  • Yatay Olarak İncelersek;
    • Buton1, Buton2 ve Buton3 'e paralel.
    • Buton2 ve Butom3 birbirlerine seri.
  • Dikey Olarak;
    • Buton1, Buton2 ve Buton3 'e seri.
    • Buton2 ve Buton3 paralel.

Azıcık işleri zorlaştıralım :)

  • Yatay Olarak İncelersek;(Kırmızılar)
    • 1, 5 paralel
    • 2, 4 paralel
    • 3,  (2, 4), (1, 5) seri
  • Dikey Olarak;
    • 4, 3 paralel
    • 1, 2, (4, 3), 5 seri

Son zor bir örnek daha :)











Yorumlar

Popüler Yayınlar