- Swing ile GUI Oluşturma (Creating a GUI with Swing) — Java platformunda GUI oluşturmaya kapsamlı bir giriş.
- JavaFX ile GUI Oluşturma (Creating a JavaFX GUI) — JavaFX öğreticileri koleksiyonu.
Swing, Java platformunda zengin masaüstü grafiksel kullanıcı arayüzleri (GUI) geliştirmek için tasarlanmış kapsamlı bir GUI araç takımıdır (toolkit). Tamamen Java ile yazılmış olup platformdan bağımsız, özelleştirilebilir bileşenler sunar.
Swing GUI bileşenleri ve görsel tasarım.- İlk Swing Uygulaması (HelloWorldSwing)
- Üst Düzey Kapsayıcılar (Top-Level Containers)
- Temel GUI Bileşenleri (Components)
- Düzen Yöneticileri (Layout Managers)
- Olay Yönetimi (Event Handling) ve İş Parçacığı Güvenliği
Aşağıda standart bir pencere açan ve ekranda bir selamlama mesajı gösteren eksiksiz HelloWorldSwing uygulaması yer almaktadır:
import javax.swing.*;
public class HelloWorldSwing {
private static void createAndShowGUI() {
// Pencere süslemelerini ayarla
JFrame.setDefaultLookAndFeelDecorated(true);
// Pencereyi (JFrame) oluştur ve yapılandır
JFrame frame = new JFrame("HelloWorldSwing");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// "Hello World" etiketini ekle
JLabel label = new JLabel("Hello World");
frame.getContentPane().add(label);
// Pencereyi boyutlandır ve göster
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
// GUI kodunu Olay Dağıtım İş Parçacığı üzerinde planla
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
}Her Swing GUI'sinin temelinde en az bir üst düzey kapsayıcı yer alır:
JFrame: Başlık çubuğuna, simge durumuna küçültme/büyütme/kapatma butonlarına ve bir kenarlığa sahip standart bir ana uygulama penceresidir.JDialog: Ana pencereden bağımsız veya ona bağlı açılan ikincil diyalog/açılır penceredir (örneğin dosya açma veya onay kutuları).JPanel: Diğer bileşenleri gruplamak ve düzenlemek için kullanılan görünmez ara kapsayıcıdır.
Swing çok çeşitli etkileşimli bileşenler sağlar:
- Düğmeler (Buttons):
JButton,JRadioButton,JCheckBox,JToggleButton. - Metin Giriş Bileşenleri:
JTextField,JPasswordField,JTextArea. - Listeleme ve Seçim:
JComboBox(açılır liste),JList. - Gelişmiş Veri Gösterimi:
JTable(tablolar),JTree(ağaç görünümleri). - Menüler:
JMenuBar,JMenu,JMenuItem.
Swing bileşenlerin kapsayıcı içindeki konumlarını ve boyutlarını piksellerle sabit belirlemek yerine düzen yöneticileri (layout managers) kullanır:
BorderLayout: Kapsayıcıyı 5 bölgeye ayırır:NORTH,SOUTH,EAST,WEST,CENTER. (JFramevarsayılanıdır).FlowLayout: Bileşenleri satır boyunca soldan sağa akıtır; satır dolduğunda alt satıra geçer. (JPanelvarsayılanıdır).GridLayout: Bileşenleri eşit boyutlu satır ve sütunlardan oluşan bir ızgaraya yerleştirir.BoxLayout: Bileşenleri tek bir satırda (yatay) veya tek bir sütunda (dikey) dizer.GridBagLayout: En esnek ve karmaşık ızgara düzen yöneticisidir.
Kullanıcı bir butona tıkladığında veya klavyeden bir tuşa bastığında Swing bir olay üretir:
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
label.setText("Butona tıklandı!");
}
});Swing bileşenleri iş parçacığı güvenli değildir (not thread-safe). Tüm GUI oluşturma, güncelleme ve çizim işlemleri tek bir iş parçacığı olan EDT üzerinde yürütülmelidir. Bu nedenle Swing uygulamaları başlatılırken SwingUtilities.invokeLater() kullanılır.
