Translated from Sawitch Chapter 13 by Dr. Galip AYDIN

31
Translated from Sawitch Chapter 13 by Dr. Galip AYDIN Swing Nesneleri ile Pencere arabirimleri oluşturulması

description

Swing Nesneleri ile Pencere arabirimleri olu şturulması. Translated from Sawitch Chapter 13 by Dr. Galip AYDIN. Swing. Java programlarının pencereler olarak çalışmasını sağlayan kütüphane Java Foundation Classes veya JFC sınıflarının bir parçası - PowerPoint PPT Presentation

Transcript of Translated from Sawitch Chapter 13 by Dr. Galip AYDIN

Page 1: Translated from Sawitch Chapter 13  by Dr. Galip AYDIN

Translated from Sawitch Chapter 13 by Dr. Galip AYDIN

Swing Nesneleri ile Pencere arabirimleri oluşturulması

Page 2: Translated from Sawitch Chapter 13  by Dr. Galip AYDIN

Java programlarının pencereler olarak çalışmasını sağlayan kütüphane

Java Foundation Classes veya JFC sınıflarının bir parçası

Abstract Window Toolkit (AWT) kütüphanelerinin yeni versiyonu

Java 2 (JDK 1.2) versiyonundan sonra standart

Page 3: Translated from Sawitch Chapter 13  by Dr. Galip AYDIN

Modern programların büyük kısmı grafiksel kullanıcı arabirimi (GUI) kullanır

GUI: Graphical—sadece yazı veya karakterler değil:

pencereler, menüler, butonlar, vs. User—programı kullanan kişi Interface—programla etkileşimi sağlar

Tipik grafiksel elemanlar: Pencere—Ekranın program için kullanılan daha

küçük bir kısmı Menü—Kullanıcıya programla ilgili sunulan

alternatifler Button—Tıklanabilecek butonlar

Page 4: Translated from Sawitch Chapter 13  by Dr. Galip AYDIN

GUI kullanan programlar sıklıkla olay-kontrollü programlama kullanırlar

Program bir olayın olmasını bekler ve buna göre bir cevap verir.

Olay örnekleri: Fare butonuna tıklanması Farenin hareket edilmesi Klavyede bir tuşa basılması

Firing an event—Nesneler bir olay oluşturduğunda Listener—Olayın olmasını bekleyen nesne Event handler—Olaylara cevap veren metod

Page 5: Translated from Sawitch Chapter 13  by Dr. Galip AYDIN

Önceki programlama yöntemi:

Komutlar sırayla yürütülür Sonraki olacak şey

listedeki sonraki komuttur Program bir sorumlu

tarafından yürütülür: Bilgisayar

Olay kontrollü Programlama yöntemi:

Olay oluşturan ve olaylara tepki veren nesneler

Bir sonra olacak şey bir sonraki olaya bağlıdır

Program kullanıcıyla bilgisayar arasındaki etkileşimdir

Page 6: Translated from Sawitch Chapter 13  by Dr. Galip AYDIN

import javax.swing.*;public class SwingDemo{ public static final int EN = 300; public static final int YUKSEKLIK = 200;

public static void main(String[] args) { JFrame pencerem = new JFrame(); pencerem.setSize(EN, YUKSEKLIK); JLabel etiket = new JLabel(“Tıklama...”); pencerem.getContentPane().add(etiket);

WindowDestroyer dinleyici = new WindowDestroyer(); pencerem.addWindowListener(dinleyici);

pencerem.setVisible(true); }}

Page 7: Translated from Sawitch Chapter 13  by Dr. Galip AYDIN

import javax.swing.*;public class SwingDemo{ public static final int EN = 300; public static final int YUKSEKLIK = 200;

public static void main(String[] args) { JFrame pencerem = new JFrame(); pencerem.setSize(EN, YUKSEKLIK); JLabel etiket = new JLabel(“Please don’t…”); pencerem.getContentPane().add(etiket);

WindowDestroyer dinleyici = new WindowDestroyer(); pencerem.addWindowListener(dinleyici);

pencerem.setVisible(true); }}

Bütün Swing programlarında kullanılır

pencerem adında bir JFrame penceresi oluşturur

JFrame penceresine bir etiket ekler (getContentPane)

Page 8: Translated from Sawitch Chapter 13  by Dr. Galip AYDIN

import javax.swing.*;public class SwingDemo{ public static final int EN = 300; public static final int YUKSEKLIK = 200;

public static void main(String[] args) { JFrame pencerem = new JFrame(); pencerem.setSize(EN, YUKSEKLIK); JLabel etiket = new JLabel(“Please don’t…”); pencerem.getContentPanel().add(etiket);

WindowDestroyer dinleyici = new WindowDestroyer(); pencerem.addWindowListener(dinleyici);

pencerem.setVisible(true); }}

Kapatma (x) butonuna tıklanması olayını yakalar

WindowDestroyer programcının tanımladığı başka bir class.

Page 9: Translated from Sawitch Chapter 13  by Dr. Galip AYDIN

public class WindowDestroyer extends WindowAdapter{ public void windowClosing(WindowEvent e) { System.exit(0); }}

WindowAdapter bütün pencere olaylarını yakalamaya yarayan bir class. Pencere kapatma olayı

oluştuğunda bu metod çağrılır.

Page 10: Translated from Sawitch Chapter 13  by Dr. Galip AYDIN

import javax.swing.*;public class SwingDemo{ public static final int EN = 300; public static final int YUKSEKLIK = 200;

public static void main(String[] args) { JFrame pencerem = new JFrame(); pencerem.setSize(EN, YUKSEKLIK); JLabel etiket = new JLabel(“Please don’t…”); pencerem.getContentPanel().add(etiket);

WindowDestroyer dinleyici = new WindowDestroyer(); pencerem.addWindowListener(dinleyici);

pencerem.setVisible(true); }}

Pencere bu satır olmadan görünmez.

Page 11: Translated from Sawitch Chapter 13  by Dr. Galip AYDIN

Yedi farklı metod vardır Herbir metod pencere kapatma gibi bir pencere

eylemiyle ilişkilidir WindowAdapter sınıfındaki bütün metodları miras

alabilir, bazılarını değiştirebilirsiniz WindowDestroyer (Demo Program) WindowAdapter sınıfından türetilmiştir windowClosing metodunu değiştirmiştir.

Page 12: Translated from Sawitch Chapter 13  by Dr. Galip AYDIN

Pencere için farklı bir sınıf IlkPencere sınıfıJFrame sınıfından türetilmiştir main metodu IlkPencere sınıfının iki nesnesini

oluşturuyor Herbir pencerenin kendi dinleyicisi var Herbir pencerenin main metodu setVisible

metodunu çağırıyor

Page 13: Translated from Sawitch Chapter 13  by Dr. Galip AYDIN

import javax.swing.*;public class IlkPencere extends JFrame{ public static final int EN = 300; public static final int YUKSEKLIK = 200;

public IlkPencere() { super(); setSize(EN, YUKSEKLIK); JLabel etiket = new JLabel(“Please don’t…”); getContentPane().add(etiket);

WindowDestroyer dinleyici = new WindowDestroyer(); addWindowListener(dinleyici); }}

Jframe sınıfından türetilmiş

Temel sınıfın kurucu metodunu çağırıyor

setSize, getContentPane, ve addWindowListener metodları Jframe sınıfından miras alınıyor

Page 14: Translated from Sawitch Chapter 13  by Dr. Galip AYDIN

JFrame(String başlık)Verilen başlığı taşıyan bir çerçeve

oluşturan Jframe kurucu metodu Container getContentPane()

Jframe nesnesinin konteyner nesnesini döndürür, bileşenleri eklemek için kullanılır

void setBackgroundColor(Color c) void setForegroundColor(Color c) void setSize(int EN, int yukseklik)

void setVisible(boolean b) void show()

Page 15: Translated from Sawitch Chapter 13  by Dr. Galip AYDIN

Yerleşim Yöneticisi—bir konteyner üzerinde nesnelerin nasıl sıralanacağına karar veren nesne

Konteynerlar boyut değiştirebildikleri için kullanılırlar BorderLayout FlowLayout GridLayout

Herbir yöneticinin konteynerin boyutu veya şekli değiştiğinde nesneleri yeniden nasıl düzenleyeceği ile ilgili kuralları vardır.

Page 16: Translated from Sawitch Chapter 13  by Dr. Galip AYDIN

Herbirisine bir bileşen konabilecek 5 bölge tanımlanmıştır:

BorderLayout.NORTH

BorderLayout.SOUTH

BorderLayout.CENTERBorderLayout.WEST

BorderLayout.EAST

content.setLayout(new BorderLayout());. . .content.add(label1, BorderLayout.NORTH);

Konteyner büyüdüğünde veya küçüldüğünde en fazla CENTER bölgesi büyür veya küçülür.

Page 17: Translated from Sawitch Chapter 13  by Dr. Galip AYDIN

En basit yerleşim yöneticisidirKonteynera eklenen bileşenleri

eklenme sırasına göre soldan sağa doğru yerleştirir.

Add metodu eklenecek bileşeni parametre olarak alırContainer content = getContentPane();

content.setLayout(new FlowLayout());JLabel label1 = new JLabel(“First label here”);content.add(label1);JLabel label2 = new JLabel(“Second label there”);content.add(label2);

Page 18: Translated from Sawitch Chapter 13  by Dr. Galip AYDIN

Belirli sayıda satır veya sütün tesbit edilir

Izgaradaki bütün bölgeler eşit boyuttadır

Konteyner boyut değiştirince herbir bölge eşit miktarda büyür veya küçülür İki satır üç sütündan

oluşan bir ızgara oluşturur

aContainer.setLayout(new GridLayout(2, 3));. . .aContainer.add(label1);aContainer.add(label2);

Satırlar sütünlardan önce doldurulur

Page 19: Translated from Sawitch Chapter 13  by Dr. Galip AYDIN

Swingde buton kullanmak için izlenecek temel adımlar:

Buton nesnesi oluştur Buton nesnesini konteynera ekle actionPerformed metodu olan bir ActionListener nesnesi oluştur

Listener nesnesini butona kaydet

Page 20: Translated from Sawitch Chapter 13  by Dr. Galip AYDIN

JButton stopButton = new JButton(“Red”);

contentPane.add(stopButton);

Butonun üstünde çıkacak yazı

Butonu konteynera ekleme

JButton butonlar için Swingin tanımladığı bir sınıftır class for buttons.

Page 21: Translated from Sawitch Chapter 13  by Dr. Galip AYDIN

Sınıfa ActionListener özelliği eklemek için: Sınıf tanımlamasına implements ActionListener ifadesi eklenir:

actionPerformed adında bir metod yazılır

public class ButtonDemo extends JFrame implements ActionListener{ . . .

public void actionPerformed(ActionEvent e) { . . .

Page 22: Translated from Sawitch Chapter 13  by Dr. Galip AYDIN

actionPerformed metodunun sadece bir parametresi vardır

Parametre ActionEvent tipindedir

public void actionPerformed(ActionEvent e){ if (e.getActionCommand().equals(“Red”)) . . .}

Page 23: Translated from Sawitch Chapter 13  by Dr. Galip AYDIN

Eğer bir buton ile bir Listener ilişkilendirilmemişse butona tıklanıp tıklanmadığı kontrol edilemez.

Buton için bir Listener kaydetme:

JButton stopButton = new JButton(“Red”);stopButton.addActionListener(this);contentPane.add(stopButton);

this parametresi bu kodu barındıran sınıfı gösterir. Bu örnekte sınıfımız ActionListener sınıfını implement eden JFrame sınıfıdır.

Page 24: Translated from Sawitch Chapter 13  by Dr. Galip AYDIN

Container sınıfı kendisine bileşenler eklenebilen bir sınıftır.

Her Swing container sınıfının bir add metodu vardır.Bazı çok kullanılan Container sınıflar: JPanel Container JFrame’in Content pane nesnesi

Page 25: Translated from Sawitch Chapter 13  by Dr. Galip AYDIN

Red Green

GUIlerin hiyerarşik organizasyonu için kullanılır: Bir panel başka bileşenleri içerebilir Bir panel başka bir Container nesnesine

eklenebilir.JPanel buttonPanel = new JPanel();buttonPanel.setLayout(new FlowLayout());buttonPanel.add(stopButton);buttonPanel.add(goButton);contentPane.add(buttonPanel, BorderLayout.SOUTH);

Page 26: Translated from Sawitch Chapter 13  by Dr. Galip AYDIN

Container sınıfından türetilmiş herhangi bir sınıfa bileşenler eklenebilir.

Container sınıfı kullanılırken AWT kütüphanesini import etmek gerekir:import java.awt.*;

Jcomponent, Container sınıfından türetilmiştir Container üstündeki bileşenler container layout

manager tarafından düzenlenir.

Page 27: Translated from Sawitch Chapter 13  by Dr. Galip AYDIN

Bileşenler direkt olarak Jframe üzerine değil Jframe’in content pane bileşenine eklenirler.

getContentPane metodu Container olarak davranan content pane bileşenine bir referans döndürür, Container contentPane = getContentPane();

JLabel label = new JLabel(“blue”);contentPane.add(label);

Page 28: Translated from Sawitch Chapter 13  by Dr. Galip AYDIN

Component

Object

Container

Window

Frame

JFrame JComponent

JPanel

JLabel JMenuBar

AbstractButton

JButton

JMenu

JMenuItem

JTextFieldJTextArea

JTextComponent

AWT

Swing

Sınıf

Soyut Sınıf

Layout manager sınıfları AWT içindedir.

Page 29: Translated from Sawitch Chapter 13  by Dr. Galip AYDIN

Text field ve text area bileşenleri getText metodu bir bileşendeki yazıyı

döndürür setText bileşendeki yazıyı değiştirir

JTextFieldJTextArea

JTextComponent

memo1 = theText.getText();

theText.setText(“Hi Mom”);

Page 30: Translated from Sawitch Chapter 13  by Dr. Galip AYDIN

JTextComponent sınıfından türetilmişlerdirsetText ve getText metodları vardır Kurucu metodlarına başlangıçta

taşıyacakları yazı parametre olarak gönderilebilir.

JTextField sadece bir satır yazı taşıyabilirJTextArea birçok satır taşıyabilirJTextArea scroll bar (aşağı-yukarı taşıma

çubukları) taşıyabilir.JTextField someText = new JTextField(40);

JTextArea someMoreText = new JTextArea(10, 40);

Page 31: Translated from Sawitch Chapter 13  by Dr. Galip AYDIN

Bir TextArea veya TextField’dan int almak için:

getText kullanarak String altrim ile boşlukları atString’i int’e çevirmek için parseInt

metodunu kullanint n = Integer.parseInt (field.getText().trim());