Boş vakit buldukça sıradaki konularla devam etmeye çalışacağım. |
derslere devam edecekmisiniz acaba yada siteniz falan var mı benim bir ödevim var da yardım gerekli |
takip. derslerin devamını bekliyoruz hocam. |
Yoğunluktan dolayı uzunca bir ara vermek zorunda kaldım fakat derslerin devamı gelecektir.Kafamdaki plana göre konuları tamamlayacağım. |
Geliştirme ortamınız hakkında bilgi verebilir misiniz? işletim sisteminiz kullandığınız IDE java version 3rd party olarak temin edilmesi gereken jar vs gibi kaynaklar. |
Windows 8 veya ubuntu kullanıyorum. IDE olarak Eclipse java 7 update 9 (build 1.7.0_09) sürümü bu konu ile ilgili standart kütüphaneler dışında extra bir kaynağa ihtiyaç yok |
hocam benim acil bir kaç sorum varda size mail yoluyla falan ulaşmam mümkün mü acaba ? |
Konu kalabalığında fark etmemişim, çok güzel anlatmışsın ellerine sağlık![]() |
Bir de paintComponent ve super.paintComponent konuları hakkında bilgi verebilir misiniz ? |
Dilim döndüğünce açıklamaya çalıştım. İlk mesaj üzerinden güncellendi. Kolay gelsin. |
Eline sağlık hocam çok güzel olmuş ![]() |
Hocam bu Swig, AWT ye göre daha mı güzel/sanatsal görünür yoksa aynı şeyi awt ile de yapabilir miyiz? |
Her iki kütüphane de aynı amaç için yazılmıştır fakat çalışma şekilleri farklı. AWT, işletim sisteminin sağladığı API'leri kullanırken swing kendi çizim prosedürlerini kullanır. Bu nedenle awt, farklı sistemlerde farklı sonuçlar verebilir. Tutarsız, hatalı programlara neden olabilir ve bu durum java'nın platformdan bağımsız kalma ilkesine ters düşer. Swing gibi yeni bir kütüphaneye bu nedenle ihtiyaç duyulmuştur. Yani görsel estetik kaygısı ile swing'e geçiş gibi bir durum söz konusu değil. |
Bence gui öğrenmek isteyenlere çok faydalı bir döküman olmuş. Emeğiniz için ve bunları paylaştığınız için teşekkürü bir borç bilirim. ![]() |
Arkadaşlar merak ettiğim bir konu var. C#'ta forma ve form kontrollerine görsellik katmak için (Ör. border-radius, gradient-background) WPF kullanılması gerek. Java'da bu durum nasıl? |
Merhaba.
Java programlama dili üzerinden bir program için grafiksel kullanıcı arayüzü nasıl oluşturulur , swing kütüphanesi ile nasıl çalışılır hakkında kendi notlarımdan ve kısa çalışmalarımdan derlediğim dersler hazırlamaya çalışacağım.Konular belirli başlıklar altında ilerleyecek ve ilk mesaj üzerinden güncellenecektir.Dersler grafiksel kullanıcı arayüzü ögeleri hakkında bilgi sağlayacaktır.Bunun dışında programlama temelleri veya Java diline dair gramerik konuları içermeyecektir.Bilgi paylaşımı amacıyla boş vakitlerimi buraya ayırmaya çalışacağım.Tecrübe sahibi arkadaşların da katkısı ile zengin bir döküman ortaya çıkarabileceğimizi düşünüyorum.İyi çalışmalar.
[27.10.2012]
1. DERS : GUI ve JAVA
2. DERS : SWING MİMARİSİ
3. DERS : PENCERE OLUŞTURMA
4. DERS : PENCEREYE PANEL EKLEME
5. DERS : HAZIR GİRİŞ-ÇIKIŞ KUTULARI
6. DERS : PENCEREYE BUTON EKLEME
7. DERS : BUTON GRUPLARI
8. DERS : OLAY GÜDÜMLÜ PROGRAMLAMA
9. DERS : MENULER
1. DERS : GUI ve JAVA [27.10.2012]
GUI nedir ?
GUI (Graphical User Interface) , yani grafiksel kullanıcı arayüzü , program ile kullanıcı arasında görsel,sezgisel,kullanıcı dostu (user friendly) ,kolay ve pratik bir ilişki kuran , kullanıcıyı bilgisayar hakkında teknik bilgi sahibi olma zorunluluğundan kurtaran, bilgi giriş/çıkışının sağlandığı arayüze denir.Her işletim sistemi kullanıcısına en iyisini sunabilmek için hem görsel açıdan zevk sahibi , hem de kullanıcı dostu bir arayüz sunmak ister.Bir programcının , ürettiği programın iyi bir arayüze sahip olabilmesi için GUI programlamaya hakim olması gerekmektedir.Programı yazdığınız dil işletim sisteminin çekirdeğinde saklı GUI sınıflarını-API'leri kullanabilir veya daha profesyonel çalışarak kendi çizim prosedürlerinizi kullanabilir,kendi arayüz sisteminizi oluşturabilirsiniz.
Bir GUI örneği:
< Resime gitmek için tıklayın >
Java'da GUI
Java dili GUI için AWT (Abstract Window Toolkit) ve SWING kütüphanelerini kullanır.Java'da arayüz ihtiyacı için oluşturulmuş ilk kütüphane AWT 'dir.Fakat AWT'nin bazı yetersizliklerinden dolayı yeni bir bileşen setine ihtiyaç duyulmuştur.Ortaya çıkan bu yeni bileşen seti SWING 'tir. AWT'nin geliştirilmesinin durdurulmasının ana sebebi Java 'nın temel politikası olan "Bir kere yaz , her yerde çalıştır" mantığına uygun olmaması idi.Java dilinde yazılan uygulamalar derlenmeden önce bir interpreter ile .class uzantılı dosyalara çevrilir.Bu dosya bir arakoddur ve her sistemde aynı sonucu üretecek biçimde çalışması amaçlanmıştır.Yani aynı kodu windows işletim sisteminde de linux işletim sisteminde de çalıştırabilirsiniz.Fakat AWT ile yazılan programlar farklı sistemlerde tutarsız sonuçlara sebep oluyor hatta bazı durumlarda çalışma hatalarına kadar uzanıyordu.Swing kütüphanesi hem taşınabilir uygulamalar yazmak için hemde GUI 'de gerekli tüm araçları sağlaması için gerekli tüm bileşenlere sahip devasa boyutta bir pakettir.
Aslında swing kütüphanesi sıfırdan oluşturulmuş değildir.AWT üzerine kurulmuş bir kütüphanedir ve awt'ye ait bir çok sınıfı halen kullanmaktadır.AWT'nin eksik yönlerini kapatır ve artılarını da kendine katar.Örneğin olay yakalama mekanizması için java'da halen awt.event paketleri kullanılır.Java 'nın 1.2 versiyonuyla birlikte kullanılmaya başlanana swing'te her widget , platforma bağımlı olarak değil , swing'e bağlı olarak çalışır.
AWT işletim sistemine ait API leri kullanmasına karşın swing tamamen java tarafından render edilen arayüzü kullanır.Bu nedenle her sistemde aynı sonucu görebilirsiniz.Tabiki bu durum uygulamanın nasıl görüneceğine karar veremeyeceğiniz manasına gelmiyor.Look and Feel konusuna gelindiğinde bu konuya daha ayrıntılı olarak değinilecektir.
2. DERS : SWING MİMARİSİ [27.10.2012]
Java , program geliştirmede MVC Yapısını (Model-View-Controller) kullanır.Yani programın hesap-kitap-işlem kısmına dair model kısmı ve GUI'ye dair view kısmı birbirinden ayrılmıştır.Bu yaklaşım program geliştirilmesinde programcılara büyük kolaylık sağlamaktadır.Controller tarafında ise bu iki birim birbiri ile entegre olarak çalıştırılır.Fakat javada model ile controller arasındaki sınır kesin olarak birbirinden ayrılmaz.
Swing mimarisi iki temel üzerine kuruludur :
1. Bileşenler ( Components )
2. Konteynerlar ( Containers )
Bileşen seti gerekli tüm görsel araçları içerir.Yazı,resim içerikleri için labellar , yazı kutuları , kaydırma çubukları , menüler , pencere bileşenleri vs. tüm bileşenler component sınıfından türemiştir.
Konteyner ise bileşenlerin üzerinde tutulacağı veri modelleridir.Tüm bileşenler bir konteyner üzerinde tutulmak zorundadır.Bu nedenle her GUI uygulaması en az bir konteynera sahip olmak zorundadır.
< Resime gitmek için tıklayın >< Resime gitmek için tıklayın >< Resime gitmek için tıklayın >
Java'da konteynarlar içiçe tanımlanabilir.En dıştaki konteyner tüm bileşen ve iç konteynerları tutan top-level konteynerlardır.Bunun altında bulunanlar ise kapsayıcı konteyner olarak anılır.
Tüm bileşenlere ait sınıf diyagramı aşağıdadır.
< Resime gitmek için tıklayın >
Daha ayrıntılı bir diyagram :
< Resime gitmek için tıklayın >
3. DERS : PENCERE OLUŞTURMA : JFrame [27.10.2012]
Java swing kütüphanesinde bir pencere oluşturmak için kullanacağımız ana sınıf JFrame'dir.
Genel tasarım tarzı bir frame - üzerine istenilen sayıda panel - ve paneller üzerine gerekli bileşenler eklenerek yapılır.
Öncelikle kısa bir kod veriyorum .Altında satır satır açıklaması olacak.
Oluşturulan sınıf JFrame sınıfından türetilmiş olduğu için bir frame 'e ait tüm özellik ve metodları miras alır.Böylece kurucu metod çağrıldığında yeni bir penceremiz olur.
setTitle(String) metodu pencere başlığını ,
setSize(int,int) metodu pencere boyutunu ,
setLayout(Layout) metodu pencere yerleşim düzenini ayarlar.
(layout konusuna ayrıntılı olarak değinilecektir)
setVisible(boolean) true parametresi ile pencereyi görünür kılar.
setDefaultCloseOperation() metodu ise varsayılan pencere kapanış davranışını ayarlar.
JFrame sınıfı daha birçok metoda sahiptir.Bu metodlar kurucu tarafından varsayılan parametrelerle çağırılır.Örneğin setVisible() metodunun varsayılanı false 'dır.Yani biz true olarak değiştirmezsek sınıf üretilse dahi pencere görünmez.Başka bir örnek ise setLocation() metodu olarak verebilirim.Biz bu metodu çağırmadığımız halde penceremizin varsayılan başlangıç koordinatları (0,0) dır.
Şimdi yukarıdaki örneğin daha ayrıntılı bir analizini yapalım.FrameDemo sınıfımız JFrame'den , JFrame'in ise Container sınıfından türediğini biliyoruz.Bu nedenle ayrıyeten bir Container nesnesi üretme ihtiyacı duymadık.Pencereye bir bileşen eklemek için kod aşağıdaki biçimde de tasarlanabilirdi.
Yukarıdaki kod pencereye bir buton nasıl eklenir sorusunun da cevabı. Fakat değinmek istediğim asıl nokta butonun eklendiği konteyner.
this.add() metodu pencereye bir bileşen eklemek için kullanılır.Object tipinde bir parametre alır.Daha ayrıntılı dökümantasyon için docs.oracle sitesini ziyaret edebilirisiniz.
Bu metod ile aslında pencerenin top-level konteyner'ına bir bileşen eklenir.Bu konteyner'ın referansına erişmek için getDefaultContentPane() metodu kullanılabilir.
Sınıfı JFrame sınıfından extend etmek zorunda değilsiniz.JFrame sınıfından bir nesne üreterek de pencerenizi oluşturabilirsiniz.
Örnek :
Artık this operatörünü kullanmadığımıza dikkat edin.
Butonlar ayrı bir konu olarak incelenecektir.Ayrıca setLayout() metoduna null parametresini verdik.Yani herhangi bir yerleşim düzeni kullanmak istemediğimizi,bileşenlerin konumlandırmasını kendimizin yapacağını bildirdik.Layout konusuna daha sonra değinilecektir.
4. DERS : PENCEREYE PANEL EKLEME : JPanel [28.10.2012]
Paneller pencere üzerinde kendine ait, bağımsız konteynera sahip , ayrılmış alanlardır.Varsayılan görünümde pencere içinde panelleri ayırt edemezsiniz.Fakat istenilirse ayrı bir arkaplan rengi kullanılabilir veya bir border ile çevrelenebilir. Genellikle bir pencerede farklı amaçlarla kullanılacak alanları birbirinden ayırmak ve herbirine farklı layout düzenleri kullanılmak istenildiğinde kullanılır.
Java'da panel oluşturmak için JPanel sınıfı kullanılır.
Örnek :
Verdiğim örnekte pencere üzerine 5 adet panel ekledik.Bu panelleri pencereyi alt-üst-sağ-sol ve orta şeklinde alanlara ayırmak için kullandık.
setBackground() metodu panelin arkaplan rengini ayarlamada kullanılır.
Son olarak eklediğimiz bir buton var ve orta panele bir border eklediğimize dikkat edin.
Dikkatinizi çekmek istediğim bir diğer nokta eklenen buton için verdiğimiz koordinat değerleri.Bu koordinatlar pencerenin başlangıç noktasına göre değil eklemenin yapıldığı ekran bileşeninin başlangıç noktasına göre verilir.
Ekran görüntüsü :
< Resime gitmek için tıklayın >
5. DERS : HAZIR GİRİŞ-ÇIKIŞ KUTULARI : JOptionPane [28.10.2012]
Program yazarken çoğu yerde basit girdi işlemlerinde , bir mesaj görüntülemek istediğimizde veya bir uyarı vermek istediğimizde bir mesaj kutusuna ihtiyaç duyarız.Bu işi sıfırdan bir form tasarlayarak kendimiz de yapabiliriz.Fakat java'da JOptionPane sınıfı bütün bu basit işlemler için gerekli işlevlere sahip nesneleri içerir.
Örneğin bir sudoku uygulaması hazırladığınızı farzedin.Sudoku tablosundaki kutulardan birine tıklayarak sayı girişi yapmak istiyorsunuz.Sudoku bulmacası kurallarına göre bu sayı 1-9 arasında bulunmalı ve satır/sütun ve 9'lu kümede aynı sayıdan bulunmamalı.Bu kontrolü yaptıktan sonra giriş kural ihlali içeriyorsa ekrana "Sayı 1-9 arasında bulunmalıdır!" gibi bir uyarı vermesi gerekir.
Örnek :
Örnekte ilk metod JOptionPane sınıfının showInputDialog() metodudur.Klavyeden bir String okumak için kullanılır.String tipinde bir argüman alır.Bu argüman ekranda görüntülenecek mesajdır.Ekran görüntüsü:
< Resime gitmek için tıklayın >
İkinci metod showMessageDialog() metodu.
Bu metod ekrana bir mesaj yada bir uyarı görüntülemede kullanılır.
Her iki metodunda farklı parametrelere sahip birden çok overload edilmiş çeşidi vardır.Örneğin showMessageDialog() metodunun 1. parametresi Component tipindedir ve parentComponent olarak geçer.Yani mesaj kutusunun ait olduğu formu işaret eder.Bu parametreye göre mesaj kutusu konumlandırılır ve ait olduğu formu etkiler.Eğer null olarak verilmiş ise çağırıldığı form üzerinden işlenir.
2. parametre mesaj metnidir.
3. parametre kutu başlığıdır.
4. parametre ise mesaj tipidir.Bu parametreye göre mesaj kutusuna ilgili ikon eklenir.
4.parametre için :
question
< Resime gitmek için tıklayın >< Resime gitmek için tıklayın >
information
< Resime gitmek için tıklayın >< Resime gitmek için tıklayın >
warning
< Resime gitmek için tıklayın >< Resime gitmek için tıklayın >
error
< Resime gitmek için tıklayın >< Resime gitmek için tıklayın >
Daha ayrıntılı bilgi için :http://docs.oracle.com/javase/tutorial/uiswing/components/dialog.html
6. DERS : PENCEREYE BUTON EKLEME : JButton [28.10.2012]
GUI programlamanın en çok kullanılan bileşenlerinden biri de butonlardır. Kullanımı oldukça basittir.Fakat form üzerine eklediğimiz butonu kontrol edebilmemiz için GUI programlamanın en temel konularından biri olan olay güdümlü programlama hakkında bilgi sahibi olmanız gerekmektedir.Bu nedenle butonun pencereye eklenmesi ,görünümü vs. konuları verdikten sonra ayrı bir başlık olarak olay mekanizmasını daha ileride yazmayı uygun gördüm.Çünkü her bileşeni ilgilendiren bir konu.
Java'da 4 farklı buton türü bulunur.
1.JButton : Basit buton
2.JRadioButton : Birden çok seçenek içerisinden birini seçmek gerektiğinde kullanılan buton grubu.
3.JCheckBox : Birden çok seçenek içerisinden birkaçını seçmek (işaretlemek) gerektiğinde kullanılan buton grubu.
4.ToggleButton : Açık veya kapalı durumda olan, anahtar işlevi gören bir buton türü.Boolean (true/false) tipinde bir değer saklar.
3'ünü birden gösteren bir örnek : (e-bergi'den alınmıştır)
< Resime gitmek için tıklayın >
Toggle buton örneği:
< Resime gitmek için tıklayın >
Bir örnek kod:
Verdiğim örnekte resim ve metni bir arada bulunduran bir buton oluşturuyoruz.İkonu oluşturduğumuz createImageIcon() metoduyla aldık.Buton üzerinde yazının konumunu ayarladık ve extra bir kaç özellik koyduk.
Birincisi setMnemonic() metodu.Bu metod klavyedeki harflere buton için kısayol atanmasını sağlıyor.Buna Dosya Düzen Görünüm vs. menülerde de rastlamışsınızdır.İlgili karakter altı çizili olarak vurgu yapılır.
İkincisi de setToolTipText() metodu. ToolTipText 'ler fare imlecini bileşen üzerine getirdiğimizde bir balon içerisinde küçük bir açıklama metni görüntülenmesini sağlar.
Diğer buton tiplerine dair örnekler verilecek.Butonları kullanabilmek için gerekli olan event konusuna diğer bileşenler açıklandıktan sonra geleceğim.
7. DERS : BUTON GRUPLARI : JRadioButton , JCheckBox [06.11.2012]
Merhaba;
Bu derste bir diğer buton türü olan radioButton ve CheckBox bileşenlerine değineceğiz.Bu butonlardan radioButton birden çok seçenek içerisinde birini seçmek,işaretlemek için ; checkBox ise yine birden fazla seçenek içerisinden bir veya birkaçını işaretlemek için kullanılır.İşlemler buton grubunun tamamını ilgilendirdiğinden aralarındaki ilişkiyi kurmak için bir ButtonGroup nesnesi ile beraber kullanılırlar.
Örnek;
ekran görüntüsü :
< Resime gitmek için tıklayın >
Olay basit.RadioButon'ları kullanmak için öncelikle bir ButtonGroup oluşturun ve butonları bu grup içine ekleyin.Butonlardan birini seçtiğinizde gruptaki diğer butonların seçimi kaldırılacaktır.
Butonları seçmek için veya seçimi kaldırmak için : setSelected(Boolean) metodunu kullanabilirsiniz.
Seçimi kontrol etmek (yani kutucuğun işaretlenip işaretlenmediğini anlamak) için : isSelected() metodunu kullanabilirsiniz.
Daha ayrıntılı bilgi için:
http://journals.ecs.soton.ac.uk/java/tutorial/post1.0/ui/radiobutton.html
http://docs.oracle.com/javase/6/docs/api/javax/swing/JRadioButton.html
8. DERS : OLAY GÜDÜMLÜ PROGRAMLAMA : EVENTS [30.12.2012]
GUI programlamanın en önemli kısımlarından birisi olan olaylar konusuna geldik.Şimdiye kadar anlattığım konular yalnızca GUI bileşenlerinin ekranda gösterimi ile ilgiliydi. Bu bileşenleri nasıl kullanacağınızı anlayabilmek için olay mekanizmasının iyi kavranması gerekiyor.
Olay nedir ?
Bilgisayarınızda yaptığınız her bir etkileşim , her işlem , farenize her tıklamanız , fareyi sürüklemeniz , klavyenizin bir tuşuna basmanız vs. her eylem programlamada olay (event) olarak tanımlanır.
Bilgisayar (programınız) olayları işleyerek kullanıcıya cevap verir.Bu nedenle oluşturduğunuz GUI bileşenleri , doğru olay mekanizması kurulmadığı sürece yalnızca görüntüden ibarettir.Olay mekanizmasının çalışma prensibini kısaca açıklayacak olursak :
- Programcı oluşturduğu bileşenlere birer dinleyici atar.
- Dinleyici (Listener) denilen özel thread'ler program boyunca atamalarının yapıldığı nesne üzerinde, ilgili oldukları olayların oluşup oluşmadığını denetler.Olay meydana geldiğinde dinleyici tetiklenmiş olur.
- Tetiklenen dinleyici , olay işleyicisi (handler) denilen bir metodu çalıştırır.Böylece olaya karşılık gerekli işlemler dizisi başlatılmış olunur.
Yani bir olay 4 temel parça ile işleniyor diyebiliriz.
1. Olay nesnesi (Event object)
2. Olay kaynağı (Event source)
3. Olay dinleyicisi (Event Listener)
4. Olay işleyicisi (Event Handler)
Java'da olay mekanizması için gerekli metodlar AWT kütüphanesi içinde bulunur.Aşağıdaki diyagramda olay sınıfları ile diğer swing sınıfları arasındaki ilişkileri görebilirsiniz.
< Resime gitmek için tıklayın >
Bir örnek üzerinden devam edelim :
Yukarıdaki örnekte bir buton oluşturduk ve tıklandığında ekrana "Merhaba !" mesajının çıkmasını sağladık.
Olay nesnemiz e isimli ActionEvent nesnesi.Olay kaynağımız ise tabiki buton'un kendisi.Olay kaynağı bileşene ihtiyaç duyarsanız olay nesnesi üzerinden getSource() metodunu kullanarak çağırabilirsiniz.Örneğin bu program parçası için :
(JButton) e.getSource();
komutu ile butonumuzun referansına erişebiliriz.
addActionListener() metodu ile butonumuza bir dinleyici atadık.Bu komut sayesinde programın arkaplanında sürekli u dinleyici buton için tetikte bekleyecek ve olay oluştuğunda yani butona tıklandığında devreye girerek olay işleyicisi metodu çalıştıracak.Olay şileyici metodumuz ise bu programcıkta actionPerformed() metodu.
Yani size düşen tek iş oluşturduğunuz nesneye bir dinleyici atamak ve bu dinleyici sınıfın içindeki implement edilmemiş abstract handler metodların gövdelerini yazmak.Bu örnekte listener'ı argüman olarak metod parantezleri içinde yazdık .Daha sade ve anlaşılır olarak isterseniz listener sınıfını ayrıca yazabilirsiniz.(Listener'lardan sınıf olarak bahsetsemde bu ağız alışkanlığında ileri geliyor. Listener'lar aslında birer interface 'dir. )
Gerekli listener arayüzünü yazdığınız sınıfa implement edip bileşenlerinize listener olarak bu sınıfları atayabilirsiniz. Örnekten daha iyi anlaşılacaktır.
Dinleyici sınıfımızı yukarıdaki gibi yazdıktan sonra geriye bu dinleyiciyi ilgili nesneye atamak kalıyor :
Hepsi bu kadar.
Tabiki önemli bir noktada hangi işte hangi interface gerekli bilinmelidir.Örnekte kullandığımız ActionListener , daha çok butonlarla kullanılan bir dinleyici.
Fare ile ilgili olaylarda MouseListener , MouseMotionListener vs.
Klavye ile ilgili olaylarda KeyEvent ..vs.
Pencere olaylarında FocusEvent ..vs. çeşitli dinleyici arayğzleri kullanılmaktadır.
Daha ayrıntılı bilgi için :http://docs.oracle.com/javase/tutorial/uiswing/events/index.html
Hangi listener'ın hangi bileşene hizmet verdiği ile ilgili liste :http://docs.oracle.com/javase/tutorial/uiswing/events/eventsandcomponents.html
9. DERS : MENULER : JMenu , JMenuBar , JMenuItem [01.01.2013]
Bu derste programınıza nasıl menü çubuğu ekleyebileceğinizi anlatacağım.Menü çubuğu hemen hemen tüm masaüstü işletim sistemleri için bir klasiktir.JFrame sınıfı içerisinde de standart olarak tanımlı olan fakat varsayılan durumu null olarak bekleyen bir menuBar vardır.
Öncelikle tanımlarını aktarayım :
- MenuBar : (Swing'te JMenuBar olarak geçer) Dosya,Düzen,Görünüm vs. elemanların tutulduğu çubuk.
- Menu : (Swing'te JMenu olarak geçer) Dosya , Düzen , Görünüm vs. elemanlarının her birisi.
- MenuItem : (Swing'te JMenuItem olarak geçer) Menu'lere tıklandığında açılan alt menu elemanlarına denir.
< Resime gitmek için tıklayın >
Örnek üzerinde görelim:
Verdiğim örnekte menuEkle() metodunu inceleyelim.JFrame sınıfında varsayılan tanımlı bir menuBar nesnesinin olduğunu söylemiştim.Yeni bir JMenuBar nesnesi oluştuduktan sonra setJMenuBar() metodu ile penceremizin menuBar'ının olşturduğumuz menuBar olmasını sağlıyoruz.MenuBar nesnelerinin kendilerine ait birer konteyner'ı bulunur.Yani add() metodu içerirler.Bumetodu kullanarak Menu'lerimizi menuBar üzerine ekliyoruz.Eklediğimiz sıra ile menü çubuğuna yerleşirler.
setMnemonic() metodu bir char değişken alır ve Menu elemanlarının klavyenin hangi tuşuna atamasının yapılacağını belirler.Bu karakter altı çizili olarak belirtilir.
MenuItem nesnelerini ise oluşturduktan sonra menuler içine yine add() metodunu kullanarak ekliyoruz.
MenuItem elemanlarını gruplamak için aralarına çizgi çekebilirsiniz. Bunun için addSeperator() metodu kullanılır.
Ayrıca menu elemanlarının kullanımı da butonlardan farksızdır.ActionListener arayuzlerini implement ederek istediğiniz handler'ı ekleyebilirsiniz.
Ben örnekte programda çıkış için bir "Emin misiniz ?" kodu yazdım.Yani çıkış isimli menuItem'a tıklandığında ekrana
< Resime gitmek için tıklayın >
şeklinde bir uyarı mesajı geliyor.
10. DERS : Labels - Etiketler : JLabel [23.06.2013]
GUI bileşenleri içerisinde en sık kullanılan bileşenlerden biri de label, yani etiketlerdir. Etiket bir metin veya resmin GUI üzerine basılmasında kullanılır. Görsellik amacıyla kullanıldığı gibi, buton olarak da kullanılabilir. Tek fark JButton sınıfında listener olarak ActionListener kullanırken, JLabel için MouseListener kullanılır. Swing'te label için kullanılan sınıf JLabel sınıfıdır.
Örnek verelim;
< Resime gitmek için tıklayın >
Bu örnekte gördüğünüz üzere label, hem resim hem metin görüntüleme amacıyla kullanılabilir. Fakat görüntülenen metinler de aynen resimler gibi label üzerine "çizilir". Yani metnin string özelliği kalmaz. Bu nedenle TextField gibi düzenlenebilir metin kutusu amacıyla kullanılmaz.
Buton yapımı ve mouse listener sınıflarının kullanımı ;
EK 1 : paint() , paintComponent() metodları [18.06.2013]
Arkadaşlar, java 'da bir swing bileşeninin render metodlarını override ederek, farklı GUI bileşenleri tasarlamamız mümkündür. (*Override : Nesne yönelimli programlamanın güçlü bir özelliğidir. Bir metodu, işlevlerini kaybetmeden, geliştirebilir, tekrar yazarak veya eklemeler yaparak amaçlarımıza uygun forma sokabiliriz.) Java dilinde bu işlemi awt kütüphanesinden gelen paint() metodlarını override ederek yapabiliriz.
Java dilinde Swing'e ait bir widget veya herhangi bir arayüz bileşeni render edilirken kullanılan UI (look and feel) ye ait paint() metodu çağrılır. Pencere ve bileşenlerin ekrana çizimini sağlayan metod paint() metodudur. Doğrudan doğruya çağrılamaz. Gerekli durumlarda çizimi tetiklemek için repaint() metodu kullanılmalıdır. paintComponent(), paintBorder() ve paintChildren() .. alt metodlar ise, ( bileşene göre farklılık gösterebilir ) paint metodu tarafından kullanılır. Yani kapsayıcı bir metoddur. Bileşen gövdesi paintComponent() metodu ile render edilir.
paint() metodu Graphics sınıfından üretilmiş bir nesneyi parametre olarak kullanır. Bu graphics nesnesini, çizimi yapan fırça olarak düşünebilirsiniz. Bütün çizim metodları (drawLine(), drawString() vs.) bu nesne yolu ile çağrılır.
Genel kullanım :
super işleci, temel sınıfa (parent-base class) ait override edilmemiş metodu çağırır. Türetilmiş bir sınıf ile çalışıyorsanız gerekli olabilir.
Ne amaçla kullanılabilir ?
Örnekler;
< Resime gitmek için tıklayın >
Bu örnekte grafik çizimi için JPanel sınıfından türetilmiş Grafik sınıfı kullanılmış. Grafiğin çizimi ise paintComponent() metodu override edilerek sağlanıyor.
< Resime gitmek için tıklayın >
Bu örnekte ise lojik devre elemanlarını, kapıları örnek verebiliriz. Tümü Swing'e ait bileşenlerden üretilmiştir. Çizim metodları değiştirilerek yeni sınıflar ve yeni GUI bileşenleri oluşturulmuştur.
DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.
Üye Ol Şimdi DeğilÜye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.
< Bu mesaj bu kişi tarafından değiştirildi AERO. -- 23 Haziran 2013; 20:13:08 >