Java Swing, Java uygulamaları için grafiksel arayüz (GUI) hazırlamak için geliştirilmiş, devasa büyüklükte bir grafik setidir.
Bu yazıda Java Swing kullanarak ilk grafiksel Java uygulamamızı geliştiricez. Swing uygulamalarını derlemek için ek bir ayar gerekmemektedir. Normal Java uygulamalarını derlediğimiz şekilde Swing uygulamalarını da derleyip çalıştırabiliriz.
//Gerekli swing kütüphanelerini uygulamamıza ekleyelim import javax.swing.*; class MerhabaSwing { //Programımızın GUI arayüzünü hazırlayan method private void guiBuilder() { //Uygulama penceresini hazırlıyoruz JFrame jframe = new JFrame("JavaBlog.Org"); //Penceremizin boyutunu ayarlayalım jframe.setSize(400, 100); jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //Pencere içinde gösterilecek yazı için Label etiketi ekleyeyelim JLabel jlabel = new JLabel("Merhaba Swing, Naber?"); //Şimdide oluşturduğumuz label etiketini ana penceremize ekleyelim jframe.add(jlabel); //ve penceremizin görünürlüğünü ayarlayalım jframe.setVisible(true); } public static void main(String[] args) { MerhabaSwing merhabaSwing = new MerhabaSwing(); merhabaSwing.guiBuilder(); } }
Programı derleyip çalıştırabilmek için herhangi bir metin editöründe, “MerhabaSwing.java” adında bir dosya oluşturup yukarıdaki kodu bu dosyaya yazın. Dosya adının MerhabaSwing olduğundan emin olun, yoksa programı derleyemezsiniz.
Daha sonra komut satırı ya da terminal programını açıp, “MerhabaSwing.java” dosyasının bulunduğu klasöre gelerek
javac MerhabaSwing.java
ve arkasından
java MerhabaSwing
komutlarını sırasıyla verin. Eğer aşağıdaki gibi bir çıktı alıp, programınızı çalıştırabildiyseniz ilk grafiksel GUI Java programınızı yazıp çalıştırmışsınız demektir.

Swing Olaylar
Bu noktada bahsetmemiz gereken birşey var. Java Swing uygulamaları event-driven (olay güdümlü) programlardır. Olay dediğimiz şey aslında birer nesneden ibaretdir.
Swing ile geliştirdiğiniz her ciddi uygulama olaylar (events) üretir ve bu olaylara tepki verir. Örneğin, Swing ile geliştirdiğiniz bir GUI programında bir button eklediğinizi varsayalım ve bu buttona tıkladığınızda ana penceredeki etiket (Label) içerisindeki yazının değiştiğini varsayalım. İşte bu gibi becerileri, uygulamamıza kazandırabilmemiz için olaylar üretip bu olayları gerekli nesnelere yönlendirip işlememiz gerekmektedir. Olay yönetimine bu yazıda değinmeyeceğim fakat bu noktayı bilmek önemli.
Tüm bu olay mekanizması nedeni ile, olay üreten bir uygulama hazırlarken olayların ana kanaldan (thread) iletilmesi bazı nedenlerden dolayı sakıncalı görülmüştür. Bu yüzden olay iletimini event-dispatching (olay iletim kanalı) kanalı aracılığı ile göndermemiz gerekir. Bu yüzden yukarıdaki kodu aslında şu şekilde yazmak daha doğru.
public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { public void run() { new MerhabaSwing().guiBuilder(); } }); }
İlk yazdığımız Swing uygulamasında herhangi bir event üretilmediği için, yukarıdaki kodu yazmak gereksiz. Ancak, Swing uygulamaları geliştireceksiniz, mutlaka olaylar üretip bu olayları işleyeceğinizden Swing uygulamalarınızı yukarıdaki şekilde oluşturmaya dikkat etmelisiniz.
İlgili Yazılar:
- Java Swing Temelleri
- Swing JFileChooser ile Dosya Bilgilerini Almak
- Java Foundation Class (JFC) ve Swing
RSS Feed
24 Nisan 2010
fatih
Konu
Etiketler: 
Merhaba, saatlerdir çözemediğim bir sorun var. komut satrırında javac swingmerhaba.java yazdığımda swing kütüphaneleri ile ilgili kod satırlarında hata veriyor.Sorun sizce ne olabilir.
Ayrıca anlamadığım birşey daha var sınıf içerisinde o sınıfın metodlarını kullanırken nesnesini yaratmaya gerek var mıdır ?
public static void main(String[] args)
{
MerhabaSwing merhabaSwing = new MerhabaSwing();
merhabaSwing.guiBuilder();
}
netbeans üzerinde denedim ve artık kendim de yapabiliyorum, teşekkürler
netbeans üzerinde nasıl yapabiliriz acaba çözemedim bir türlü?
@ali: ortam değişkenleri kısmında path değişkenini ve JAVA_HOME değişkenlerini doğru tanımladınmı?
path değeri c:\program files\java\jdk1.6.0_25\bin şeklinde olacak.
JAVA_HOME ise c:\program files\java\jdk1.6.0_25
——-
@ali: bildiğim kadarıyla sadece abstract classlardaki metodları kullanmak için nesne oluşturmaya gerek olmuyordu.
——-
@barış: netbeanste yeni bir proje aç kodları kopyala ve yapıştır. sanırım jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); satırı hata veriyor o kadar, bu satırı silersen de sorunsuzca çalışması lazım netbeans ile.
Kolay gelsin.