Translated from Sawitch Chapter 13 by Dr. Galip AYDIN

Slides:



Advertisements
Benzer bir sunumlar
Programlama-II (Java ile Bilgisayar Programlama)
Advertisements

Saatte V km hız ile giden bir aracın t zamanda aldığı yolu bulan metodu yazınız. Metodu kullanacak bir program yazınız. ( yol=hız*zaman, x=V*t) — Metot.
Activity Ekleme İşlemi
SCANNER SINIFI ve KLAVYEDEN VERİ OKUNMASI
Değişkenler ve bellek Değişkenler
Java Uygulamaları Konsol Uygulaması.
Neler Öğreneceksiniz ? Windows ve temel bileşenleri,
EDUTIME Java Day 6 Serdar TÜRKEL.
Programlama-II (Java ile Bilgisayar Programlama)
Bölüm 2 – Java Uygulamalarına Giriş
Bölüm 4 – Kontrol İfadeleri:1.kısım
OOP UYGULAMA 5.
EDUTIME Java Day 4 Serdar TÜRKEL.
2. VISUAL BASIC PROGRAM YAPISI
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 4: Diziler
Karar ifadeleri ve Döngüler
P AKET E RIŞIMLERI SıNıFLARıN YENIDEN KULLANıMı. P AKET ( P ACKAGE ) Paketler kütüphaneleri oluşturan elemanlardır. import java.io.BufferedReader; BufferedReader.
Java Programlama Diline Giriş
Nesneye Yönelik Programlama Dr. Pelin GÖRGEL
EDUTIME applet Day 7 Serdar TÜRKEL.
DİZİLER.
BPR152 ALGORİTMA VE PROGRAMLAMA - II
DELEGATE OOP-UYG.
İNTERNET PROGRAMCILIĞI I BTP 207 Ders 9. Tek değişkende birden fazla bilgi tutulmak istendiğinde kullanılır. Kullanım şekli: var dizi_adı= new Array(eleman1,
C# Metot Overloading (Aşırı yükleme)
Sorular? Öneriler?. Referanslar Referanslar (Tekrar) Eğer aşağıdaki gibi yazarsak ne olur: int x; double y; char c; ???
İSİM UZAYLARI (NAMESPACE)
NESNEYE DAYALI PROGRAMLAMA
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 8: Windows Formları
Chapter 13: Handling Events. 2Microsoft Visual C# 2012, Fifth Edition Olay İşleme Olay – Bir nesne için ilginç bir şey olduğu zaman oluşur. – Programın.
C# ile OOP GİRİŞ.
ÇOK BİÇİMLİLİK POLYMORPHISM
Ajanda Yol Haritamız Grafiksel Kullanıcı Arayüzü -- Genel bakış
APPLET KAVRAMI ve GRAFİK UYGULAMALARI
Önceki Dersi Hatırlama !!
Kalıtım.
Numaralandırmalar(Enumaration)
Kalıtım , Sınıf Asli Ergün.
ETKİLEŞİMLİ TÜRKİYE APPLETİ
BPR152 ALGORİTMA VE PROGRAMLAMA - II Öğr. Gör. Bayram AKGÜL
Class KahveFincani { public KahveFincani() { System.out.println("KahveFincani..."); } } public class YapilandirciBasitOrnek { public static void main(String[]
JAVA’DA DİZİLER Dr.Galip AYDIN.
Trees, Vectors, Iterators. ADT Abstract Data Type (ADT) vs implementation -Soyut Veri Türleri - Uygulamaları.
Algoritma ve Programlama BMÜ 112
Ders İçeriği Liste Soyut veri yapısı (ADT)
2.4. Dönüşümlü Resimler (Rollover) Oluşturma
Değişken Türleri.
Bil 102 Bölüm 6 Diziler.
Bil 102 Bölüm 3 Java’da Program Akış Denetimi Bil 1021.
Bilgisayar programlarının en büyük avantajı, kullanıcının işini kolaylaştırmalarıdır. Her bilgisayar programı bunu değişik metotlar kullanarak sağlar.
Bölüm 8 – Nesne-Tabanlı Programlama
Outline 4.1 Giriş 4.2 Algoritmalar 4.3 Pseudocode 4.4 Kontrol İfadeleri 4.5 if tek-seçimli ifadeler 4.6 if else seçimli ifadeler 4.7 while döngü ifadeleri.
JAVA PROGRAMLAMA ORNEKLER
SINIFLAR ve NESNELER. İlk sınıfımızı ekleyelim class KrediHesap { public ulong HesapNo; public double Limit; public string KartSahibi; }
Mobil Uygulama Geliştirme
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
BSM447 – MOBİL UYGULAMA GELİŞTİRME Öğr. Gör. Nevzat TAŞBAŞI 3. Hafta.
BSM447 – MOBİL UYGULAMA GELİŞTİRME Öğr. Gör. Nevzat TAŞBAŞI 7. Hafta.
BSM447 – MOBİL UYGULAMA GELİŞTİRME Öğr. Gör. Nevzat TAŞBAŞI 6. Hafta.
Sayfa Ayarlari Projelerimizde uzerinde yogunlasacagimiz dosyalar Java ve XML dosylari olacaktir.
Bilgisayar Görmesi Ders4:GUI OLUSTURMA Yrd. Doç. Dr. Serap KAZAN.
KALITIM(INHERITANCE) Öğr.Gör. Murat ASLANYÜREK. KALITIM KAVRAMINA GİRİŞ  Kalıtım, sınıflardan yeni sınıflar türetmeyi sağlar.  Türetilen yeni sınıflar,
ALGORİTMA VE PROGRAMLAMAYA GİRİŞ
SEMBOLLER.
Neler Öğreneceksiniz ? Windows ve temel bileşenleri,
2. VISUAL BASIC PROGRAM YAPISI
ANDROID STUDIO İLE UYGULAMA GELİŞTİRME ÖRNEKLERİ SAVAŞ TUNÇER.
ANDROİD STUDİO SAYFA NESNELERİ SAVAŞ TUNÇER
JAVA’DA DİZİLER. Özet  Dizi: belirli sayıda ve aynı veri türünden de ğ işkenlere aynı adla erişilmesini sa ğ layan bir yapıdır.  Dizilerde döngü işlemleri.
BLP 4210 PLATFORM BAĞIMSIZ PROGRAMLAMA
Sunum transkripti:

Translated from Sawitch Chapter 13 by Dr. Galip AYDIN 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ı Abstract Window Toolkit (AWT) kütüphanelerinin yeni versiyonu Java 2 (JDK 1.2) versiyonundan sonra standart

GUI—Graphical User Interface 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

Olay-kontrollü Programlama 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

Yeni bir Programlama Yaklaşımı Ö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

Basit Bir Swing Programı 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); }

Programla ilgili notlar 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)

Programla ilgili notlar 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.

WindowDestroyer Class 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.

Demo Programın sonucu Pencere bu satır olmadan görünmez. 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.

Window Listeners (Pencere Dinleyicileri) 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.

Demo Programının daha iyi versiyonu 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

IlkPencere Class Jframe sınıfından türetilmiş 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

JFrame Sınıfının metodları 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()

Yerleşim Yöneticileri (Layout Managers) 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.

Border Layout Manager Herbirisine bir bileşen konabilecek 5 bölge tanımlanmıştır: BorderLayout.NORTH BorderLayout.SOUTH BorderLayout.CENTER BorderLayout. WEST 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.

Flow Layout Manager En basit yerleşim yöneticisidir Konteynera eklenen bileşenleri eklenme sırasına göre soldan sağa doğru yerleştirir. Add metodu eklenecek bileşeni parametre olarak alır Container 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);

Grid Layout Manager 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 aContainer.setLayout(new GridLayout(2, 3)); . . . aContainer.add(label1); aContainer.add(label2); İki satır üç sütündan oluşan bir ızgara oluşturur Satırlar sütünlardan önce doldurulur

Butonlar ve ActionListener sınıfları 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

Buton nesnesini oluşturup Konteynera ekleme JButton stopButton = new JButton(“Red”); contentPane.add(stopButton); Butonun üstünde çıkacak yazı JButton butonlar için Swingin tanımladığı bir sınıftır class for buttons. Butonu konteynera ekleme

ActionListener Nesnesi Oluşturma 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) { . . .

actionPerformed Metodu actionPerformed metodunun sadece bir parametresi vardır Parametre ActionEvent tipindedir public void actionPerformed(ActionEvent e) { if (e.getActionCommand().equals(“Red”)) . . . }

Buton Nesnesine Listener kaydetmek 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.

Container Sınıfı 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

JPanel 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); Red Green

Container Sınıfı 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.

Content Pane - JFrame 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);

Swing Sınıflarının Hiyerarşisi Object AWT Component Container Layout manager sınıfları AWT içindedir. Sınıf Window Soyut Sınıf Frame Swing JFrame JComponent AbstractButton JPanel JLabel JMenuBar JMenuItem JButton JTextComponent JMenu JTextArea JTextField

GUIlerde Yazı Giriş/Çıkış işlemleri JTextField JTextArea JTextComponent 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 memo1 = theText.getText(); theText.setText(“Hi Mom”);

JTextField ve JTextArea JTextComponent sınıfından türetilmişlerdir setText 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şıyabilir JTextArea birçok satır taşıyabilir JTextArea scroll bar (aşağı-yukarı taşıma çubukları) taşıyabilir. JTextField someText = new JTextField(40); JTextArea someMoreText = new JTextArea(10, 40);

Sayı Giriş/Çıkış Bir TextArea veya TextField’dan int almak için: getText kullanarak String al trim ile boşlukları at String’i int’e çevirmek için parseInt metodunu kullan int n = Integer.parseInt (field.getText().trim());