Java ile yazdığınız programlar için hazırladığınız arayüzlerde görsel düzen sağlamak için Layout (serim) kullanılır. Eğer Layout kullanmazsanız Java derleyicisi yazdığınız kod sıralamasına göre dağınık bir şekilde yerleştirir. Yani; “Şu buton şurda olsun, şu resimler şöyle dursun, menü yukarıda olsun…” diyorsanız bu isteğinizi Layoutlar yerine getirir. Ama nasıl?
Yapmanız gereken program kodlarınıza uygun yerde aşağıdakilerden birini seçerek düzenleyip yerleştirmek. Hepsi bu kadar.
1.Border Layout
2.Flow Layout
3.Card Layout
4.Grid Layout
5.Karma Layout
1. Border Layout
Arayüzde 5 farklı yere (üst,alt,orta…) arayüz bileşenlerini ekleyebileceğiniz Layout çeşididir.

Örnek;
import javax.swing.*; import java.awt.*; public class BorderL { private JButton buton1,buton2,buton3; private JTextField text1; private JTextArea text2; private JFrame cerceve; public void arayuzHazıla(){ cerceve = new JFrame("www.javaci.net --> BorderLayout"); Container cont = cerceve.getContentPane(); JPanel pane = new JPanel(); //Bileşenleri ekleyeceğimiz Panel. //Aslında bileşenleri doğrudan Container'a da ekleyebilirsiniz. buton1=new JButton("üst buton"); text1=new JTextField("alt metin alanı"); text2=new JTextArea("orta metin alanı"); buton2=new JButton("sağyan buton"); buton3=new JButton("sol buton alan"); pane.setLayout(new BorderLayout()); // Layout tipini belirliyoruz. pane.add(buton1,BorderLayout.NORTH); pane.add(text1,BorderLayout.SOUTH); pane.add(text2,BorderLayout.CENTER); pane.add(buton2,BorderLayout.EAST); pane.add(buton3,BorderLayout.WEST); cont.add(pane); cerceve.setVisible(true); cerceve.setSize(400,200); } public static void main(String[] args){ BorderL bl = new BorderL(); bl.arayuzHazıla(); } }
2. Flow Layout
Java’nın varsayılan olarak kullandığı serim biçimidir. Kod sırasına göre sayfaya yerleşir. Java yerleştirmeyi “Center” olarak yapar. Yerleşim şeklini değiştirebilmek için
.setLayout(new FlowLayout(FlowLayout.LEFT, 15, 15));
.setLayout(new FlowLayout(FlowLayout.RIGHT, 15, 15));
.setLayout(new FlowLayout(FlowLayout.LEADING, 15, 15));
.setLayout(new FlowLayout(FlowLayout.TRAILING, 15, 15));
Buradaki 15, 15 parametreleri arayüzde yerleştirmenin soldan ve yukarıdan ne kadar mesafe ile başlayacağını belirtir.

Örnek;
import javax.swing.*; import java.awt.*; public class FlowL { private JButton buton1,buton2; private JTextField text1,text2; private JFrame frame; private Container cont; private JPanel panel; public void arayuzHazirla(){ frame = new JFrame("www.javaci.net --> Flow Layout"); cont = frame.getContentPane(); panel = new JPanel(); panel.setLayout(new FlowLayout()); //Panele Layout atanıyor. panel.setBackground(Color.orange); buton1 = new JButton("buton 1"); buton2 = new JButton("buton 2"); text1 = new JTextField(5); text2 = new JTextField(15); panel.add(buton1); panel.add(buton2); panel.add(text1); panel.add(text2); cont.add(panel); frame.setSize(400,200); frame.setVisible(true); } public static void main(String[] args) { FlowL fl=new FlowL(); fl.arayuzHazirla(); } }
3. Card Layout
Bu serim şekli üst üste dizilmiş kartları andırır.Yani 3-4 arayüz bileşeni(Buton,text,label….) bir kartta diğer bileşenler bir kartta olabilir. Kartlar arası geçiş tamamen sizin hayal gücünüze bağlı. Yani bir Combo kutusu elemanlarıyla geçiş yapabileceğiniz gibi “ileri”, “geri” butonları ekleyerek de yapabilirsiniz.
Ancak bunun yerine çok daha profesyonel ve daha işlevsel olan “SEKME” sistemini kullanmanızı tavsiye ediyoruz. Bu yüzden anlatmayı uygun görmedim.
4. Grid Layout
Bu serim şekli adından da anlaşılacağı gibi arayüz bileşenlerini bir tablonun hücrelerine yerleştirir gibi sıralar. Kaç satıra ve kaç sütuna bölüneceğini belirliyorsunuz. Burada bileşen uzunlukları hücrenin boyu ile aynı oluyor.
.setLayout(new GridLayout(5,2,1,1));
Buradaki paramereler şu anlama geliyor. Birincisi program arayüzünün kaç satıra haliyle ikincisi kaç sütuna bölüneceğini gösteriyor. Bu durumda satır sayısı arttıkça bileşenlerin “eni” o kadar kısa olur. 3 ve 4. parametreler de bileşenler arasındaki mesafenin ne kadar olacığını “en” ve “boy” olarak belirliyor.

Örnek;
import javax.swing.*; import java.awt.*; public class GridLayoutDemo { private JButton buton1,buton2; //Bileşenler tanımlanıyor... private JTextField text1,text2; private JRadioButton radio1,radio2; private JFrame frame; private Container cont; private JPanel panel; public void arayuzHazirla(){ frame = new JFrame("www.javaci.net --> GridLayout"); cont = frame.getContentPane(); panel = new JPanel(); panel.setLayout(new GridLayout(5,2,1,1)); panel.setBackground(Color.orange); buton1 = new JButton("buton 1"); buton2 = new JButton("buton 2"); text1 = new JTextField(5); text2 = new JTextField(15); radio1 = new JRadioButton("radio 1"); radio2 = new JRadioButton("radio 2"); panel.add(buton1); panel.add(buton2); panel.add(text1); panel.add(text2); panel.add(radio1); panel.add(radio2); cont.add(panel); frame.pack(); frame.setSize(400,200); frame.setVisible(true); } public static void main(String[] args){ GridLayoutDemo gld = new GridLayoutDemo(); gld.arayuzHazirla(); } }
5. Karma Layout
Bu serim şekli ise zaten isminden anlaşılıyor. Serimleri karışık olarak kullanabilirsiniz. Yani Border Layout şeklinde “center” bölümüne bir Grid sistemi döşeyebilirsiniz.Ya da tersini yapabilirsiniz. Bu tabii ki size kalmış bir durum.

Örnek;
import javax.swing.*; import java.awt.*; public class Mixed { private JButton buton1,buton2,buton3; private JButton dugme1,dugme2,dugme3; private JRadioButton radio1,radio2; private JTextField text1; private JTextArea text2; JPanel pane,panelOrta; private JFrame cerceve; public void arayuzHazıla(){ cerceve = new JFrame("www.javaci.net --> Karma Layout"); Container cont = cerceve.getContentPane(); pane = new JPanel(); panelOrta = new JPanel(); buton1 = new JButton("üst buton"); buton2 = new JButton("sağ buton"); buton3 = new JButton("sol buton"); dugme1 = new JButton("dugme1"); dugme2 = new JButton("dugme2"); dugme3 = new JButton("dugme3"); radio1 = new JRadioButton("radio 1"); radio2 = new JRadioButton("radio 2"); text1 = new JTextField("alt metin alanı"); text2 = new JTextArea("orta metin alanı"); pane.setLayout(new BorderLayout()); // Layout tipini belirliyoruz. panelOrta.setLayout(new GridLayout(6,1,1,1)); panelOrta.setBackground(Color.orange); pane.add(buton1,BorderLayout.NORTH); pane.add(text1,BorderLayout.SOUTH); pane.add(buton2,BorderLayout.EAST); pane.add(buton3,BorderLayout.WEST); panelOrta.add(dugme1); panelOrta.add(dugme2); panelOrta.add(dugme3); panelOrta.add(radio1); panelOrta.add(radio2); pane.add(panelOrta, BorderLayout.CENTER); cont.add(pane); cerceve.setVisible(true); cerceve.setSize(400,200); } public static void main(String[] args){ Mixed m = new Mixed(); m.arayuzHazıla(); } }

Son Yorumlar