Ana içeriğe atla

Java Swing

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

Bu blogdaki popüler yayınlar

MasterPage kavramı

Düşünün ki 100'lerce sayfadan oluşan bir siteniz var ve hepsinde belli yerler sabit. Örnek verecek olursak menüler genelde sabit olur ya da en altta yer alan açıklamalar vs. gibi. Bunların içinde bir yerde değişiklik yapmanız gerektiğinde hepsini tekrar düzenlemeniz gerekiyordu önceleri. Fakat masterpage kavramının gelmesiyle bu sorun ortadan kalktı. Artık sabit olan tarafları masterpage içinde yaratıp normal içerik sayfaları bu masterpage'i kullanarak türeyebiliyor. Sanki yeni gibi anlatıyorum ama bu çıkalı bayağı bir oluyor :) hemen küçük bir örnekle konumuzu özetleyelim : MasterPage.master Burada göreceksiniz ki html sayfasında olması gereken ana tag'ler var. Çünkü buradan türeyen sayfalar body taginin içinde yer alan contentpalceholder içine gömülürler serverde işlenirken. Defalut1.aspx Hemen solutionExplorer'dan oluşturduğumuz masterpage'e sağ tıklayıp "add content page" diyoruz.Türeyen sayfada hiçbir html tagi bulunmuyor çünkü onlar zaten masterpag

Windows DLL'leri ile Pencere Kontrolü

Hemen hızlı bir giriş yapalım değil mi :) Şimdi asıl olay şu yaptığımız bir programdan diğer açık olan program pencerelerini nasıl kontrol ederiz? Tabiki user32 DLL'i ile :) [DllImport("user32.dll")] public static extern int FindWindow( string lpClassName, // class name string lpWindowName // window name ); Bu fonksiyon bizim açık olan programı buluyor ve bize onun Windows altındaki ID'sini veriyor. Tabiki "windows name" parametresine programın tam adının yazılması gerekli. [DllImport("user32.dll")] public static extern int SetForegroundWindow( int hWnd // handle to window ); Burası ise biraz önceki ID değerini alarak, bu ID'ye sahip olan pencereyi ön tarafa getiriyor. [DllImport("user32.dll")] public static extern int SendMessage( int hWnd, // handle to destination window uint Msg, // message int wParam, // fir

Rusya Vizesi Fırsatçılığı

Neredeyse 7 yıl olacak yazı yazmayalı :) Eski yazılarıma baktım da hepsi programlama ile ilgili. Tabi o zamanlar henüz yurt dışına çıkmadığımdan vize ile ilgili işlemleri de bilmiyordum. Gelelim Rusya vizesi olayına. Geçen sonbaharda hazır uçak biletlerinde kampanya varken bir yerlere gidelim dedik. Vize alınması gerektiğini biliyorduk ama yine de Mart ayı için Rusya'ya bilet aldık. (Gidiş dönüş 2 kişi 300TL) Şubat ayı geldi hala vizeler kalkmayınca (malum adamların uçağını uçurduk) dedik vize başvurusu yapalım. Ama Rusya vizesi shengen gibi kolay değilmiş. Aslında kolay ama bir tur operatöründen alınmış bir belge istiyorlar. Bunu da internet üzerinden formu doldururken farkettik. Bir kaç araştırmadan sonra aracı şirketler bu belge ile birlikte vize ücretine kişi başı 150$ istediklerini görünce dedik uçak biletini yakalım gitmeyelim daha iyi. Hatta bizim evin yakınında, neredeyse her gün önünden geçtiğim bir Jolly Tur var. Geçerken sorayım dedim Rusya vize ücretini. O da kişi