Java Swing Nedir?
Java Swing, zengin bir widget kümesi içeren hafif bir Grafik Kullanıcı Arabirimi (GUI) araç takımıdır. Paket, Java uygulamalarınız için GUI bileşenleri yapmanızı sağlar ve platformdan bağımsızdır.
Swing kütüphanesi, eski bir platform bağımlı GUI araç seti olan Java Abstract Widget Toolkit’in (AWT) üzerine inşa edilmiştir. Button, textbox, vb. gibi Java GUI bileşenlerini kütüphaneden kullanabilirsiniz ve bileşenleri sıfırdan oluşturmak zorunda değilsiniz.
Java Swing Sınıfı Hiyerarşi Şeması
Swing içindeki tüm bileşenler, konteyner sınıflarına eklenebilecek JComponent’tir.
Konteyner sınıfı nedir?
Konteyner sınıfları, üzerinde başka bileşenler de bulunan sınıflardır. Dolayısıyla bir GUI oluşturmak için en az bir konteyner nesnesine ihtiyacımız vardır. 3 tip konteyner vardır.
- Panel: Bir Panel’in tek amacı, bileşenleri bir pencerede düzenlemektir.
- Frame: Başlığı ve simgeleriyle tamamen işleyen bir penceredir.
- Dialog: Bir mesaj görüntülendiğinde ortaya çıkan bir açılır pencere gibi düşünülebilir. Çerçeve gibi tamamen işleyen bir pencere değildir.
Java GUI Örnekleri
Örnek: Java’da GUI tasarlamayı öğrenme
Adım 1) Aşağıdaki kodu bir editöre kopyalayın.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | package tasarimkodlama; import javax.swing.JButton; import javax.swing.JFrame; public class TasarimKodlama { public static void main(String[] args) { JFrame frame = new JFrame("İlk Java GUI"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(300,300); JButton button = new JButton("Tıkla"); frame.getContentPane().add(button); frame.setVisible(true); } } |
Adım 2) Kodu kaydedin, Derleyin ve Çalıştırın.
Çıktı:
Adım 3) Şimdi Panele iki button eklemeye ne dersiniz? Aşağıdaki kodu bir düzenleyiciye kopyalayın.
Adım 4) Programı kaydedin, Derleyin ve Çalıştırın.
Adım 5) Beklenmeyen çıktı =? Düğmeler üst üste biniyor.
Java Layout Yönetici
Layout yöneticisi, bir kapsayıcı içindeki GUI java bileşenlerini yerleştirmek (veya düzenlemek) için kullanılır. Birçok düzen yöneticisi vardır, ancak en sık kullanılanlar-
Java BorderLayout
BorderLayout, bileşenleri en çok beş alana yerleştirir: üst, alt, sol, sağ ve orta. Her java JFrame için varsayılan layout yöneticisidir.
Java GUI ÖrnekleriKodu:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | package tasarimkodlama; import java.awt.BorderLayout; import javax.swing.JButton; import javax.swing.JFrame; public class TasarimKodlama { public static void main(String[] args) { JFrame f=new JFrame("TASARIM KODLAMA"); JButton b1=new JButton("ÜST(PAGE_START)"); JButton b2=new JButton("ALT(PAGE_END)"); JButton b3=new JButton("SAĞ(LINE_START)"); JButton b4=new JButton("SOL(LINE_END)"); JButton b5=new JButton("ORTA(CENTER)"); f.add(b1,BorderLayout.PAGE_START); f.add(b2,BorderLayout.PAGE_END); f.add(b3,BorderLayout.LINE_START); f.add(b4,BorderLayout.LINE_END); f.add(b5,BorderLayout.CENTER); f.setSize(300,300); f.setVisible(true); } } |
Java FlowLayout
FlowLayout, her JPanel için varsayılan düzen yöneticisidir. Bileşenleri birbiri ardına sırayla dizer.
Kodu:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | package tasarimkodlama; import java.awt.FlowLayout; import javax.swing.JButton; import javax.swing.JFrame; public class TasarimKodlama { public static void main(String[] args) { JFrame f=new JFrame("TASARIM KODLAMA"); JButton b1=new JButton("1"); JButton b2=new JButton("2"); JButton b3=new JButton("3"); JButton b4=new JButton("4"); JButton b5=new JButton("5"); f.add(b1);f.add(b2);f.add(b3);f.add(b4);f.add(b5); f.setLayout(new FlowLayout(FlowLayout.RIGHT)); f.setSize(300,100); f.setVisible(true); } } |
Java GridBagLayout
Tüm düzenlerden daha sofistike. Bileşenleri bir hücre ızgarasının içine yerleştirerek hizalar ve bileşenlerin birden fazla hücreye yayılmasını sağlar.
Kodu:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | package tasarimkodlama; import java.awt.Button; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import javax.swing.JFrame; public class TasarimKodlama extends JFrame{ public static void main(String[] args) { TasarimKodlama tk=new TasarimKodlama(); } public TasarimKodlama() { GridBagLayout grid = new GridBagLayout(); GridBagConstraints gbc = new GridBagConstraints(); setLayout(grid); setTitle("GridBag Layout Örnek"); GridBagLayout layout = new GridBagLayout(); this.setLayout(layout); gbc.fill = GridBagConstraints.HORIZONTAL; gbc.gridx = 0; gbc.gridy = 0; this.add(new Button("Button 1"), gbc); gbc.gridx = 1; gbc.gridy = 0; this.add(new Button("Button 2"), gbc); gbc.fill = GridBagConstraints.HORIZONTAL; gbc.ipady = 20; gbc.gridx = 0; gbc.gridy = 1; this.add(new Button("Button 3"), gbc); gbc.gridx = 1; gbc.gridy = 1; this.add(new Button("Button 4"), gbc); gbc.gridx = 0; gbc.gridy = 2; gbc.fill = GridBagConstraints.HORIZONTAL; gbc.gridwidth = 2; this.add(new Button("Button 5"), gbc); setSize(300, 300); setPreferredSize(getSize()); setVisible(true); setDefaultCloseOperation(EXIT_ON_CLOSE); } } |
Java GridBagLayout Örneği
Yukarıdaki tasarımı aşağıdaki programa bakmadan önce kendinizi kodlamaya çalışın.
Kodu:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | package tasarimkodlama; import java.awt.BorderLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JPanel; import javax.swing.JTextArea; import javax.swing.JTextField; public class TasarimKodlama { public static void main(String[] args) { //Frame Oluşturma JFrame frame = new JFrame("Tasarim Kodlama"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(400, 400); //Menu componentleri oluşturma JMenuBar mb = new JMenuBar(); JMenu m1 = new JMenu("Dosya"); JMenu m2 = new JMenu("Yardım"); mb.add(m1); mb.add(m2); JMenuItem m11 = new JMenuItem("Aç"); JMenuItem m22 = new JMenuItem("Farklı Kaydet"); m1.add(m11); m1.add(m22); //Panele componentlerin eklenmesi JPanel panel = new JPanel(); // the panel is not visible in output JLabel label = new JLabel("Birşey Yazın:"); JTextField tf = new JTextField(10); // 10 karakterlik textarea JButton send = new JButton("Kaydet"); JButton reset = new JButton("Temizle"); panel.add(label); // Componentlerin Flow Layout'a eklenmesi panel.add(label); // Componentlerin Flow Layout'a eklenmesi panel.add(tf); panel.add(send); panel.add(reset); // Text Area at the Center JTextArea ta = new JTextArea(); //Adding Components to the frame. frame.getContentPane().add(BorderLayout.PAGE_START, mb); frame.getContentPane().add(BorderLayout.PAGE_END, panel); frame.getContentPane().add(BorderLayout.CENTER, ta); frame.setVisible(true); } } |
1 Yorum