Başlarken bir önceki makalemizde yazdıklarımızın üzerine bir şeyler ilave etmeye çalışalım.
Şimdi bir şekilde öğrendik ki; Java'da Swing bileşenleri ile bir GUI(Graphical User Interface) oluştururken bileşenleri barındıracak nesnenin(container) Layout'unun tanımlanması gerekiyor. Bu set etme işini de aşağıdaki kodla yapabiliriz.
frame.getContentPane().setLayout(........)
Bu da LayoutManager arayüzünün açıklaması:
AWT ve Swing içinde 8 farklı Layout vardır ve hepside LayoutManager arayüzünü uygularlar.
FlowLayout için LayoutManager arayüzünün uyarlanışı:
public class FlowLayout extends Object implements LayoutManager, Serializable
FlowLayout sınıfından bir nesne türetelim ve LayoutManager olarak setLayout metoduna parametre olarak gönderelim. Bunun için FlowLayout sınıfının yapıcı metotlarından 3. sünü kullanalım.
Artık bundan sonrası frame üzerinde bileşenlerin nasıl durduğunu görmek (frame üstüne bileşen eklemenin nasıl olduğunu bundan önceki makalemizde görmüştük). Bu kısım için en güzel kaynak: Sun'ın java bağlantılarıdır.
Frame üzerine birkaç bileşen ekleyelim ve son durumunu görelim.
Ve bu yazdıklarımızın yazı hali:
package javaapplication;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.LayoutManager;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
public class Main {
public static void main(String[] args) {
JFrame frame = new JFrame("Başlıkta görünsün");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(250, 450);
frame.setVisible(true);
int iYatayBosluk = 5;
int iDikeyBosluk = 15;
LayoutManager layoutMgr = new FlowLayout(FlowLayout.CENTER, iYatayBosluk, iDikeyBosluk);
// javax.swing paketindeki rootpanecontainer interface'inin bir metodu.
// Kısaca top-level container'ların contentpane'ine erişmek için kullanılır.
Container enUsttekiKap = frame.getContentPane();
enUsttekiKap.setLayout(layoutMgr);
// Frame üzerine koymak istediğimiz JLabel bileşenini oluşturup
JLabel lbl = new JLabel();
// Metnini değiştiriyoruz
lbl.setText("İsim: ");
// JLabel sınıfından oluşturduğumuz lbl nesnesini ekliyoruz.
enUsttekiKap.add(lbl);
// 5 kolonluk bir genişlikte metin kutusu oluştur.
JTextField txt = new JTextField(5);
enUsttekiKap.add(txt);
// Bir de düğme ekleyelim.
JButton btn = new JButton("GÖNDER");
enUsttekiKap.add(btn);
}
}
Ve uygulama: