1 / 31

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ı

Download Presentation

Translated from Sawitch Chapter 13 by Dr. Galip AYDIN

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. Swing • Java programlarının pencereler olarak çalışmasını sağlayan kütüphane • Java Foundation Classesveya JFCsınıflarının bir parçası • Abstract Window Toolkit (AWT) kütüphanelerinin yeni versiyonu • Java 2 (JDK 1.2) versiyonundan sonra standart

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

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

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

  6. 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); } }

  7. 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 JFramepenceresi oluşturur JFramepenceresine bir etiket ekler (getContentPane)

  8. 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 WindowDestroyerprogramcının tanımladığı başka bir class.

  9. WindowDestroyer Class public class WindowDestroyer extends WindowAdapter { public void windowClosing(WindowEvent e) { System.exit(0); } } WindowAdapterbütün pencere olaylarını yakalamaya yarayan bir class. Pencere kapatma olayı oluştuğunda bu metod çağrılır.

  10. Demo Programın sonucu 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.

  11. Window Listeners (Pencere Dinleyicileri) • Yedi farklı metod vardır • Herbir metod pencere kapatma gibi bir pencere eylemiyle ilişkilidir • WindowAdaptersınıfındaki bütün metodları miras alabilir, bazılarını değiştirebilirsiniz • WindowDestroyer (Demo Program) WindowAdaptersınıfından türetilmiştir windowClosing metodunu değiştirmiştir.

  12. Demo Programının daha iyi versiyonu • Pencere için farklı bir sınıf • IlkPenceresınıfıJFramesınıfından türetilmiştir • main metoduIlkPenceresınıfının iki nesnesini oluşturuyor • Herbir pencerenin kendi dinleyicisi var • Herbir pencerenin main metodu setVisiblemetodunu çağırıyor

  13. IlkPencere Class 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); } } Jframesınıfından türetilmiş Temel sınıfın kurucu metodunu çağırıyor setSize, getContentPane, ve addWindowListenermetodları Jframesınıfından miras alınıyor

  14. JFrameSı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()

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

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

  17. 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);

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

  19. ButonlarveActionListenersınıfları Swingde buton kullanmak için izlenecek temel adımlar: • Buton nesnesi oluştur • Buton nesnesini konteynera ekle • actionPerformed metodu olan birActionListenernesnesi oluştur • Listener nesnesini butona kaydet

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

  21. ActionListenerNesnesi Oluşturma Sınıfa ActionListener özelliği eklemek için: • Sınıf tanımlamasına implements ActionListenerifadesi eklenir: • actionPerformed adında bir metod yazılır public class ButtonDemo extends JFrame implements ActionListener { . . . public void actionPerformed(ActionEvent e) { . . .

  22. actionPerformedMetodu • actionPerformed metodunun sadece bir parametresi vardır • ParametreActionEventtipindedir public void actionPerformed(ActionEvent e) { if (e.getActionCommand().equals(“Red”)) . . . }

  23. ButonNesnesine 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); thisparametresi bu kodu barındıran sınıfı gösterir. Bu örnekte sınıfımız ActionListener sınıfını implement eden JFramesınıfıdır.

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

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

  26. ContainerSınıfı • Containersı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.

  27. Content Pane - JFrame • Bileşenler direkt olarak Jframeüzerine değil Jframe’in content pane bileşenine eklenirler. • getContentPanemetodu Containerolarak davranan content pane bileşenine bir referans döndürür, Container contentPane = getContentPane(); JLabel label = new JLabel(“blue”); contentPane.add(label);

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

  29. JTextComponent JTextArea JTextField GUIlerde Yazı Giriş/Çıkış işlemleri Text field ve text area bileşenleri • getText metodu bir bileşendeki yazıyı döndürür • setTextbileşendeki yazıyı değiştirir memo1 = theText.getText(); theText.setText(“Hi Mom”);

  30. JTextFieldve JTextArea • JTextComponentsınıfından türetilmişlerdir • setTextvegetText metodları vardır • Kurucu metodlarına başlangıçta taşıyacakları yazı parametre olarak gönderilebilir. • JTextFieldsadece bir satır yazı taşıyabilir • JTextAreabirç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);

  31. Sayı Giriş/Çıkış BirTextAreaveyaTextField’dan int almak için: • getTextkullanarak String al • trimile boşlukları at • String’i int’e çevirmek için parseInt metodunu kullan int n =Integer.parseInt(field.getText().trim());

More Related