Oct 31

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.
Border Layout

Ö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.

Flow Layout

Ö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.

Grid Layout

Ö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.

Karma Layout

Ö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();
   }
}

yazan Besim Çetin \\ tags: , , ,

Oct 21

Java da yazdığınız programların arayüzünü NetBeans gibi bir IDE ile görsel olarak sürükle bırak ile az kod yazarak hazırlayabilirsiniz.Böyle bir program olmadan program arayüzü nasıl hazırlanır.
Java bu durum için bir kaç alternatif bulundurur. Bunlar;

1. Applet
2. Swing
3. Bağımsız GUI’ler

APPLET

Appletler,derlenmiş Java programlarını web sayfalarında göstermek için hazırlanmış bir arayüz sınıfıdır.Applet olarak hazırlanmış bir Java uygulamasını herhangi bir web sayfasına ekleyebilirsiniz.

Temel kalıbı;
Bu kod bloğu ile genel olarak appletinizi hazırlayabilirisiniz.

import java.awt.*;
import java.applet.Applet;
 
public class AppletArayuz extends Applet{
   public void init(){
      //Başlangıçta, yani applet başlarken çalıştırılacak kodlar.
   }
 
   public void paint(Graphics g){
      //Applet görünümü üzerindeki 
      //değişiklikler için yazılacak kod bölümü.
   }
}

Örnek;

import java.awt.*;
import java.applet.Applet;
 
public class AppletArayuz extends Applet{
	Button buton;
	TextField textfield;
 
	public void init(){
		buton=new Button("Buton");
		textfield=new TextField("www.javaci.net");
		add(buton);
		add(textfield);
	}
 
  public void paint(Graphics GRAP){
          //Yeni bir font şekli hazırladık.
	  Font fnt=new Font("Arial",Font.BOLD,18); 
	  GRAP.setFont(fnt);
	  GRAP.drawString("Basit Applet",10,50);
  }
}

Bu kodları derlediğinizde ortaya çıkacak olan “AppletArayuz.class” dosyasının yerini, hazırladığınız herhangi bir web sayfasına şu şekilde;

“.class” uzantılı dosya “web sayfası” ile aynı yerdeyse;

<APPLET code=”AppletArayuz.class” width=600 height=300></APPLET>”

 ”.class” uzantılı dosyanız farklı klasördeyse;

<APPLET code=”AppletArayuz.class” codebase=”java/dersler/örnekler”/ width=600 height=300></APPLET>”

şeklinde “codebase” yazan kısma “.class” uzantılı Java dosyasının olduğu klasörün yolunu yazmalısınız.

UYARI ! Appletlerde “TÜRKÇE” karakter kullanabilmek için aşağıdaki kodu html sayfanıza eklemeniz gerekiyor.

“<meta http-equiv=”Content-Type” content=”text/html”; charset=windows-1254″>
 

Bu kodları web sayfasının kaynak kodlarına ekleyince sayfayı açtığınızda herşey doğruysa applet görünecektir.

SWING

Swingler geniş grafik seçenekleri sunarak daha başarılı arayüzler hazırlamanız için pek çok özellik sunan bir sınıftır.Aslında platform-bağımsız olarak tasarlanmıştır.Yani farklı işletim sistemlerinde aynı şekilde görünür.Ancak küçük bir kod eklemeyle işletim sisteminin kullandığı temanın şekline bürünebilirler.

Swing Kalıbı:
Bütün arayüz bileşenlerinin (buton,textbox,label…) başlarına “J” harfi eklenir.

import java.awt.*;
import javax.swing.*;
 
public class SwingArayuz  {
 
 private JFrame frame;
// En başa arayüz için bir frame tanılımlıyoruz.
 
private JButton buton;
private JLabel label;
private JComboBox combobox;
private JRadioButton rbuton;
private JTextArea textarea;
private JTextField textfield;
 
// Arayüz bileşnleri tanımlıyoruz.
 
public void arayuzHazırla(){
frame=new JFrame();	
 
buton=new JButton("Buton");
label=new JLabel("www.javaci.net");
rbuton=new JRadioButton("javaci");
//25 uzunluk belirliyor.
textfield=new JTextField("Klasik text kutusu...",25); 
//5,eni ve 15,boyu belirliyor.
textarea=new JTextArea(5,15);
 
combobox=new JComboBox();
combobox.addItem("Eclipse");
//Combo listesine eleman ekliyoruz.
combobox.addItem("NetBeans"); 
 
Container c=frame.getContentPane();
//AWT paketindeki diğer bileşenleri 
//SWING de kullanabilmek için Container olşuturulur.
 
frame.setSize(600,300);
//frame için en ve boy belirliyoruz.
 
frame.setLocation(100,100);
//frame in bilgisayarda açılacağı  konumu belirliyoruz.
 
c.setLayout(new FlowLayout());
//Bileşenlerin arayüze diziliş şeklini belirliyoruz.
 
c.add(buton);
c.add(label);
c.add(rbuton);
c.add(combobox);
c.add(textfield);
c.add(textarea);
// Bileşenler arayüze ekleniyor.
 
frame.setVisible(true);
// frame'in görünebilirliğini "true" yapıyoruz.
}
 
public static void main(String[] args){
SwingArayuz sa=new SwingArayuz();
//Ana sınıftan --arayuzHazırla-- 
//yordamını çağırmak için nesne oluşuruyoruz.
 
sa.arayuzHazırla();
}
}

BAĞIMSIZ GUI (Graphical User Interface)

APLLET ve SWING Java ya özgü arayüzlerdir.GUI ler ise klasik program arayüzüdür.

UYARI ! GUI arayüzlerini “X” işaretine basarak kapatamazsınız.”X” kullanarak kapatabilmek için aşağıdaki kodları da programa eklemeniz gerekiyor.

 public void windowClosing(WindowEvent e){
	 System.exit(0);
 }
 public void windowClosed(WindowEvent e){}
 public void windowOpened(WindowEvent e){}
 public void windowActivated(WindowEvent e){}
 public void windowDeactivated(WindowEvent e){}
 public void windowIconified(WindowEvent e){}
 public void windowDeiconified(WindowEvent e){}

örnek;

import java.awt.*;
import java.awt.event.*;
 
public class GUIArayuz implements WindowListener {
 private Frame frame;
 private Panel panel;
 private Button buton;
 private TextField textfield;
 // Bileşenler tanımlanıyor.
 
 public void baslangic(){
	 frame=new Frame();
	 panel=new Panel();
	 buton=new Button("Buton");
	 textfield=new TextField("www.javaci.net.", 25);
 
	 frame.setSize(600,300);
	 panel.setBackground(Color.orange);
	 frame.setLocation(100,100);
	 panel.add(buton);
	 panel.add(textfield);
	 frame.add(panel);
	 frame.setVisible(true);
 
	 frame.addWindowListener(this);
	 //Görünüm istediğiniz özelliklere göre şekillendiriliyor.
 
 }
 
 public static void main(String[] args){
	  GUIArayuz g=new GUIArayuz();
	  g.baslangic();
 }
 
 public void windowClosing(WindowEvent e){
	 System.exit(0);
	 }
 public void windowClosed(WindowEvent e){}
 public void windowOpened(WindowEvent e){}
 public void windowActivated(WindowEvent e){}
 public void windowDeactivated(WindowEvent e){}
 public void windowIconified(WindowEvent e){}
 public void windowDeiconified(WindowEvent e){}
 
}

yazan Besim Çetin \\ tags: , , , ,