Kısaca bir bakalım neymiş bu "swing" kütüphanesi. Aslında windowsform'larda sıkça karşılaştığımız button, label vs. gibi objeleri barındıran bir kütüphanedir. Biraz da kodlayalım bakalım :
//Gerekli kütüphaneleri ekliyoruz
import java.awt.EventQueue;
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.WindowConstants;
public class SwingExample {
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
//Penceremizi oluşturuyoruz
JFrame f = new JFrame("swing örnek");
// nesnelerimizin nasıl duracağını belirliyoruz
f.setLayout(new FlowLayout());
//Bir kaç nesne ekliyoruz
f.add(new JLabel("http://volkanalbayrak.blogspot.com/"));
f.add(new JButton("Git :)"));
f.pack();
//java da eğer bunu yazmazsak pencere kapandığında program
//arkada çalışmaya devam edecektir. Sadece görünmez olacak
//O nedenle bu fonksiyonu ekliyoruz ki program kapansın :)
f.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
//ve Pencere gelsin :)
f.setVisible(true);
}
});
}
}
Peki nedir bu en baştaki "awt" kütüphanesi diyeceksiniz. Wiki'de kısa ve güzel bir açıklama buldum bunlar için :
"AWT (Abstract Windowing Toolkit), Java Programlama dilinin, platformdan bağımsız, görsel (graphical) kullanıcı arayüzü üretimini sağlayan araç kütüphanesidir. Java Foundation Classes (JFC) olarak adlandırılan standardize edilmis JAVA uygulama geliştirme arayüzünün önemli bir parçasıdır. Sonradan yeterli görülmeyerek geliştirilmesi sonucunda SWING adı verilen, daha gelişmiş bir kütüphane kullanılmaya başlanmıştır.
AWT kütüphanesinin en büyük dezavantajı, kullanıldığı platformda, grafik tabanlı bileşenlere doğrudan aracı katmanlar bulunmadan ulaşmasıdır. Bu sebepten, her platformda kullanılan farklı grafik bileşenlerinin ortak özellikleri kullanılmış, platformdan platformda değişebilen bazı farklılıklar göz ardı edilmiştir. "Bir kere yaz, her yerde çalıştır" sloganına pek uymayan bu durumda, UNIX sisteminde çalışan bir program, MAC platformunda çalışıldığında farklı sonuçlar doğurabilmiştir.
Sorun, JAVA grafik bileşenleri ile platform özellikleri arasına her duruma uygun kontroller sağlayabilen, daha "kalın" bir kütüphane katmanı SWINGkoyularak çözülmüştür. JDK'nın 2. versiyonda kullanılmaya başlanan SWING kütüphanesinde, her görsel bileşen (widget), platforma bağımlı olarak değil, SWING'e bağımlı olarak çalışır."
Yorumlar