Bölüm 8 · Simülatör

Swing Yerleşim Yöneticileri

← Bölüm 8
JFrame

1. Fareişletim sistemi tıklamayı bildirir
2. EventQueueolay kuyruğa girer
3. EDTolay dağıtım iş parçacığı alır
4. ActionEventdüğme olayı üretir
5. DinleyiciactionPerformed(e)

Swing Yerleşim Yöneticileri

Amaç: Bir kabın (JPanel) içindeki bileşenlerin konum ve boyutunu kabın yerleşim yöneticisinin hesapladığını görmek; pencere boyutu değişince yerleşimin yeniden yapıldığını ve bir düğme tıklamasının dinleyiciye nasıl ulaştığını izlemek.

Yerleşimler

  • FlowLayout (JPanel'in varsayılanı): bileşenleri tercih edilen boyutlarıyla soldan sağa dizer, satır dolunca alt satıra geçer, her satırı ortalar; aralıklar 5 piksel.
  • BorderLayout (JFrame içerik bölmesinin varsayılanı): NORTH ve SOUTH tam genişlik, tercih edilen yükseklik; WEST ve EAST tercih edilen genişlik, kalan yükseklik; CENTER geriye kalan her yeri alır. Her bölgede tek bileşen olur.
  • GridLayout(satır, sütun, 5, 5): bütün hücreler eşit boyutludur; satır sayısı 0'dan büyükse sütun sayısı bileşen sayısından hesaplanır. Bileşenler hücreyi doldurur.
  • BoxLayout: bileşenleri tek sütunda (Y) ya da tek satırda (X) art arda koyar. Düğmeler en fazla tercih edilen boyutlarına uzar; Y ekseninde sola, X ekseninde dikeyde ortaya hizalanır. Sığmayan kısım kesilir.

Olaylar

Tıklama önce olay kuyruğuna (EventQueue) girer; olay dağıtım iş parçacığı (EDT) onu düğmeye iletir, düğme bir ActionEvent üretir ve addActionListener ile kayıtlı her dinleyicinin actionPerformed(e) metodunu çağırır. Kayıtlı dinleyici yoksa olay üretilir ama hiçbir kod çalışmaz.

Nasıl kullanılır?

  1. Yerleşimi seçin, Ekle / Kaldır ile düğme ekleyin; BorderLayout'ta bölgeyi, GridLayout'ta satır ve sütunu seçin.
  2. G ve Y kaydırıcılarıyla içeriğin boyutunu değiştirin; yerleşim anında yeniden hesaplanır.
  3. Penceredeki bir düğmeye tıklayın: alttaki şerit olayın yolunu adım adım gösterir.
  4. Kendini dene: yeni bir boyut için yerleşimin sonucunu tahmin edin.

Düğmelerin tercih edilen boyutu burada metin uzunluğundan basitçe hesaplanır (26 + 8 × harf sayısı piksel genişlik, 26 piksel yükseklik). Aynı tercih edilen boyutlarla gerçek Java 8 FlowLayout, BorderLayout, GridLayout ve BoxLayout sınıflarının hesapladığı konumlar, 345 farklı boyut ve bileşen sayısı için bu sayfanın hesabıyla birebir aynı çıkmıştır.

İlgili sunum: Bölüm 8 · Grafikler (Yerleşim Yöneticisi, BorderLayout, JButton Sınıfı, ActionListener).