Veysel Uğur KIZMAZ

Java Frame Layoutları

27.03.2012Okunma Sayısı: 18007Kategori: Java

 Önceki makalemizde Frame oluşturma işlemini incelemiştik. Java’da Frame üzerinde kontrollerin dizimleri için belli standartlar bulunmaktadır. Buna Java halkı arasında Layout diyorlar. Java’da birkaç çeşit Layout bulunmaktadır:

1. Grid Layout
2. Border Layout
3. Flow Layout
4. Card Layout
5. GridBag Layout
Öncelikle Layout kullanmadan bir tasarım yapalım ve bu tasarımın görünümünü inceleyelim. Örnek tasarımımızda sadece 3 tane buton olsun.
      publicstaticvoid main(String[] args) {
            Frame frame1 = new Frame();
            frame1.setSize(400, 400);
           
            Button buton1 = new Button("Tıkla 1");
            frame1.add(buton1);
            Button buton2 = new Button("Tıkla 2");
            frame1.add(buton2);
            Button buton3 = new Button("Tıkla 3");
            frame1.add(buton3);
           
            frame1.setVisible(true);          
      }
 
Projemizi çalıştıralım.
Sadece buton3 isimli butonumuz ekranda göründü. Bunun sebebi, en son bu frame üzerine eklediğimiz içindir. Şimdi sırayla tüm layoutları tek tek deneyerek frame üzerinde nasıl yerleştiğini inceleyelim.
1. Grid Layout:
Grid Layout’ta kontorllerimiz grid gibi sütunlar halinde yerleşmektedir.
      publicstaticvoid main(String[] args) {
            Frame frame1 = new Frame();
            frame1.setSize(400, 400);
            frame1.setLayout(new GridLayout());
           
            Button buton1 = new Button("Tıkla 1");
            frame1.add(buton1);
            Button buton2 = new Button("Tıkla 2");
            frame1.add(buton2);
            Button buton3 = new Button("Tıkla 3");
            frame1.add(buton3);
           
            frame1.setVisible(true);          
      }
 
Kodumuzu çalıştıralım :
Şimdi kodumuzda küçük bir düzenleme yapalım : GridLayout() sınıfının parametrelerini düzenleyelim. 2 satır 2 sütundan oluşsun .
      publicstaticvoid main(String[] args) {
            Frame frame1 = new Frame();
            frame1.setSize(400, 400);
            frame1.setLayout(new GridLayout(2,2));
           
            Button buton1 = new Button("Tıkla 1");
            frame1.add(buton1);
            Button buton2 = new Button("Tıkla 2");
            frame1.add(buton2);
            Button buton3 = new Button("Tıkla 3");
            frame1.add(buton3);
           
            frame1.setVisible(true);          
      }
Kodumuzu çalıştıralım.
2. Border Layout :
Border Layout sayesinde kontrollerimizi belirli bir hizalamaya koyuyoruz. Frameimizin altına, üstüne, sağına, soluna ... kontorllerimizi yerleştiriyoruz. Bu koordinatları belirlemek için East, West, South, North, Center keywordlerini kullanıyoruz.
      publicstaticvoid main(String[] args) {
            Frame frame1 = new Frame();
            frame1.setSize(400, 400);
            frame1.setLayout(new BorderLayout());
           
            Button buton1 = new Button("Tıkla 1");
            frame1.add("East",buton1);
            Button buton2 = new Button("Tıkla 2");
            frame1.add("West",buton2);
            Button buton3 = new Button("Tıkla 3");
            frame1.add("South",buton3);
           
            frame1.setVisible(true);          
      }
 
Projemizi çalıştıralım.
 
3. Flow Layout :
Flow layout ile kontroller soldan sağa yerleştirilir. Soldan sağa yerleşme tamamlanınca alt satırdan yerleşmeye devam eder.
      publicstaticvoid main(String[] args) {
            Frame frame1 = new Frame();
            frame1.setSize(200, 200);
            frame1.setLayout(new FlowLayout());
           
            Button buton1 = new Button("Tıkla 1");
            frame1.add(buton1);
            Button buton2 = new Button("Tıkla 2");
            frame1.add(buton2);
            Button buton3 = new Button("Tıkla 3");
            frame1.add(buton3);
            Button buton4 = new Button("Tıkla 4");
            frame1.add(buton4);
           
            frame1.setVisible(true);          
      }
 
Projemizi çalıştıralım.
 
 
Veysel Uğur KIZMAZ
Bilgisayar Mühendisi
veysel@ugurkizmaz.com
www.ugurkizmaz.com
twitter: @vukizmaz