Bölüm 22. Java GUI Kütüphanesi SWT GUI Kütüphanesi SWING GUI Kütüphanesi İlk Swing Programı

Benzer belgeler
MAT214 BİLGİSAYAR PROGRAMLAMA II DERSİ Ders 12: Grafik Kullanıcı Arayüzü (Graphical User Interface-GUI)

Jlist nesnelerin listesini gösteren bir bileşendir. Kullanıcının bir veya birden fazla seçim yapabilmesini sağlar.

Java ile Nesneye Yönelik Programlama (Object Oriented Programming)

Görsel Programlama DERS 07. Görsel Programlama - Ders07/ 1

MAT214 BİLGİSAYAR PROGRAMLAMA II DERSİ Ders 18: Formatlı Grafik Kullanıcı Arayüzü Oluşturma

Java da. ve AWT ve SWING Kütüphaneleri. BBS-515 Nesneye Yönelik Programlama. Ders #8 (9 Aralık 2009)

JComponent in alt sınıfları

YAZILIM İSTERLERİ ÇÖZÜMLENMESİ

Görsel Programlama DERS 08. Görsel Programlama - Ders08/ 1

MOBİL UYGULAMA GELİŞTİRME

Burak Kıymaz JAVA FX

Proje 1. Arayüz Tasarımı

Upgrading Internet Technology skills of Information and Communication Technologies (ICT) Professionals

Progress Barlı, FTP Dosya Upload Appleti

Javada Veri Tabanı İşlemleri

Bilgisayar Teknolojileri Bölümü Bilgisayar Programcılığı Programı. Öğr. Gör. Cansu AYVAZ GÜVEN

Android Ders Notları

Görsel Programlama (Visual Programming)

Java da Soyutlama ( Abstraction ) ve Çok-biçimlilik ( Polymorphism )

HESAP MAKİNASI YAPIMI

MVP ve Mediator ile Loose Coupled, Modüler UI Geliştirme

1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız.

Applet Form Örnekleri2

Java C.Thomas Wu 2004b kitabından Türkçeleştirilerek ve örneklendirilerek hazırlanmıştır.

ORNEK 1: Tarım Makinaları ve Teknolojileri Mühendisliği başlıklı çerçeve üretme.

X3D ve Xj3D. Tahir Emre KALAYCI Güz Dönemi İleri Bilgisayar Grafikleri Dersi

HSancak Nesne Tabanlı Programlama I Ders Notları

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 10. Yrd.Doç.Dr.Hacer Karacan

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

JavaFX Temelleri (1)

Arraylist. Özet. Giriş

MOBİL UYGULAMA GELİŞTİRME

Yazılım Nedir? 2. Yazılımın Tarihçesi 3. Yazılım Grupları 4 Sistem Yazılımları 4 Kullanıcı Yazılımları 5. Yazılımın Önemi 6

Bilgisayar Mühendisliği Bölümü,Mehmet Akif Ersoy Üniversitesi,Burdur

DIV KAVRAMI <style> position: absolute

Görsel Programlama (Visual Programming) 2.Hafta

Temel JavaFX Bileşenleri (1) Labeled, Label, Button, ToggleButton, RadioButton, ToggleGroup, CheckBox, ComboBox, Slider, ListView ve SelectionModel

Görsel Programlama DERS 02. Görsel Programlama - Ders02/ 1

Arayüz soyut metotların oluşturduğu bir koleksyondur. Bir sınıf arayüzü çalıştırırken arayüzün sahip olduğu soyut metotları da miras alır.

HSancak Nesne Tabanlı Programlama I Ders Notları

Web Formlar ve Sayfalar Arasında Bilgi Gönderme. BATML İnternet Programcılığı 1

Çizgilerin kalınlığını Dolguları Temel dönüşüm işlemlerini Bileşik nesne oluşturma işlemlerini kontrol etmemizi sağlar.

BİL-141 Bilgisayar Programlama I (Java)

Yeni bir proje açarken File New - Web Site diyoruz. Gelen ekranda Visual Basic veya C# seçilebilir. Biz ders kapsamında C# programlama dilini seçtik.

BİL BİLGİSAYAR PROGRAMLAMA (JAVA)

Response : Sunucunun istemciye veri yollamasını

BM-209 Nesne Yönelimli Programlama. Yrd. Doç. Dr. İbrahim Alper Doğru Gazi Üniversitesi Teknoloji Fakültesi Bilgisayar Mühendisliği Bölümü

Görsel Programlama DERS 03. Görsel Programlama - Ders03/ 1

İnternet Üzerinden Sınav Yapabilen Applet Uygulaması

JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ

APPLET KAVRAMI ve GRAFİKSEL ÇİZİM UYGULAMLARI

12 TBT / WEB TASARIM ve PROGRAMLAMA ( Not 3 )

Java Applet Üzerine Form Nesnelerini Eklemek

Firefox Eklentisi FireShot

HBYS üzerinden PACS a erişim ve kullanım açıklaması.

ANA SINIF TÜRETİLEN BİRİNCİ SINIF TÜRETİLEN İKİNCİ SINIF

Java Programlamaya Giriş

OKUL HABER EKLEME MODÜLÜ TANITIM DOSYASI. Okul haberlerinizi ilçemiz web sitesinde yayınlayabilmek için aşağıdaki adımları uygulamanız gerekmektedir.

2.Eclipse açıldıktan sonra Workspace alanı seçilmesi gerekir. Workspace alanı projelerinizin fiziksel olarak bulunduğu kısımdır.

İNÖNÜ ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ 2. SINIF 1. DÖNEM VERİ YAPILARI DERSİ LABORATUAR ÖDEVİ

YZM 2105 Nesneye Yönelik Programlama

Javada Veri Tabanı Kullanımı

UYGULAMALAR. İkinci liste kutusu (List 2) Birinci liste Kutusu (List 1) Metin Kutusu

/*Aşağıda ki kodları doğru şekilde anlar ve kullanırsanız java da sınıfları biraz da olsa anlamış olursunuz.*/

New Project. User guide

Java: Sayıları Biçemli Yazma

Bolum 9. Konu Başlıkları

GoFeed Kullanıcı Arayüzü

Pencereler Pencere Özellikleri

MVC, MVP ve Mediator ile TDD Tecrübeleri. Kenan SEVİNDİK

MOBİL UYGULAMA GELİŞTİRME


Start : Bu method init methodundan hemen sonra çalışır ve applet dosyası yürütülmeye başladığında çalışmaya başlar.

Model-Tabanlı ve Rastgele Karma Yöntem

Sınıf üyeleri: değişkenler (fields) and metotlar (methods) Değişkenler: nesne içerisindeki değişkenlerdir Temel veri tipi veya sınıf tipi

ADOBE CONNECT Versiyonu KULLANIM KLAVUZU

MOBİL UYGULAMA GELİŞTİRME

TEMEL BİLGİSAYAR. Ders Notları. Yrd. Doç. Dr. Seyit Okan KARA

BMH-303 Nesneye Yönelik Programlama

KENDİ ÇİZİM PROGRAMIMIZI OLUŞTURALIM

BMÜ-111 Algoritma ve Programlama. Bölüm 5. Tek Boyutlu Diziler

Bu gün dersimizde değişik web kontrollerinin kullanımını gösteren birkaç web sitesi hazırlayacağız. Önce Visual Studio 2005 i açalım.

HTML Sayfaları. Bütün html sayfaları

Java da İstemci Tarafı Uygulamalar

Bilgisayar Grafiğine Giriş Ders Notları

Mobil Uygulama Kullanma Kılavuzu

1 GİRİŞ 1 C# Hakkında Genel Bilgiler 1.Net Framework 1 CLR 2 CLR Ve CTS 2 Temel Sınıf Kütüphanesi 3 CIL 3 Algoritma Nedir? 4 Sözde Kod (Pseudocode) 5

Kodlama Paneli. Nazmiye Demirel Ortaokulu SCRATCH Scratch bir grafik programlama dilidir.

HTML Etiketleri Genel Özellikler (Global Attributes)

Sınıf Nesne Kavramları C# Bileşenleri Özellikler, Olaylar, Metotlar

JavaFX Temelleri (2)

YZM 2105 Nesneye Yönelik Programlama

İÇİNDEKİLER VII İÇİNDEKİLER

ML TFT 5 ARAYÜZ KULLANIM KILAVUZU

Visual C# - Görsel Programlama II Örnek Sorular ve Cevaplar

BİL-142 Bilgisayar Programlama II

HTML 5 ve CSS 3. Yrd. Doç. Dr. Murat Olcay ÖZCAN

JavaScript Örnekleri PDF

Java String İşlemleri

Transkript:

Bölüm 22 Java GUI Kütüphanesi 22.1 SWT GUI Kütüphanesi Java programlama dili için bir başka GUI kütüphanesi daha vardır ve SWT(The Standard widget toolkit) olarak adlandırılır. SWT kütüphanesi ilk olarak IBM tarafından geliştirilmeye başlanmıştır. Şimdilerde IBM in desteklediği açık kaynak kodlu bir projedir. SWT ağırsiklet araçların bir örneğidir. Altta çalışan işletim sisteminin GUI yaratmasına izin verir. SWT; çalışmak için yerel java arayüzünü kullanır. SWT nin ana avantajları sürat, alışılmış görünüm ve hissiyattır. Swing kadar güçlü değildir ve işletim sisteminin kütüphanesi bağımlıdır. 22.2 SWING GUI Kütüphanesi Swing kütüphanesi Sun Microsystems tarafından piyasaya sürülen resmi Java GUI aracıdır. Swing; %100 java ile yazılmıştır ve Java Foundation Classes(JFC) nin bir parçasıdır. Tam donanımlı masaüstü uygulamaları geliştirmek için kullanılan paketler bütünüdür. JFC; AWT,Swing,Ulaşılabilirlik,Java 2D ve Sürükle Bıraktan oluşur. 1997 yılında JDK 1.2 ile birlikte piyasaya sürülmüştür. 22.3 İlk Swing Programı Bu bölümde, Swing kullanarak ilk programımızı oluşturacağız.örnekler çok basit olacak. Örnek fonksyonellikleri inceleyeceğiz. İlk örnekte basit bir pencere yaratacağız.

Alternative 1: JFrame in Genişletilmesi public class Example extends JFrame { public Example() { settitle("simple example"); setsize(300, 200); setdefaultcloseoperation(exit_on_close); Example ex = new Example(); ex.setvisible(true); Alternative 2: JFrame Sınıfının Kullanılması public class Example { public static void creategui() { JFrame frame = new JFrame("Hello World"); frame.setsize(300, 200); frame.setvisible(true); creategui(); 22.3 JFrame J ile başlayan bileşenlerin Swing isimlendirme kurallarına uyduğu Frame nesnesine JFrame denir.(jbutton, JLabel) JFrame Yüksek-Seviye taşıyıcı olarak adlandırılır, yani JFrame görüntülenmek için kendini başka bir nesneye ekleme gereksinimi duymaz.

İçerik bölme; bütün text, buton ve grafiklerin konulduğu yerdir. Bu öğreticilerde İçerik bölmesiyle çalışacağız. Bu örnekte gördüğünüz üzere JFrame birkaç bileşenden oluşur. Görüntü bileşenlerini eklemek için, içerik bölmesinde koyacağımız yerleri belirlemeliyiz. İçerik bölmesi; kapsama hiyerarşisinde en üst sıradadır. Kapsama hiyerarşisi kök dizin olarak üst sıra taşıyıcısını(bu durumda JFrame) alan bileşenlerin oluşturduğu bir ağaç gibidir. Aşağı doğru indikçe, bileşenleri tutmak için JPanel gibi diğer taşıyıcıları kullanırız. 22.4 SwingUtilities.invokeLater() invokelater() metodu uygulamayı Swing Olay Sırası(Swing Event Queue) na sokar.gui nin belirli durumlarda takılmasını engellemek için kullanılır.bu konu daha sonraki konulardan biridir ve şimdi bunu düşünmemeliyiz. SwingUtilities.invokeLater(new Runnable() { public void run() { // gui codes should be placed here. ); Örnek: import javax.swing.swingutilities;

public class Example extends JFrame { public Example() { settitle("simple example"); setsize(300, 200); setlocationrelativeto(null); setdefaultcloseoperation(exit_on_close); SwingUtilities.invokeLater(new Runnable() { public void run() { ); Example ex = new Example(); ex.setvisible(true); Kod kısa olmasına rağmen uygulama ekranı çok iş yapabilir. Yeniden boyutlandırılabilir, tam ekran yapılabilir veya minimize edilebilir. Bütün karmaşıklık programcının uygulamasında saklıdır. import javax.swing.swingutilities; Swing sınıfları şu şekilde içe aktarılır. public class Example extends JFrame { Example sınıfı JFrame bileşenlerinden miras alır. JFrame üst seviye taşıyıcıdır ve diğer bileşenleri tutmak için kullanılır. settitle("simple example"); Burada pencerenin boytunu settitle() metodunu kullanarak ayarladık. setsize(300, 200); Bu kod pencereyi 300px genişliğinde 200px uzunluğunda ayarlayacaktır. setlocationrelativeto(null);

Pencerenin ortasında bu satır olacaktır. setdefaultcloseoperation(exit_on_close); Bu metod, sağ üstteki kapatma ikonuna basıldığında pencereyi kapatacaktır. Ön tanımlı ayarında hiç birşey yapmayacaktır. SwingUtilities.invokeLater(new Runnable() { public void run() { Example ex = new Example(); ex.setvisible(true); ); Kodumuzun bir örneğini alalım ve ekranda gösterelim. 22.5 JButton Bir sonraki örneğimizde bir butonumuz olacaktır. Butona seçtiğimizde uygulama kapanacaktır. import java.awt.event.actionevent; import java.awt.event.actionlistener; import javax.swing.jbutton; import javax.swing.jpanel; import javax.swing.swingutilities; public class Example extends JFrame { // constructor public Example() { initui();

// initialize GUI components public final void initui() { JPanel panel = new JPanel(); getcontentpane().add(panel); panel.setlayout(null); JButton quitbutton = new JButton("Quit"); quitbutton.setbounds(50, 60, 80, 30); //Button Event quitbutton.addactionlistener(new ActionListener() { public void actionperformed(actionevent event) { ); System.exit(0); panel.add(quitbutton); settitle("quit button"); setsize(300, 200); setlocationrelativeto(null); setdefaultcloseoperation(exit_on_close); // main method SwingUtilities.invokeLater(new Runnable() { public void run() { Example ex = new Example(); ex.setvisible(true); ); JButton u pencereye yerleştirdik. Buraya bir action listener ekleyeceğiz. public Example() { initui(); Bu,GUI yi metodun içinde yaratan iyi bir programlama uygulamasıdır JPanel panel = new JPanel(); getcontentpane().add(panel); Jpanel bileşeni oluşturalım. Bu üretken hafif bir taşıyıcıdır. JFrame i Jpanel e ekleyelim panel.setlayout(null); Normal olarak Jpanel FlowLayout yöneticisine sahiptir. Bu görünüm yöneticisi bileşenleri taşıyıcılara yerleştirmek için kullanılır. Eğer setlayout(null) metodunu

çağırırsak kendimiz bileşenleri yerleştirebiliriz. kullanılır. Bunun için setbounds() metodu JButton quitbutton = new JButton("Quit"); quitbutton.setbounds(50, 60, 80, 30); quitbutton.addactionlistener(new ActionListener() { public void actionperformed(actionevent event) { System.exit(0); ); Burada bir buton yaratıyoruz. setbounds() metodunu çağırarak yerini ayarlıyoruz ve sonra bir action listener ekliyoruz. Butonu seçtiğimizde action listener çalışacaktır.bu durumda butonu işaretlediğimizde uygulama kapanacaktır panel.add(quitbutton); Quit butonunu göstermek için panele mutlaka eklemeliyiz. 22.6 Tooltip Tooltip ler yardım sisteminin birer parçalarıdır. Eğer fare imlecini bir objenin üstüne getirirsek Swing bunu dikdörtgen bir pencerede gösterir. import javax.swing.jbutton; import javax.swing.jpanel; import javax.swing.swingutilities; public class Example extends JFrame {

public Example() { initui(); public final void initui() { JPanel panel = new JPanel(); getcontentpane().add(panel); panel.setlayout(null); panel.settooltiptext("a Panel container"); JButton button = new JButton("Button"); button.setbounds(100, 60, 100, 30); button.settooltiptext("a button component"); panel.add(button); settitle("tooltip"); setsize(300, 200); setlocationrelativeto(null); setdefaultcloseoperation(exit_on_close); SwingUtilities.invokeLater(new Runnable() { public void run() { Example ex = new Example(); ex.setvisible(true); ); Bu örnekte frame ve buton için tooltip ayarlıyoruz. panel.settooltiptext("a Panel container"); Tooltip I etkinleştirmek için settooltiptext()metodunu çağırıyoruz.

22.7 JLabel Bileşeni JLabel yazı ve resim göstermek için kullanılan basit bir bileşendir. Girdi olaylarıyla etkileşim kurmaz. import java.awt.borderlayout; import java.awt.color; import java.awt.font; import javax.swing.jlabel; import javax.swing.jpanel; public class MyLabel extends JFrame { public MyLabel() { settitle("no Sleep"); String lyrics = "<html>it's way too late to think of<br>" + "Someone I would call now<br>" + "And neon signs got tired<br>" + "Red eye flights help the stars out<br>" + "I'm safe in a corner<br>" + "Just hours before me<br></html>"; JPanel panel = new JPanel(); panel.setlayout(new BorderLayout(10, 10)); JLabel label = new JLabel(lyrics); label.setfont(new Font("Georgia", Font.PLAIN, 14)); label.setforeground(new Color(50, 50, 25)); label.setbounds(105, 129, 46, 14); panel.add(label, BorderLayout.CENTER); add(panel); pack(); setdefaultcloseoperation(exit_on_close); MyLabel mylabel = new MyLabel(); mylabel.setvisible(true); Bu örnekte Cardigans ın No Sleep Song isimli şarkısının sözlerini göstereceğiz. JLabel bileşeninde HTML tagleri kullanılabilir. Satırları ayırmak için <br> kullanılır. JPanel panel = new JPanel(); panel.setlayout(new BorderLayout(10, 10)); -- BorderLayout kullanmak için bir panel yaratıyoruz. JLabel label = new JLabel(lyrics); label.setfont(new Font("Georgia", Font.PLAIN, 14)); label.setforeground(new Color(50, 50, 25));

Burada bir label bileşeni oluşturuyoruz. Fontunu Georgia,14 px olarak ayarlıyoruz. Ön rengini de değiştiriyoruz. panel.add(label, BorderLayout.CENTER); Label I panelin merkezine koyuyoruz. add(panel); pack(); Panel frame bileşenine eklendi. Bütün bileşenlerin görünebilmesi ve pencerenin boyutunun değiştirilebilmesi için metodunu pack() çağırıyoruz. 22.8 JCheckBox Bileşeni JCheckBox iki durumu olan bir bileşendir. Bu durumlar Açık ve kapalı dır. İsmi olan bir kutudur. Eğer kutu işaretlenmişse, içinde bir tick( ) ile gösterilir. Bir check box göster/gizle gibi durumlarda kullanılabilir. import java.awt.event.actionevent; import java.awt.event.actionlistener; import javax.swing.jcheckbox; import javax.swing.swingutilities; public class CheckBoxExample extends JFrame { public CheckBoxExample() { initui(); public final void initui() { final JCheckBox checkbox = new JCheckBox("Show Title", true); checkbox.setbounds(37, 23, 127, 23); getcontentpane().setlayout(null); getcontentpane().add(checkbox); checkbox.addactionlistener(new ActionListener() { public void actionperformed(actionevent e) { boolean state = checkbox.isselected();

); if (state) { settitle("jcheckbox example"); else { settitle(""); setsize(280, 200); settitle("jcheckbox example"); setlocationrelativeto(null); setresizable(false); setdefaultcloseoperation(jframe.exit_on_close); SwingUtilities.invokeLater(new Runnable() { public void run() { CheckBoxExample ex = new CheckBoxExample(); ex.setvisible(true); ); Örneğimizde duruma göre pencere belirir veya saklanır. JCheckBox checkbox = new JCheckBox("Show Title", true); Burada checkbox için bir constructor metodumuz var. Yazıyı ve durumu sağlıyoruz. boolean state = checkbox.isselected(); if (state) { settitle("jcheckbox example"); else { settitle(""); Checkbox un durum seçimi olduğunu biliyoruz. Checkbox un durumuna bağlı olarak pencereyi gösterebilir veya gizleyebiliriz.

22.9 JSlider JSlider kullanıcının belirli bir aralıkta sürükleme çubuğunu kaydırarak bir değere ulaşmasını sağlar.aşağıdaki örnek, ses kontrolünü göstermektedir. import java.awt.borderlayout; import java.awt.dimension; import javax.swing.borderfactory; import javax.swing.box; import javax.swing.boxlayout; import javax.swing.jlabel; import javax.swing.jpanel; import javax.swing.jslider; import javax.swing.swingutilities; import javax.swing.event.changeevent; import javax.swing.event.changelistener; public class SliderExample extends JFrame { private JSlider slider; private JLabel label; public SliderExample() { initui(); public final void initui() { JPanel panel = new JPanel(); panel.setlayout(new BoxLayout(panel, BoxLayout.X_AXIS)); panel.setborder(borderfactory.createemptyborder(40, 40, 40, 40)); setlayout(new BorderLayout()); panel.add(box.createhorizontalglue()); slider = new JSlider(0, 150, 0); slider.setpreferredsize(new Dimension(150, 30)); slider.addchangelistener(new ChangeListener() { public void statechanged(changeevent event) { int value = slider.getvalue(); if (value == 0) { label.settext("< "); else if (value > 0 && value <= 30) { label.settext("< )"); else if (value > 30 && value < 80) { label.settext("< ))"); else { label.settext("< )))"); ); panel.add(slider); label = new JLabel("< ",JLabel.CENTER); panel.add(label); panel.add(box.createhorizontalglue()); add(panel, BorderLayout.CENTER); pack();

settitle("jslider"); setdefaultcloseoperation(exit_on_close); setlocationrelativeto(null); SwingUtilities.invokeLater(new Runnable() { ); public void run() { SliderExample ex = new SliderExample(); ex.setvisible(true); Bu örnekte; JSlider ve JLabel gösterdik. Sürükleme çubuğunu kaydırarak, label bileşenindeki yazıyı değiştirebiliriz. panel.setlayout(new BoxLayout(panel, BoxLayout.X_AXIS)); panel.setborder(borderfactory.createemptyborder(40, 40, 40, 40)); Panelin etrafına 40px lik bir çerçeve koyduk. panel.add(box.createhorizontalglue()); JSlider ın anormal boyutlara ulaşmasını engellemek için sağa ve sola ayarlanabilir boşluklar bıraktık. slider = new JSlider(0, 150, 0); Bu JSlider constructor udur. Parametreleri; minimum,maximum ve şu andaki değerdir. slider.addchangelistener(new ChangeListener() {... ); Sürgüye ChangeListener ekliyoruz. Listener ın içinde sürgü değerini ve yazıyı ayarlyoruz.

22.10 JComboBox Combobox butonu, alanı veya drop-down list bileşenlerini kombine eder. Kullanıcı isteğine göre drop-down list ten değerini seçebilir. Eğer combobox değiştirilebilir yapılırsa, kullanıcının içine veri girebileceği bir alan oluşur. import javax.swing.imageicon; import javax.swing.jcombobox; import javax.swing.jlabel; import javax.swing.jpanel; import javax.swing.swingutilities; import javax.swing.border.emptyborder; import java.awt.event.itemlistener; import java.awt.event.itemevent; import javax.swing.border.lineborder; import java.awt.color; public class ComboBoxExample extends JFrame { private JPanel contentpane; private JLabel display = null; private JComboBox combobox = null; final String[] authors = {"Leo Tolstoy","John Galsworthy","Honore de Balzac"; final String[] images = { "tolstoy.jpg","galsworthy.jpg","balzac.jpg",; public ComboBoxExample() { settitle("jcombobox"); setdefaultcloseoperation(jframe.exit_on_close); setbounds(100, 100, 315, 300); contentpane = new JPanel(); contentpane.setborder(new EmptyBorder(5, 5, 5, 5)); setcontentpane(contentpane); contentpane.setlayout(null); display = new JLabel(); display.setborder(new LineBorder(new Color(0, 0, 0))); display.setbounds(50, 26, 148, 162); contentpane.add(display); combobox = new JComboBox(authors); //Combobox Event declared here: itemstatechanged combobox.additemlistener(new ItemListener() { public void itemstatechanged(itemevent e) { if (e.getstatechange() == ItemEvent.SELECTED) { int index = combobox.getselectedindex(); display.seticon(new ImageIcon( ClassLoader.getSystemResource(images[index] ))); ); combobox.setselectedindex(-1); combobox.setbounds(50, 199, 148, 20); contentpane.add(combobox);

SwingUtilities.invokeLater(new Runnable() { public void run() { ComboBoxExample frame = new ComboBoxExample(); frame.setvisible(true); ); Örneğimizde iki tane bileşen var. Label ve combobox. Combobox un içinde 3 tane ünlü roman yazarı var. İsmi seçtiğimizde; resmi label in içinde belirecek. display = new JLabel(); Gösterilecek alan basit bir JLabel dir. combobox = new JComboBox(authors); combobox.setselectedindex(-1); JComboBox un constructor metodu yazarların isimlerini string dizisi olarak alır. Eğer setselectedindex() metodunu -1 olarak verirsek hiç birşey seçilemeyecektir. combobox.additemlistener( ); Combobox a ItemListener ekliyoruz.event handler da combobox da seçilmiş indexi ve label için uygun resmi alıyoruz. Seçilen isim; görüntülerin olduğu bir dizinin de indexidir.

22.11 JToggleButton JToggleButton bir butondur ve iki durumu vardır.basıldı veya basılmadı. Butona basarak bu durumu değiştirebilirsiniz. Bu fonksiyonelliğin kullanıldığı durumlar mevcuttur. import javax.swing.jpanel; import javax.swing.swingutilities; import javax.swing.border.emptyborder; import javax.swing.border.lineborder; import javax.swing.jtogglebutton; import java.awt.color; import java.awt.event.actionevent; import java.awt.event.actionlistener; public class ToggleButtonSample extends JFrame { private JPanel contentpane; private JToggleButton redbutton; private JToggleButton greenbutton; private JToggleButton bluebutton; private JPanel display; public ToggleButtonSample() { setdefaultcloseoperation(jframe.exit_on_close); setbounds(100, 100, 302, 245); contentpane = new JPanel(); contentpane.setborder(new EmptyBorder(5, 5, 5, 5)); setcontentpane(contentpane); contentpane.setlayout(null); display = new JPanel(); display.setbounds(155, 27, 121, 113); display.setborder(lineborder.creategraylineborder()); display.setbackground(color.black); contentpane.add(display); redbutton = new JToggleButton("red"); redbutton.addactionlistener(new ActionListener() { public void actionperformed(actionevent e) { Color color = display.getbackground(); int red = color.getred(); int green = color.getgreen(); int blue = color.getblue(); if (e.getactioncommand().equals("red")) { if (red == 0) { red = 255; else { red = 0; Color setcol = new Color(red, green, blue); display.setbackground(setcol); ); redbutton.setbounds(10, 27, 121, 23); contentpane.add(redbutton);

greenbutton = new JToggleButton("green"); greenbutton.addactionlistener(new ActionListener() { public void actionperformed(actionevent e) { Color color = display.getbackground(); int red = color.getred(); int green = color.getgreen(); int blue = color.getblue(); if (e.getactioncommand().equals("green")) { if (green == 0) { green = 255; else { green = 0; Color setcol = new Color(red, green, blue); display.setbackground(setcol); ); greenbutton.setbounds(10, 65, 121, 23); contentpane.add(greenbutton); bluebutton = new JToggleButton("blue"); bluebutton.addactionlistener(new ActionListener() { public void actionperformed(actionevent e) { Color color = display.getbackground(); int red = color.getred(); int green = color.getgreen(); int blue = color.getblue(); if (e.getactioncommand().equals("blue")) { if (blue == 0) { blue = 255; else { blue = 0; Color setcol = new Color(red, green, blue); display.setbackground(setcol); ); bluebutton.setbounds(10, 100, 121, 23); contentpane.add(bluebutton); SwingUtilities.invokeLater(new Runnable() { public void run() { ToggleButtonSample frame = new ToggleButtonSample(); frame.setvisible(true); );

Örnekte bir panel ve üç tane buton vardır.panelin arka plan rengini siyaha ayarlayacağız.butonlar renk değerlerinin kırmızı mavi ve yeşil olanlarını tetikleyecek. Basılan butona göre arkaplan rengi değişecek. Color color = display.getbackground(); int red = color.getred(); int green = color.getgreen(); int blue = color.getblue(); actionperformed metodunda o andaki kırmızı mavi ve yeşil rengi algılıyoruz. if (e.getactioncommand().equals("red")) { if (red == 0) { red = 255; else { red = 0; Hangi butona basıldığını ve o anki renk durumunu elde ediyoruz. Color setcol = new Color(red, green, blue); display.setbackground(setcol); Burada yeni bir renk oluşturuldu ve görüntü paneli o renkte görünmekte.