java swing tutorial container
Bu kapsamlı Java Swing video eğitimi, GUI Swing Framework'ün çeşitli bileşenlerini ve JPanel, JFrame, JButton vb. Gibi ilgili kavramları açıklar:
Kullanıcının uygulamayı kullanmasını kolaylaştırarak görsel bir arayüze sahip uygulamalar oluşturmak için grafik kullanıcı arayüzleri (genellikle GUI olarak adlandırılır) kullanıyoruz.
Bir uygulama için görsel bir arayüze sahip olmak, uygulamanın gezinmesini kolaylaştırır, kontrolleri daha verimli kullanır ve ayrıca görsel olarak kullanıcıya çekici gelir.
Swing, esas olarak uygulamalar için GUI oluşturmak için kullanılır.
=> Java Eğitim Serisini Herkes İçin Görmek İçin Burayı Ziyaret Edin.
Ne öğreneceksin:
- Java Swing'de Video Eğitimi
- Java Swing Nedir
- Java Swing Bileşenleri
- Java'da Swing Sınıfları
- Swing Vs JavaFX
- Sonuç
Java Swing'de Video Eğitimi
Java Swing Nedir
Java, çeşitli GUI uygulamaları geliştirmemize yardımcı olan birçok GUI çerçevesi sağlar. Önceki eğitimimizde bir tane gördük, yani Soyut Pencere Araç Seti veya AWT. AWT, Java'daki en eski GUI çerçevelerinden biridir ve aynı zamanda platforma bağlıdır. AWT'nin diğer bir dezavantajı, ağır bileşenleridir.
Bu eğitimde, Java'daki başka bir GUI çerçevesini, yani “SWING” tartışacağız. Java'daki Swing çerçevesi, Java Temel Sınıflarının bir parçasıdır veya genel olarak JFC olarak adlandırılır. JFC, C ++ 'daki MFC'lere (Microsoft Foundation Classes) benzer bir API'dir. JFC, Swing, AWT ve Java2D'yi içerir.
Java'daki Swing çerçevesi, AWT çerçevesinin üzerine inşa edilmiştir ve AWT gibi GUI uygulamaları oluşturmak için kullanılabilir. Ancak AWT'nin aksine Swing bileşenleri hafiftir ve platformdan bağımsızdır.
Swing çerçevesi tamamen Java ile yazılmıştır. Java'daki Swing çerçevesi, 'javax.swing' paketi aracılığıyla sağlanır. Javax.swing paketindeki sınıflar 'J' harfiyle başlar. Yani bir javax.swing paketinde JButton, JFrame, JTextField, JTextArea vb. Sınıflarımız olacak.
Genel olarak, Swing API, AWT'de bulunan javax.swing paketinde tanımlanan her kontrole sahiptir. Yani salıncak bir şekilde AWT'nin yerine geçer. Ayrıca, Swing'in çeşitli gelişmiş bileşen sekmeli bölmeleri vardır. Java'daki Swing API, MVC (Model View Controller) Mimarisini uyarlar.
Bu mimarinin temel özellikleri şunlardır:
- Swing bileşeninin verileri Model kullanılarak temsil edilir.
- Bir görünüm kullanılarak görsel olarak temsil edilir.
- MVC mimarisinin denetleyici bileşeni, görünümdeki kullanıcıdan gelen girdiyi okur ve daha sonra bu değişiklikler bileşen verilerine aktarılır.
- Her bir Salınım bileşeninde, model ayrı iken görünüm ve kontrolör bir arada tutulur. Bu, salıncağa takılabilir bir görünüm ve his özelliği verir.
Swing API'nin özellikleri aşağıda özetlenmiştir.
- Salıncak bileşenleri platformdan bağımsızdır.
- API genişletilebilir.
- Salıncak bileşenleri hafiftir. Swing bileşenleri saf Java ile yazılmıştır ve bileşenler, temel sistem çağrıları yerine Java kodu kullanılarak işlenir.
- Swing API, işlevsellik açısından zengin olan TabbedPane, Tree, Colorpicker, tablo kontrolleri gibi bir dizi gelişmiş kontrol sağlar.
- Salıncak kontrolleri son derece özelleştirilebilir. Bunun nedeni, bileşenin görünümü veya görünüşünün iç temsilden bağımsız olması ve dolayısıyla onu arzu ettiğimiz şekilde özelleştirebilmemizdir.
- Değerleri basitçe değiştirebilir ve böylece çalışma zamanında görünüşü ve hissi değiştirebiliriz.
Java Swing Bileşenleri
Swing, programlarımıza dahil edebileceğimiz ve son derece özelleştirilmiş ve verimli GUI uygulamaları geliştirebileceğimiz zengin işlevselliklerden yararlanabileceğimiz büyük bir bileşen setine sahiptir.
Öyleyse bir bileşen nedir?
Bir bileşen, görsel olarak temsil edilebilen ve genellikle bağımsız olan bir kontrol olarak tanımlanabilir. Spesifik bir işleve sahiptir ve Swing API'de ayrı bir sınıf olarak temsil edilir.
Örneğin, sınıf JButton in swing API bir düğme bileşenidir ve bir düğmenin işlevselliğini sağlar.
Bir veya daha fazla bileşen bir grup oluşturur ve bu grup bir 'Konteyner' içine yerleştirilebilir. Bir kap, bileşenleri görüntüleyebileceğimiz ve ayrıca aralıklarını, düzenlerini vb. Yönetebileceğimiz bir alan sağlar.
Java'da, Kapsayıcılar aşağıda gösterildiği gibi iki türe ayrılır:

Java'da Swing Sınıfları
Java'da bir Swing API hiyerarşisi aşağıda gösterilmiştir:

Yukarıdaki hiyerarşiden görüldüğü gibi Konteyner sınıflarımız var - çerçeve, diyalog, Panel, Applet, vb. Swing API'nin JComponent sınıfından türetilen Bileşen sınıfları da vardır. JComponent'ten miras alınan sınıflardan bazıları JLabel, JList, JTextBox vb.
Swing API'nin önemli sınıflarından bazıları aşağıdaki gibidir:
- JWindow: Swing'in JWindow sınıfı, Window sınıfını doğrudan miras alır. JWindow sınıfı, varsayılan düzen olarak 'BorderLayout' kullanır.
- JPanel: JPanel, JComponent sınıfının bir neslidir ve AWT sınıfı Panel ile benzer çizgiler üzerindedir ve varsayılan düzen olarak 'FlowLayout' a sahiptir.
- JFrame: JFrame, Frame sınıfından gelmektedir. Çerçeveye eklenen bileşenlere Çerçeve içeriği denir.
- JLabel: JLabel sınıfı, JComponent'in bir alt sınıfıdır. Uygulamada metin etiketleri oluşturmak için kullanılır.
- JButton: Swing'deki basma düğmesi işlevi JButton tarafından sağlanır. Bir dizeyi, simgeyi veya her ikisini JButton nesnesiyle ilişkilendirebiliriz.
- JTextField: JTextField sınıfı, tek bir metin satırını düzenleyebileceğimiz bir metin alanı sağlar.
Java'da JFrame
Çerçeve, genel olarak düğmeler, etiketler, metin alanları vb. Gibi diğer bileşenleri içerebilen bir kaptır. Çerçeve penceresi bir başlık, kenarlık ve ayrıca menüler, metin alanları, düğmeler ve diğer bileşenleri içerebilir. Bir uygulama, içine bileşenler ekleyebilmemiz için bir çerçeve içermelidir.
Java Swing'deki Çerçeve, javax.swing.JFrame sınıfında tanımlanmıştır. JFrame sınıfı, java.awt.Frame sınıfını miras alır. JFrame, swing kullanan GUI uygulamasının ana penceresi gibidir.
İki yaklaşım kullanarak bir JFrame pencere nesnesi oluşturabiliriz:
Windows 7'de swf dosyaları nasıl oynatılır
# 1) JFrame Sınıfını Genişleterek
İlk yaklaşım, bir Çerçeve oluşturmak için yeni bir sınıf oluşturmaktır. Bu sınıf, javax.swing paketinin JFrame sınıfından miras alır.
Aşağıdaki program bu yaklaşımı uygular.
import javax.swing.*; class FrameInherited extends JFrame{ //inherit from JFrame class JFrame f; FrameInherited(){ JButton b=new JButton('JFrame_Button');//create button object b.setBounds(100,50,150, 40); add(b);//add button on frame setSize(300,200); setLayout(null); setVisible(true); } } public class Main { public static void main(String() args) { new FrameInherited(); //create an object of FrameInherited class } } Çıktı:
# 2) JFrame Sınıfını Örnekleyerek
import javax.swing.*; public class Main { public static void main(String() args) { JFrame f=new JFrame('JFrameInstanceExample');//create a JFrame object JButton b=new JButton('JFrameButton');//create instance of JButton b.setBounds(100,50,150, 40);//dimensions of JButton object f.add(b);//add button in JFrame f.setSize(300,200);//set frame width = 300 and height = 200 f.setLayout(null);//no layout manager specified f.setVisible(true);//make the frame visible } } Çıktı:

Yukarıdaki programda, JFrame sınıfının bir örneğini oluşturarak JFrame sınıfından bir çerçeve oluşturduk.
Java'da JPanel
Panel, çerçeve penceresinin içinde bulunan bir bileşendir. Bir çerçeve, içinde birden fazla panel bileşenine sahip olabilir ve her panel bileşeni birkaç başka bileşene sahip olabilir.
Daha kolay bir ifadeyle, çerçeveyi bölmek için paneller kullanabiliriz. Her panel, içindeki diğer birkaç bileşeni gruplandırır. Başka bir deyişle, çerçeve içindeki bileşenleri düzenlemek için paneller kullanıyoruz.
Panel bileşenini uygulayan swing API sınıfı JPanel'dir. JPanel sınıfı, JComponent'ten miras alır ve varsayılan düzeni olarak FlowLayout'a sahiptir.
Aşağıdaki program, javax.swing paket sınıflarını kullanarak bir çerçeve içinde bir panel kabının oluşturulmasını göstermektedir.
import javax.swing.*; class JPanelExample { JPanelExample(){ JFrame frame = new JFrame('Panel Example'); //create a frame JPanel panel = new JPanel(); //Create JPanel Object panel.setBounds(40,70,100,100); //set dimensions for Panel JButton b = new JButton('ButtonInPanel'); //create JButton object b.setBounds(60,50,80,40); //set dimensions for button panel.add(b); //add button to the panel frame.add(panel); //add panel to frame frame.setSize(400,400); frame.setLayout(null); frame.setVisible(true); } } public class Main { public static void main(String() args) { new JPanelExample(); //create an object of FrameInherited class } } Çıktı:

Burada bir Çerçevemiz var. Çerçevenin içinde bir panel oluşturuyoruz. Ardından panelin içinde bir düğme oluşturuyoruz. Bu şekilde diğer bileşenleri tutmak için bir panel kullanabiliriz.
Java'da JTextArea
TextArea, düzenlenebilir bir metin alanı tanımlar. Birden çok satıra sahip olabilir. Metin alanını tanımlayan swing sınıfı JTextArea'dır ve JTextComponent sınıfını miras alır.
public class JTextArea, JTextComponent'i genişletir
JTextArea sınıfı, çeşitli seçeneklerle bir metin alanı oluşturmamızı sağlayan 4 yapıcı içerir.
- JTextArea (): Varsayılan kurucu. Boş bir metin alanı oluşturun.
- JTextArea (Dizeler): Varsayılan değer olarak s ile bir metin alanı oluşturur.
- JTextArea (int satır, int sütun): Belirtilen satır x sütununa sahip bir metin alanı oluşturur.
- JTextArea (String s, int satır, int sütun): Belirtilen satır x sütun ve varsayılan değer s ile bir metin are2a oluşturur.
Aşağıdaki Java programı, salınımdaki JTextArea bileşeninin bir örneğini göstermektedir.
import javax.swing.*; class JTextAreaExample { JTextAreaExample(){ JFrame frame= new JFrame(); JTextArea t_area=new JTextArea('JTextArea example'); //create object of JTextArea t_area.setBounds(10,30, 150,100); //set its dimensions frame.add(t_area); //add it to the frame frame.setSize(200,200); frame.setLayout(null); frame.setVisible(true); } } public class Main { public static void main(String() args) { new JTextAreaExample(); //create an object of TextAreaExample class } } Çıktı:

Java'da JButton
Düğme, üzerinde bir ad veya etiket bulunan bir düğme oluşturmak için kullanılan bir bileşendir. Hızla, etiketli bir düğme oluşturan sınıf JButton'dur. JButton, AbstractButton sınıfını miras alır. ActionListener olayını, basıldığında bir eylem yapmasını sağlamak için butonla ilişkilendirebiliriz.
Java salınımlarında JButton için örnek bir program uygulayalım.
import javax.swing.*; public class Main { public static void main(String() args) { JFrame frame=new JFrame('JButton Example'); //create JFrame object JButton button=new JButton('Button'); //Create a JButton object button.setBounds(50,50,75,35); //set dimensions for button frame.add(button); //add button to the frame frame.setSize(250,200); frame.setLayout(null); frame.setVisible(true); } } Çıktı:

Java'da JList
Bir liste birden çok metin öğesinden oluşur. Kullanıcılar aynı anda tek bir öğeyi veya birden çok öğeyi seçebilir. Listeyi swing API'de uygulayan sınıf JList'tir. JList, JComponent sınıfının bir neslidir.
Aşağıda JList sınıfının kurucuları verilmiştir.
- JList (): Boş, salt okunur bir liste oluşturan varsayılan kurucu.
- JList (dizi () listItem): Başlangıçta dizi listItem öğelerini içeren bir JList oluşturun.
- JList (ListModel dataModel): Belirtilen model dataModel'den öğeler içeren bir liste oluşturur.
JList bileşeninin basit bir gösterimi aşağıda verilmiştir.
import javax.swing.*; public class Main { public static void main(String() args) { JFrame frame= new JFrame('JList Example'); //create a list model and add items to it DefaultListModel colors = new DefaultListModel<>(); colors.addElement('Red'); colors.addElement('Green'); colors.addElement('Blue'); //create JList object and add listModel to it JList colorsList = new JList<>(colors); colorsList.setBounds(100,100, 75,50); frame.add(colorsList); //add list to the frame frame.setSize(400,400); frame.setLayout(null); frame.setVisible(true); } } Çıktı:

Yukarıdaki programda önce içinde renk girdileri olan bir listModel tanımlıyoruz. Ardından bir JList nesnesi oluşturup listModel'i ona ekliyoruz. Daha sonra, JList nesnesi, daha sonra görüntülenen çerçeve nesnesine eklenir.
Java'da JComboBox
JCombobox sınıfı, bir kullanıcının bir seçeneği seçebileceği bir seçenek listesi gösterir. Seçilen seçim en üsttedir. JComboBox, JComponent sınıfından türetilmiştir.
JComboBox sınıfı tarafından sağlanan kurucular şunlardır:
- JComboBox (): Varsayılan veri modeliyle bir ComboBox oluşturan varsayılan yapıcı.
- JComboBox (Object () öğeleri): Bu yapıcı, belirli dizi öğelerinin öğeleri olarak öğeleri içeren bir ComboBox oluşturur.
- JComboBox (Vektör öğeleri): Bu yapıcı, verilen vektörün öğelerini okur ve öğeleri olarak bu öğeleri içeren bir ComboBox oluşturur.
JComboBox sınıfı ayrıca öğe eklemek / kaldırmak, ActionListener, ItemListener vb. Eklemek için yöntemler sağlar.
Aşağıdaki örnek, Java'daki JComboBox uygulamasını göstermektedir.
import javax.swing.*; class ComboBoxExample { JFrame frame; ComboBoxExample(){ frame=new JFrame('ComboBox Example'); //create a string array String country()={'India','SriLanka','Singapore','Maldives','SeyChelles'}; //create a combobox object with given string array JComboBox countries=new JComboBox(country); countries.setBounds(50, 50,90,20); frame.add(countries); //add it to the frame frame.setLayout(null); frame.setSize(200,300); frame.setVisible(true); } } public class Main { public static void main(String arg()) { new ComboBoxExample(); } } Çıktı:

Java'da JSlider
Kaydırıcı, belirli bir değer aralığı seçmemizi sağlar. Java Swing API'de, JSlider, kaydırıcıyı uygulamak için kullanılan sınıftır.
Aşağıdakiler, JSlider sınıfı tarafından sağlanan yapıcılardır.
- JSlider (): Başlangıç değeri 50'ye ve 0-100 aralığına sahip bir kaydırıcı oluşturan varsayılan bir kurucu.
- JSlider (int orientation): Bu yapıcı, tıpkı yukarıdaki gibi, ancak belirli bir yönelimle bir kaydırıcı oluşturur. Yönlendirme değeri JSlider.HORIZONTAL veya JSlider.VERTICAL olabilir.
- JSlider (int min, int max): Bu yapıcı, verilen min ve max kullanarak yatay bir kaydırıcı oluşturmak için kullanılır.
- JSlider (int min, int max, int value): Bu yapıcı, belirtilen min, max ve value değeriyle yatay olan bir kaydırıcı oluşturur.
- JSlider (int orientation, int min, int max, int value): Bu yapıcı, belirtilen yönlendirme, min, max ve değer ile bir kaydırıcı oluşturur.
Aşağıdaki program JSlider'ı Java'da işaretlerle göstermektedir. Bu program, JSlider sınıfı tarafından desteklenen yöntemlerin kullanımını da gösterir.
import javax.swing.*; class SliderExample extends JFrame { public SliderExample() { //create a slider object JSlider slider = new JSlider(JSlider.HORIZONTAL, 0, 50, 25); //set major and minor ticks for the slider slider.setMinorTickSpacing(2); slider.setMajorTickSpacing(10); slider.setPaintTicks(true); slider.setPaintLabels(true); JPanel panel = new JPanel(); panel.add(slider); //add slider to the panel add(panel); } } public class Main{ public static void main(String s()) { SliderExample frame=new SliderExample(); frame.pack(); frame.setVisible(true); } } Çıktı:

Java'da Olay İşleme
Bir olay, bir nesnenin durumundaki değişiklik olarak tanımlanabilir. GUI bakış açısından, son kullanıcı GUI bileşenleriyle etkileşime girdiğinde bir olay meydana gelir. GUI'de tetiklenen olaylar, bir düğmenin tıklanması, kaydırılması, liste öğelerinin seçilmesi, metnin değiştirilmesi vb. Olabilir.
Yukarıda listelenen GUI'de meydana gelen olay çoğunlukla ön plandaki olaylardır. Arka planda işlem tamamlama, zamanlayıcının sona ermesi gibi bazı arka plan olaylarımız da olabilir.
Olay işleme, bir olay meydana geldiğinde bir eylemin gerçekleştirildiği bir mekanizmadır. Bunun için, bir olay meydana geldiğinde çağrılan olay işleyici olarak da adlandırılan bir yöntem tanımlarız. Java, olayları oluşturmak ve işlemek için 'Delegation olay modeli' adı verilen standart bir mekanizma kullanır.
Delegation olay modeli şunlardan oluşur:
# 1) Kaynak: Olayın kaynağı nesnedir. Bir olayın meydana geldiği nesne kaynaktır ve kaynak, olay işleyicisine olay hakkındaki bilgileri göndermekten sorumludur.
# 2) Dinleyici: Dinleyici, bir olay meydana geldiğinde eylem yapmaktan sorumlu olay işleyicisinden başka bir şey değildir. Java'da dinleyici, bir olayı bekleyen bir nesnedir. Olay gerçekleştiğinde, dinleyici olayı işler.
Gereksinim, dinleyiciyi nesneye kaydetmektir, böylece bir olay meydana geldiğinde, dinleyici onu işleyebilir.
Örneğin,Bir düğme tıklama olayı için, aşağıdaki adım dizisine sahip olabiliriz.
- Kullanıcı, bir Click olayı oluşturan düğmeyi tıklar.
- Uygun olay sınıfı nesnesi oluşturulur ve kaynak ve olay verileri bu nesneye aktarılır.
- Bu olay nesnesi daha sonra nesneyle kaydedilen dinleyici sınıfına aktarılır.
- Dinleyici çalıştırır ve geri döner.
Şimdi Java tarafından sağlanan dinleyicilerden bazılarını tartışalım.
çalıştırılabilir jar dosyası nasıl çalıştırılır
Java'da ActionListener
ActionListener, bir düğme veya menü öğesinin dinleyicisidir. Bir düğmeye tıkladığımızda, dahil olan düğme Dinleyici, actionListener'dir. ActionListener, ActionEvent'te bildirilir.
Java.awt.an olay paketi, ActionListener arabirimini tanımlar. Bu arabirimde yalnızca bir actionPerformed () yöntemi vardır.
public abstract void actionPerformed (ActionEvent e);
Button gibi kayıtlı bir bileşen tıklandığında, actionPerformed () yöntemi otomatik olarak çağrılır.
Programa ActionListener'ı dahil etmek için en yaygın yaklaşım, ActionListener arabirimini uygulamak ve ardından actionPerformed () yöntemini uygulamaktır.
ActionListener sınıfını uygulama adımları aşağıdaki gibidir:
# 1) ActionListerner arayüzünü uygulayın.
public class ActionListenerImpl ActionListener uygular
# 2) Bileşeni bu dinleyici ile kaydedin. Düğme, dinleyiciye kaydetmek istediğimiz bir bileşense, aşağıdaki gibi kaydedeceğiz:
button.addActionListener (instanceOfListenerclass);
# 3) actionPerformed () yöntemini uygulayın / geçersiz kılın.
public void actionPerformed (ActionEvent e){ //code to perform action }Dolayısıyla, yukarıdaki adımları kullanarak herhangi bir olayı GUI bileşeni ile ilişkilendirebiliriz.
Aşağıdaki örnek, ActionListener kullanan bir button Click olayını gösterir.
import javax.swing.*; import java.awt.event.*; public class Main { public static void main(String() args) { JFrame frame=new JFrame('Button Click Example'); final JTextField text_field=new JTextField(); //JTextField object text_field.setBounds(50,100, 150,20); JButton click_button=new JButton('Click Me!!!'); //JButton object click_button.setBounds(20,50,75,30); click_button.addActionListener(new ActionListener(){ //add an event and take action public void actionPerformed(ActionEvent e){ text_field.setText('You Clicked the button'); } }); //add button and textfield to the frame frame.add(click_button);frame.add(text_field); frame.setSize(400,400); frame.setLayout(null); frame.setVisible(true); } } Çıktı:

Yukarıdaki program bir ActionListener olayı uygular. Olay, Düğme tıklama olayıdır ve bununla, düğmeye tıklandığında metin alanında metni görüntüleyen bir ActionListener ilişkilendirdik.
Java'da KeyListener
Anahtarın durumunda bir değişiklik olduğunda, bir KeyListener bildirilir. ActionListener gibi, KeyListener da java.awt.event paketinde bulunur.
KeyListener arabirimi aşağıdaki yöntemleri sağlar:
public abstract void keyPressed (KeyEvent e);
public abstract void keyReleased (KeyEvent e);
public abstract void keyTyped (KeyEvent e);
Anahtar olayları bileşenle ilişkilendirmek için yukarıdaki yöntemleri uygulamamız gerekir. Java'da swings kullanarak bir KeyListener örneği uygulamayı kullanıcıya bırakıyoruz.
Java'da Swing Düzenleri
Bir kapta çeşitli bileşenleri düzenlediğimizde, bu bileşenleri yerleştirdiğimizi söylüyoruz. Dolayısıyla bir düzen, bileşenlerin bir kaptaki konumlandırılması olarak tanımlanabilir.
Daha az bileşen olduğu sürece, manuel olarak sürükleyip bırakılarak yerleştirilebilirler. Ancak bileşenleri çok sayıda düzenlemek zorlaşır. Bu noktada, Java Layout Manager yardımımıza geliyor.
LayoutManager, GUI uygulamalarındaki bileşenlerin düzeninden sorumludur. LayoutManager bir arayüzdür ve tüm yerleşim yöneticisi sınıfları tarafından uygulanır. Java, aşağıdaki LayoutManager sınıflarını sağlar.
| LayoutManager | Açıklama |
|---|---|
| javax.swing.GroupLayout | Bileşenleri gruplar ve ardından kapsayıcıda konumlandırır. |
| java.awt.BorderLayout | Bileşenler, merkez, doğu, batı, güney, kuzey olmak üzere beş yöne uyacak şekilde düzenlenmiştir. |
| java.awt.FlowLayout | Bu varsayılan düzendir. Bileşenleri yönlü akışa yerleştirir. |
| java.awt.GridLayout | Bileşenleri dikdörtgen bir ızgarada düzenler. |
| javax.swing.BoxLayout | Bileşenler bir kutu içinde düzenlenmiştir. |
| java.awt.CardLayout | Her bileşen bir destede bir kart olarak görülür ve bir anda yalnızca bir bileşen görünür. |
| java.awt.GridBagLayout | Bileşenleri dikey, yatay ve hatta taban çizgileri boyunca düzenler. Bileşenlerin aynı boyutta olması gerekmez. |
| javax.swing.ScrollPaneLayout | JScrollPane sınıfı tarafından kullanılır ve kaydırılabilir kapsayıcılarda bileşenlerin düzenlenmesinden sorumludur. |
| javax.swing.SpringLayout vb. | Bileşenler arasındaki yatay ve dikey mesafe vb. Gibi bir dizi kısıtlama sağlanır ve bileşenler bu kısıtlamalar dizisine göre düzenlenir. |
Bu eğiticide, yalnızca FlowLayout ve GridLayout'u tartışacağız.
Java'da Akış Düzeni
FlowLayout, bileşenleri birbiri ardına akış yönünde düzenler. Bu, Panel ve Applet gibi kaplar için varsayılan düzendir.
Java'daki FlowLayout yöneticisini temsil eden FlowLayout sınıfı aşağıdaki Alanları ve yapıcıları içerir.
FlowLayout Sınıfı Alanları
- public static final int LEADING
- public static final int TRAILING
- public static final int LEFT
- public static final int SAĞ
- public static final int CENTER
Yukarıdaki alanlar, bileşenlerin yerleştirileceği veya hizalanacağı konumları tanımlar.
FlowLayout Sınıfının Oluşturucuları
- Akış düzeni (): Bu varsayılan bir kurucudur. Bu yapıcı, yatay ve dikey yönde 5 birimlik varsayılan bir boşlukla merkezi olarak hizalanmış bileşenlere sahip bir akış düzeni oluşturur.
- FlowLayout (int hizala): Bu kurucu, belirtilen hizalama değeri ve 5 birimlik yatay ve dikey boşluk ile bir akış düzeni oluşturur.
- FlowLayout (int hizalama, int hgap, int vgap): Belirtilen hizalama değeri ve yatay ve dikey boşluk ile bir akış düzeni oluşturur.
Aşağıda Java'da bir FlowLayout örneği verilmiştir.
import javax.swing.*; import java.awt.*; class FlowLayoutClass { JFrame frame; FlowLayoutClass() { frame = new JFrame('FlowLayout Example'); //create button components JButton b1 = new JButton('A'); JButton b2 = new JButton('B'); JButton b3 = new JButton('C'); JButton b4 = new JButton('D'); JButton b5 = new JButton('E'); //add components to the frame frame.add(b1); frame.add(b2); frame.add(b3); frame.add(b4); frame.add(b5); //set layout as 'FlowLayout.CENTER' frame.setLayout(new FlowLayout(FlowLayout.CENTER)); //setting flow layout of right alignment frame.setSize(300, 300); frame.setVisible(true); } } public class Main{ public static void main(String() args) { new FlowLayoutClass(); } } Çıktı:

Java'da GridLayout
GridLayout kullanarak bileşenleri dikdörtgen ızgara biçiminde düzenleyebiliriz, yani her bileşen her bir dikdörtgende düzenlenir.
GridLayout Sınıfının Oluşturucuları
- GridLayout (): Bir satırdaki bileşen başına bir sütuna sahip bir ızgara düzeni oluşturan varsayılan yapıcı.
- GridLayout (int satırlar, int sütunlar): Bu yapıcı bir ızgara düzeni oluşturur belirtilen satırlar ve sütunlar ile. Bileşenler arasında boşluk yoktur.
- GridLayout (int satırlar, int sütunlar, int hgap, int vgap): Bu yapıcıyı kullanarak, belirli satırlar ve sütunlar ile yatay ve dikey boşluklar içeren bir ızgara düzeni oluşturuyoruz.
Aşağıdaki örnek, Java'da GridLayout'u uygular.
import javax.swing.*; import java.awt.*; class GridLayoutClass { JFrame frame; GridLayoutClass() { frame=new JFrame('GridLayout Example'); //create components to be laid out as per GridLayout JButton b1=new JButton('P'); JButton b2=new JButton('Q'); JButton b3=new JButton('R'); JButton b4=new JButton('S'); JButton b5=new JButton('T'); JButton b6=new JButton('U'); JButton b7=new JButton('V'); JButton b8=new JButton('W'); JButton b9=new JButton('X'); //add components to the frame frame.add(b1);frame.add(b2);frame.add(b3);frame.add(b4);frame.add(b5); frame.add(b6);frame.add(b7);frame.add(b8);frame.add(b9); //set frame layout to GridLayout of 3 rows and 3 columns frame.setLayout(new GridLayout(3,3)); frame.setSize(300,300); frame.setVisible(true); } } public class Main{ public static void main(String() args) { new GridLayoutClass(); } } Çıktı:

Java'da Setbounds
Bu öğreticide programlama örneklerini layout konusundan önce kontrol edersek, bu örneklerde layout'u null olarak ayarladığımızı görebiliriz (setLayout (null)). Programımızda yerleşim yöneticileri kullandığımızda, bileşenleri otomatik olarak konumlandırdıklarını gördük.
Yerleşim yöneticileri kullanılmadığında, setBounds yöntemini bileşenin boyutuna ve konumuna göre kullanabiliriz. Bu nedenle setBounds yöntemi, bileşeni manuel olarak konumlandırmak ve ayrıca boyutu ayarlamak için kullanılır.
SetBounds yönteminin genel sözdizimi aşağıdaki gibidir:
setBounds (int x-koordinat, int y - koordinat, int genişlik, int yükseklik)
Şimdi SetBounds yönteminin bir örneğini uygulayalım.
import javax.swing.*; public class Main { public static void main(String arg()) { JFrame frame = new JFrame('SetBounds Method Test'); frame.setSize(375, 250); // Set layout as null frame.setLayout(null); // Create a Button JButton button = new JButton('ButtonWithSetBounds'); // Set position and size of a button using setBounds button.setBounds(80,30,200,40); frame.add(button); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setLocationRelativeTo(null); frame.setVisible(true); } } Çıktı:
Java'da bir diziye nasıl eklenir

Yukarıdaki programda bir Button bileşenimiz var. Herhangi bir düzen belirlemedik ancak konumunu ve boyutlarını ayarlamak için setBounds yöntemini kullandık.
Swing Vs JavaFX
| Salıncak | JavaFX |
|---|---|
| Swing, GUI bileşenleri oluşturmak için bir API sağlar. | JavaFX, ekran oluşturucu ile ilişkili komut dosyaları ve hızlı UI geliştirme sağlar. |
| Gelecekteki sürümlerde Swing'e eklenen yeni bir işlev olmayacak. | JavaFX zengin işlevsellik sağlar ve gelecekteki sürümlerde daha fazla özellik potansiyeline sahiptir. |
| Swing API kullanarak tüm standart bileşenleri oluşturabiliriz. | JavaFX, gelişmiş görünüm ve his kullanarak zengin GUI bileşenleri oluşturmamızı sağlar. |
| Swing'de çok sayıda bileşen mevcuttur. | JavaFX, nispeten daha az sayıda bileşene sahiptir. |
| Swing, tam özellikli bir UI kitaplığıdır. | JavaFX, zengin UI bileşenlerine sahip yeni ve yakında çıkacak bir API'dir. |
| Swing, gevşek MVC desteğine sahiptir. | JavaFX, MVC modelini tutarlı bir şekilde destekler. |
Sıkça Sorulan Sorular
S # 1) Swing hala Java'da kullanılıyor mu?
Cevap: Evet, Swing hala Java'da kullanılıyor ve bu çok yoğun. Bazen AWT'nin tam yerine kullanılır. Bazen bazı AWT bileşenleriyle birlikte de kullanılır. En son JavaFX ile bile kullanılır. Yani Swing hala kullanılıyor ve uzun bir süre kullanılacak.
S # 2) Java Swing nasıl çalışır?
Cevap: Java'da Swing, AWT çerçevesinin üzerine yazılmıştır. Dolayısıyla, AWT'nin olay yönetimi tamamen salınımla miras alınır. Swing ayrıca verimli GUI uygulamaları geliştirmek için kullanabileceğimiz çok sayıda bileşen sağlar.
S # 3) Swing, MVC'yi takip ediyor mu?
Cevap: Swing API, gevşek MVC desteğine sahiptir. Model, bileşenin verilerini temsil eder. Salınım bileşeninin Model adında ayrı bir öğesi vardır, oysa Denetleyici ve Görünüm, UI öğelerinde birlikte toplanır. Bu clubbing, salıncağın takılabilir bir görünüme ve hisse sahip olmasını sağlar.
S # 4) JavaFX, Swing'den daha mı iyi?
Cevap: Swing uzun süredir ortalıkta ve daha olgun IDE desteğine sahip. Aynı zamanda çok büyük bir bileşen kitaplığına sahipti. JavaFX nispeten daha yenidir ve küçük bir bileşen kitaplığına sahiptir, ancak daha tutarlı güncellemeler ve tutarlı MVC desteği vardır. Dolayısıyla, JavaFX'in nasıl daha fazla geliştiğine ve daha fazla özellik sağladığına bağlıdır.
S # 5) Hangisi daha iyi AWT veya Swing?
Cevap: Swing, AWT üzerine inşa edilmiştir ve AWT ile karşılaştırıldığında zengin ve geniş bir UI bileşenleri kümesi sağlar. Salıncak bileşenleri ayrıca, İşletim sistemine bir görünüm ve his veren AWT bileşenlerine göre görünüm ve hislere sahip olabilir.
Salıncak bileşenleri AWT'den daha hızlıdır. Tüm bu faktörler, salınımı AWT'den daha iyi yapar.
Java Swing Hakkında Daha Fazla Bilgi
Bir uygulama oluşturduğunuzda, başlangıçta bir temel konteynere sahip olmanız ve konteynere düğmeler ve metin alanları gibi gerekli bileşenleri eklemeniz gerekir.
Ve herhangi bir alanda herhangi bir işlemi tıkladığınızda veya gerçekleştirdiğinizde, olay gerçekleşir ve kodunuz olayları dinlemeli ve aynı zamanda olayı işlemelidir.
Salıncak Konteyner
Kapsayıcı, bir Uygulama için bir kök öğedir. Diğer tüm bileşenler bu köke eklenir ve bir hiyerarşi oluşturur.
Üç konteyner sınıfı vardır:
- JFrame
- JDialog
- JApplet
JFrame kullanarak Konteyner Demosu:
import java.awt.Color; import javax.swing.JFrame; import javax.swing.JPanel; public class ContainerDemo { public static void main(String() args) { JFrame baseFrame =new JFrame(); baseFrame.setTitle('Base Container'); JPanel contentPane=new JPanel(); contentPane.setBackground(Color.pink); baseFrame.setSize(400, 400); baseFrame.add(contentPane); baseFrame.setDefaultCloseOperation(baseFrame.EXIT_ON_CL OSE); baseFrame.setVisible(true); } } 
Yukarıdaki programı çalıştırdığınızda aşağıdaki çıktıyı alacaksınız.

Bileşenler
JComponent sınıfı, bir salınımdaki tüm bileşenler için temel bir sınıftır.
Sık kullanılan bileşenler şunları içerir:
- JButton
- JTextField
- JTextArea
- JRadioButton
- JComboBox vb.
Tüm bu bileşenler konteynere eklenmelidir, yoksa uygulamada görünmeyecektir.
Misal:
Düğme örneğini oluşturmak için,
JButton clickButton = new JButton ();
Düğmeyi konteynere eklemek için,
myFrame.add ();
Olay işleme
Tüm Uygulamalar, düğme tıklamaları, fare tıklamaları, kullanıcı metin girişi vb. Gibi olaylarla çalıştırılır. Olay gerçekleştiğinde, bir dinleyici eklemeniz ve kaynak olay nesnesini iletmeniz gerekir.
Bir iç sınıfla, olayı aşağıda gösterildiği gibi mantığınızla halledebilirsiniz.
public class ContainerDemo { public void createApp() { JFrame baseFrame =new JFrame(); JPanel contentPane=new JPanel(); baseFrame.setTitle('Base Container'); baseFrame.setSize(400, 400); baseFrame.add(contentPane); JButton demoButton =new JButton('click'); demoButton.setBounds(100,95,95,30); JTextArea result =new JTextArea(); result.setBounds(130,140,95,30); contentPane.add(demoButton); contentPane.add(result); baseFrame.setDefaultCloseOperation(baseFrame.EXIT_ON_CL OSE); baseFrame.setVisible(true); demoButton.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { result.setText('button clicked'); } }); } public static void main(String() args) { ContainerDemo c =new ContainerDemo(); c.createApp(); } } 
Sonuç
Bu eğiticide, GUI uygulamaları oluşturmak için Java tarafından sağlanan Swing API ile temasa geçtik. Başlıca döner kapları ve bileşenleri ve bunların uygulanmasını tartıştık.
Ayrıca Swing'de olay işlemeyi de tartıştık. Olay işleme mekanizması AWT olmasına rağmen, swing olayları verimli bir şekilde uygular. Daha sonra Swing API tarafından sağlanan ve Swing GUI uygulamalarında çeşitli bileşenleri düzenlememize veya düzenlememize izin veren çeşitli düzen yöneticilerini tartıştık.
=> Mükemmel Java Eğitim Kılavuzuna Buradan Bakabilirsiniz.