Bu Sayfayı Paylaş:

Bilgi/Açıklama

Frame

Bugün işletim sistemlerinin hepsi grafik arayüzüne sahiptir. Pencereler, menüler, düğmeler her işletim sistemlerinde artık standart olmuştur. Java ile masaüstünde çalışan, grafik arayüzü olan programlar geliştirebilirsiniz.
Java grafik arayüzü olan programlar geliştirmeniz için AWT ve Swing paketlerini üretmiştir. Bu bölümde AWT, Swing ve en son Applet (Uygucuk) işlenecektir.
Görsel nesneler üç ana bölüme ayrılabilir. Window, Container ve Component. Component (Bileşen) bir görsel bileşendir. Başka bir bileşene eklenebilir veya Container (Kap) nesnesine eklenebilir. Container'lar içerisine birden fazla component alan bileşenlerdir. Window (Pencere) ise ise içinde container ve component'leri barındırır.
Aşağıda basit bir Window olan Frame gösteriyoruz.
import java.awt.*;
public class FrameTest {
    public static void main(String[] args){
        Frame f=new Frame();
        f.setBounds(10,10,200,200);
        f.setVisible(true);
    }
}
Yukarıda bir Frame (Çerçeve) yaratıyoruz. Frame'in sol üst köşesini ekranın 10,10 noktasına gelmesini sağlıyoruz. Genişlik ve yüksekliğini 200 yapıyoruz. En son pencerenin ekranda gözükmesini sağlıyoruz.
Aynı örneği Swing ile de yapabiliriz:
import javax.swing.*;
public class FrameSwingTest {
    public static void main(String[] args){
        JFrame f=new JFrame();
        f.setBounds(0,0,200,200);       
        f.setVisible(true);
    }
}

Burada javax.swing paketi import edilmiş ve Frame yerine JFrame kullanılmıştır. Awt ve Swing aynı bileşenleri içerirler. Swing sınıf isimlerinin başında J bulunur.
image:/b:http://www.fibiler.com/dosya_Java-Layout-Manager_97/:

Bilgi/Açıklama

Yerleşim Yönetisi (Layout Manager)

Bir window veya container bileşenine component'ler belirli bir düzene göre yerleştirilebilir. Yerleşim düzenini sağlamak için yerleşim yöneticisi (layout manager) nesneleri kullanılır. Java'da bir component'in x ve y'si vererek istenilen bir bölgeye koyulması yoluna gidilmez. Çünkü Java platformdan bağımsızdır. Windows ile Linux arasında arayüz farkları olabilir. Bu nedenle birinde x ve y verilerek görünüm ayarlanırsa diğerinde çok bozuk bir görüntü elde edilebilir. Bunu önlemek için çeşitli yerleşim yöneticileri tanımlanmıştır.

FlowLayout

En basit yerleşim yöneticilerinden birisi de flow layout (akış yerleşimi) nesnesidir. Bileşenleri soldan sağa doğru sıra ile yerleştirir. Eğer satırda yer kalmaz ise bir alt satırdan yerleştirilmeye devam edilir.

BorderLayout

Yrleşim yöneticilerinden border layout (sınır yerleşimi) tüm bölüm 5 bölgeye ayrılır. Kuzey (North), Güney (South), Doğu (East) , Batı (West) ve Merkez (Center). Bileşenler bu bölgelere eklenebilir. Eğer bir bölgeye bileşen eklenmezse diğer bölgeler o bölgeyi kaplarlar.

GridLayout

Yerleşim yöneticilerinden grid layout (ızgara yerleşimi) bölgeyi ızgara gibi parçalara ayırır. Satır ve sütun sayısı verilerek bu sağlanır. Bileşenler sıra ile oluşan hücrelere eklenirler.
Yerleşim yöneticilerini bundan sonraki örneklerde sürekli kullanacağız. Kullanırken açıklamasını yapacağız.

Form Bileşenleri

Java bir formda gerekli olacak tüm bileşenleri içerir. Yazı alanı, düğme, onay kutusu, seçenek kutusu, liste ve bunun gibi birçok form kontrolleri bulunmaktadır. Aşağıdaki örnekte FlowLayout kullanarak bazı form bileşenleri bir frame'e yerleştirilmiştir.
 
import java.awt.*;
import javax.swing.*;
public class FormTest {
  public static void main(String[] args){
    JFrame f=new JFrame();
    f.setBounds(10,10,300,300);
    // Yerleşim yönetici FlowLayout yapılıyor.
    f.getContentPane().setLayout(
        new FlowLayout());
    JLabel label=new JLabel("Yazı Alanı:");
    JTextField tf=new JTextField(10);
    JTextArea ts=new JTextArea("",10,10);
    List list=new List();
    list.add("1");
    list.add("2");
    list.add("3");
    Checkbox box=new Checkbox("Deneme");
    JButton b=new JButton("buton");
    f.getContentPane().add(label);
    f.getContentPane().add(tf);
    f.getContentPane().add(list);
    f.getContentPane().add(b);
    f.getContentPane().add(ts);
    f.getContentPane().add(box);
    f.setVisible(true);
  }
}
Örnekte f. getContentPane(). setLayout() (yerleşimi ata) kullandığımız frame'in yerleşim yöneticisi ayarlanmaktadır. Frame'in yerleşim yöneticisini FlowLayout yaptık. Kodda f. getContentPane(). add() (ekle) yöntemi ile eklenen her nesne soldan sağa doğru yerleştirilecektir. Eğer satır biterse alt satırdan devam edilir. Yukarıda etiket, yazı alanı (tek satır ve birden fazla satırlı) , liste, onay kutusu ve bir düğme eklenmiştir.

Panel

Bazen bileşen (component) nesnelerini gruplandırmak gerekebilir. Panel (Panel) adı verilen sınıf, içerisine birden fazla bileşen alabilir. Panel'e yerleşim yöneticisi verilebilir. Panel'e bileşenler eklendikten sonra panel frame'e veya window'a eklenebilir. Panel kullanarak aşağıdaki görüntüyü elde etmeye çalışalım.
import java.awt.*;
import javax.swing.*;
public class PanelTest {
  public static void main(String[] args){
    JFrame f=new JFrame();
    f.setBounds(10,10,200,100);
    JPanel topP=new JPanel();
    JTextField tf=new JTextField(12);
    topP.add(tf);
    JPanel centerP=new JPanel();
    centerP.setLayout(new GridLayout(1,2));
    JButton b1=new JButton("button 1");
    JButton b2=new JButton("button 2");
    centerP.add(b1);
    centerP.add(b2);
        
    f.getContentPane().setLayout(
        new BorderLayout());      
    f.getContentPane().add(
        topP,BorderLayout.NORTH);
    f.getContentPane().add(
        centerP,BorderLayout.CENTER); 
   f.setVisible(true);
  }
}
Örnekte iki panel yaratıyoruz. Bir panel yazı alanının koyulduğu panel (topP). Diğer panel düğmelerin koyulduğu panel (centerP). Sonra da centerP'in yerleşim yöneticisi GridLayout yapılmıştır. Bir satır ve iki sütün yapılmıştır. İki hücreye düğme eklenmiştir. Paneller tamamlandıktan sonra frame'e eklenmiştir. Frame'in yerleşim yöneticisi BorderLayout yapılmıştır. Örnekte topP kuzeye centerP merkeze koyulmuştur.

Bilgi/Açıklama

Event - Listener

Grafik arayüzlerinde kullanıcının yaptığı her işlem bir olay (event) oluşmasına neden olur. Bir kullanıcının bir düğmeyi tıklaması, yazı girişi yapması, fareyi hareket ettirmesi olay oluşmasına neden olur. Siz olayları yakalayarak bir işlem yapabilirsiniz.
Java'da olayları dinleyebilmek için dinleyici (listener) olarak bir nesnenin eklenmesi gerekir. Örneğin bir sınıfın, bir düğme tıklandığında bundan haberi olması için düğmeye kendisini kaydetmesi gerekir. Aşağıda bir düğme olayını dinliyoruz.
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class ButtonActionTest 
    extends JFrame 
    implements ActionListener
{
  Button b,b2;
  ButtonActionTest(){       
    b=new Button("Button1");
    b2=new Button("Button2");
    // düğmelere tıklandığını dinlemek 
    // için kayıt oluyoruz.
    b.addActionListener(this);
    b2.addActionListener(this);
    getContentPane().setLayout(new FlowLayout());        
    getContentPane().add(b);        
    getContentPane().add(b2);
  }
  public static void main(String[] args){        
    ButtonActionTest test=new ButtonActionTest();
    test.setBounds(0,0,200,100);
    test.setVisible(true);
  }    
  // düğmelere tıklandığında 
  // actionPerformed yöntemi çağrılacak.
  public void actionPerformed(ActionEvent e){
    if(e.getActionCommand().equals("Button1")){
      System.out.println("1. button tıklandı");
    }else if(
        e.getActionCommand().equals("Button2"))
    {
        System.out.println("2. button tıklandı");
    }
  }
}
ButtonActionTest sınıfı JFrame'i extend etmiştir. ButtonActionTest'e iki düğme eklenmiştir. Bu düğmelere tıklandığına hangi düğmenin tıklandığına dair mesajlar ekrana basılmaktadır.
Bir olayı dinleyebilmek için önce bileşene dinleyici (listener) olarak kendinizi kaydetmeniz gerekmektedir.
b.addActionListener(this);
Yukarıdaki ifade düğmeye bir dinleyici kaydetmek için kullanılır. addActionListener() (eylem dinleyici ekle) yöntemi parametre olarak ActionListener (Eylem Dinleyici) ister. ActionListener bir interface'dir. Bu şu anlama gelir. Düğme olayını dinlemek isteyen bir sınıf bu interface'si implement etmelidir. ButtonActionTest sınıfı görüldüğü gibi ActionListener'ı implement etmiştir. Bu nedenle addActionListener() yöntemine this verilmiştir. Örnekteki
public void actionPerformed(ActionEvent e){
}
yöntemi ActionListener'in yöntemidir. Herhangi bir düğmeye tıklandığında bu yöntem çağrılacaktır. Ancak iki düğmeye de tıklandığında bu yöntem çalışır. Hangi düğmeye tıklandığını anlamak için ActionEvent (Eylem Olayı) sınıfındaki getActionCommand() (eylem buyruğunu edin) yöntemiyle kontrol yapabiliriz. Bu şekilde hangi düğmeye tıklandığı anlaşılmaktadır.
Bir olayın dinlemesi için şu işlemlerin yapılması gerekmektedir.
  • Gerekli olan Listener interface'si implement edilmelidir. (Yukarıdaki örnekte ActionListener interface'si)
  • Bileşene dinleyici olarak bir nesne kayıt edilmelidir. (Yukarıdaki örnekte this ile ButtonActionTest sınıfı dinleyici olarak düğmelere kayıt edilmiştir.)




Bu Sayfayı Paylaş:

İletişim/Bize Yazın   mh@fibiler.com   Google+   Facebook   Twitter   fibiler@googlegroups.com
Her Hakkı Saklıdır
Bu sitede yayınlanan tüm bilgi ve fikirlerin kullanımından fibiler.com sorumlu değildir.
Bu sitede üretilmiş , derlenmiş içerikleri, fibiler.com'u kaynak göstermek koşuluyla kendi sitenizde kullanılabilirsiniz. Ancak telif hakkı olan içeriklerin hakları sahiplerine aittir