Java Bilgileri | Bölüm 4

MegaCrafter

Obsidyen Madencisi
Mesajlar
1,419
En iyi cevaplar
0
Beğeniler
1,542
Puanları
3,070
Arka arkaya 4 konu açınca ne kadar iyi bir iş yapmış olduğum tartışılır. Ama boşverin. Şimdi size Swing özelliklerini göstericem. Yani pencere oluşturma, pencereye buton ekleme, paneller, labellar, yazı yazılacak yerleri vs. Başlayalım!

Pencere Oluşturma
Pencere oluşturmak için JFrame kullanıyoruz. Tabi bu sadece en basit olanı. JWindow, Frame falan da kullanabilirsiniz. Ama kullanıma en yatkın olanı JFrame. Tabi basit bir program yazacaksanız. Önce kodumuza bakalım:
Kod:
String başlık = "Program";
int genişlik = 600, uzunluk = 400;

JFrame frame = new JFrame(başlık);

frame.setResizable(false); // Eğer false yaparsanız, pencereyi büyütüp küçültemezsiniz.
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); // Burayı anlatıcam. Siz bunu JFrame.EXIT_ON_CLOSE diye görmüş olabilirsiniz. O da olur.
frame.setLayout(null); // Anlatıcam.

// Burada diğer işlemler olacak.

frame.setSize(genişlik, uzunluk); // Genişliğini ve uzunluğunu ayarlıyoruz.
frame.setVisible(true); // Pencereyi görünür yapıyoruz. Java'da pencereler ilk başta görünmezdirler.
Siz yukarıdaki yeri WindowConstants.EXIT_ON_CLOSE yerine JFrame.EXIT_ON_CLOSE olarak biliyor olabilirsiniz. Aslında hiçbir farkı yok. Ama metod o şekilde tasarlandığı için ben öyle yazıyorum. Ayrıca EXIT_ON_CLOSE olması çok önemli. Bu demektir ki pencere kapandığında programdan çıkılsın. Eğer böyle yapmazsanız, her pencere açıldığında yeni bir işlem başlar. Fazla olunca da bilgisayarınızın CPU'su hasar görebilir. Bunun 4 şekli var. EXIT_ON_CLOSE, HIDE_ON_CLOSE, DO_NOTHING_ON_CLOSE, DISPOSE_ON_CLOSE.
DISPOSE_ON_CLOSE ile HIDE_ON_CLOSE aynı işlevi görürler. Pencereyi kapatmaya çalıştığınızda sadece pencere kapanır. Ama program durmaz. DO_NOTHING_ON_CLOSE yaparsanız pencereyi kapatmaya çalıştığınızda hiçbir şey olmaz. Bu, eğer program kapanırken bir şey yapmanız gerekiyorsa işinize yarar.

Layout'u null yapmamız ise biraz önemli. Bize full manuel kontrol sağlıyor bu. Eğer bunu null yapmazsak eklediğimiz şeyleri istediğimiz yerde istediğimiz büyüklükte yapamayız. Layout'a göre kendileri şekillenirler.

Bu koddaki sıra önemli. Diğer işlemlerin olacağı yer ve sonrasındaki sıra yani. Yoksa eklediğiniz şeyler büyüklüğe uyum sağlamayabilir veya siz odaklanmadıkça gözükmeyebilirler. Şimdi ise butonlara geçelim.

Buton Ekleme
özür dilerim olmadığınız için butonların ne olduğunu tanımlamıyorum. Önce kodumuza bakalım yine:
Kod:
String isim = "Tuş";
int x = 0;
int y = 0;
int genişlik = 150;
int uzunluk = 80;
JButton btn = new JButton(isim); // Bu isim tuşun üzerinde gözükecek.

btn.setBounds(x, y, genişlik, uzunluk); // Butonumuzun nerde olduğunu ve büyüklüğünü ayarladık. Eğer Layout null olmasaydı buna izin verilmezdi.
btn.addActionListener(new ActionListener { // Tuşa basıldığında olacaklar
    @Override
    public void actionPerformed(ActionEvent e) {
        btn.setText("Basıldı"); // İsmini değiştirmek için kullanılan metod.
        // Olaylar
    }
});
btn.setEnabled(true); // Eğer false olursa tuşa basılamaz.

frame.add(btn); // Burası önemli. Tuşu pencerenize eklemezseniz asla gözükmez.
Burada butonu tanımladık, yerini ve büyüklüğünü ayarladık, tuşa basıldığında olacakları tanımladık ve penceremize tuşu ekledik. Pencereye eklediğiniz bölüm, tuşla alakalı işlemler bittikten sonra olmalıdır. Fazla önemli bir şey yok burda. Geçelim yazı alanına.

Yazı Bölgesi Ekleme
Belki kullanıcı adınızı yazmak için veya belki kullanıcının değiştiremeyeceği bir yazı yazmak için buna ihtiyacınız var. Kodumuzu inceleyelim:
Kod:
JTextField textfield = new JTextField();

textfield.setBounds(0, 0, 200, 40);
textfield.setEditable(true); // Eğer true olursa içine yazı yazılabilir. False olursa yazılamaz.
textfield.setText("Yazı Yazın"); // Textfield içindeki yazıyı değiştirir.
String fontismi = "Arial";
int kalın = Font.BOLD;
int büyüklük = 14;
Font font = new Font(fontismi, kalın, büyüklük);
textfield.setFont(font); // Textfield'ın fontunu ayarlıyoruz.
textfield.setBackground(Color.WHITE); // Arkaplan rengini ayarlıyoruz
textfield.setForeground(Color.BLACK); // Yazı rengini ayarlıyoruz.

frame.add(textfield);
Sanırım kod yeterince açıklayıcı olmuştur. Textfield için olan son 3 komut, buton için de aynı. Yani font, arkaplan, yazı rengi ayarlarını buton için de yapabiliyorsunuz. Galiba bütün swing özelliklerinde de geçerli bunlar. Pencereniz için bile arkaplan yapabilirsiniz.

TextArea ise TextField ile neredeyse aynı. Tek farkı, Textfield tek satırlık yazılar içindir. TextArea büyük paragraflar içindir. Normalde bunda ScrollPane'i de gösterecektim. Ama en son kullandığımda görünüş ile ilgili çok sıkıntı oldu. Ben de şimdilik anlatmıyorum onu. Kısaca ScrollPane de kaydırma yeri.

Panel ve Label
Panel ve Label, aynı şeylere denk geliyorlar. Ama siz panel kullanın. Paneller de pencerenin bölümleri gibidir. Mesela başla tuşunu içeren bir panel var. O tuşa basıldığında bu panel yok olacak ve diğer panel gözükecek. Mantık bu. Panelin işlevleri pencere ile tamamen aynı. Label, bize daha az çalışma alanı verir. Tabi o sizin seçiminiz. Kodumuz şöyle:
Kod:
JFrame frame = new JFrame("Başlık");
JPanel panel = new JPanel();
JButton btn = new JButton("Yazı");
// Burada buton için işlemleri yaptığımızı varsayın.
panel.add(btn);
frame.add(panel);

Bu diğerleri gibi yararlı bir konu olmayabilir. Belki insanlara yardımcı olabilir diye yazdım. Aklıma fikir geldikçe diğer bölümlerdeki gibi güzel bilgileri vermeye devam edicem :)
 



Üst