MAT214 BİLGİSAYAR PROGRAMLAMA II DERSİ Ders 8: Grafik Kullanıcı Arayüzü (Graphical User Interface-GUI) Yard. Doç. Dr. Alper Kürşat Uysal Bilgisayar Mühendisliği Bölümü [email protected] Ders Web Sayfası: http://ceng.anadolu.edu.tr/Ders.aspx?dersId=107 1 GRAFİK KULLANICI ARAYÜZÜ • Şu ana kadarki programlarımızda konsol tipi program kullanımı gördük. • Grafik program kontrolunda kullanırken program ekranımızda bir grafik penceresi olarak açık durur. • Kullanıcı klavye, fare gibi ara birimler kullanarak programa komut gönderir. • Komutlar dinleyici (Listener) dediğimiz alt metodlar tarafından alınarak gerekli işlemler yerine getirilir. 2 GRAFİK KULLANICI ARAYÜZÜ • Örneğin bir düğme verilmişse biz düğmeye bastığımızda düğmeye bağlı düğme dinleyicisi harekete geçer ve içinde tanımladığımız komutları yerine getirir. • Bu bölümde değişik kontrolleri ve işlevlerini ve bunları kullanarak Grafik ortamda programlamayı inceleyeceğiz. • Burada tüm yaptığımız kullanıcı için daha etken bir kullanım platformu oluşturmaktır. • Arka planda çalışacak olan sınıflar yine aynı yapıda olacaklardır. 3 GRAFİK KULLANICI ARAYÜZÜ • Aşağıda GUI bileşenlerine örnekler verilmiştir : – buttons, labels, text fields, check boxes, radio buttons, combo boxes, and sliders. Olay Güdümlü Programlama • Grafik arayüz için çalışan programlar olay güdümlü (event‐driven) olmalıdır. • Bir olay programın içerisinde gerçekleşen button’a ya da mouse’a tıklanması gibi bir aktivitedir. • Button’a tıklanması gibi bir olaya karşı bir tepki verilecektir. • Bir olay dinleyicisi (event listener) örneğin button’un tıklanıp tıplanmadığını takip eder ve eğer tıklanmışsa buna karşılık olarak bir tepki verir. • Verilen bu tepki programda ilgili bölümlerde yazılan kodlar ile ilgilidir. 12‐5 GRAFİK KULLANICI ARAYÜZÜ – ÖRNEK 1 import javax.swing.JFrame; public class GUIOrnek1 { public static void main(String[] args) { final int WINDOW_WIDTH = 350; // Window width in pixels final int WINDOW_HEIGHT = 250; // Window height in pixels // Create a window. JFrame window = new JFrame(); // Set the title. window.setTitle("A Simple Window"); // Set the size of the window. window.setSize(WINDOW_WIDTH, WINDOW_HEIGHT); // Display the window. window.setVisible(true); } } 6 Pencere Yaratmak • Aşağıdaki import ifadesi swing bileşenlerini kullanmak içindir: import javax.swing.*; • main methodunda, iki adet sabit değer bulunmaktadır: final int WINDOW_WIDTH = 350; final int WINDOW_HEIGHT = 250; • Bu sabit değerler açılacak pencerenin (frame) boyutlarını belirlemek içindir. • Bunlar piksel değerleri olarak kullanılacaktır. • Piksel, ekrandaki en küçük bir birim noktadır. 12‐7 Pencere Yaratmak • Öncelikle JFrame sınıfının bir nesnesini yaratmamız gerekiyor: JFrame window = new JFrame(); • Bu ifade: – Bellekte bir JFrame nesnesi yarattı • setTitle metodunun içerisine yazılan metin görüntülen pencerenin başlığı olacaktır. window.setTitle("A Simple Window"); • Bir JFrame başlangıçta görünmez durumdadır. 12‐8 Pencere Yaratmak • Aşağıdaki kod pencereyi görünür hale getirir: window.setVisible(true); • setVisible methodu boolean bir parametre alır. – true – pencereyi görünür hale getirir. – false ‐ pencereyi görünmez hale getirir. • Pencerenin büyüklüğü ise şu şekilde ayarlanır: window.setSize(WINDOW_WIDTH, WINDOW_HEIGHT); 12‐9 GRAFİK KULLANICI ARAYÜZÜ – ÖRNEK 2 import javax.swing.*; public class GUIOrnek2 extends JFrame { final int WINDOW_WIDTH = 320; // Window width in pixels final int WINDOW_HEIGHT = 70; // Window height in pixels /** Constructor */ public GUIOrnek2() { // Set this window's title. setTitle("A Simple Window"); // Set the size of this window. setSize(WINDOW_WIDTH, WINDOW_HEIGHT); // Create a label to display a message. JLabel messageLabel = new JLabel("This class has it's own main method."); // Add the label to the content pane. add(messageLabel); // Display the window. setVisible(true); } /** The main method creates an instance of the GUIOrnek2 class, which causes it to display its window. */ public static void main(String[] args) { GUIOrnek2 guiOrnek2 = new GUIOrnek2(); 10 }} Bileşenleri Ekleme • Swing bileşenlerin pencereye eklenmesi için çeşitli yöntemler sunar. • 3 temel bileşen aşağıda verilmiştir: JLabel : Metin görüntüleyen alan. JTextField : Kullanıcının giriş yapabileceği metin kutusu. JButton : Tıklandığında bir işlem gerçektirecek olan düğme (button). 12‐11 Kilometer Converter Uygulaması Kullanıcı Grafik Arayüzü Text Field Window Title Label Button 12‐12 Bileşenlerin Eklenmesi private private private … message JLabel message; JTextField kilometers; JButton calcButton; = new JLabel( "Enter a distance in kilometers"); kilometers = new JTextField(10); calcButton = new JButton("Calculate"); • Yukarıdaki kod üç Swing bileşenini tanımlar ve bunlardan nesne yaratır. 12‐13 Bileşenlerin Eklenmesi • Bir content pane JFrame nesnelerinin bir parçası olan bir konteyner’dır. • JFrame e eklenen her bileşen content pane’e eklenmelidir. Bunu da JFrame sınıfının add methodu ile yaparız. • content pane görünür değildir ve kenar çizgileri yoktur. • Bir panel de GUI bileşenlerini yerleştirek için aynı amaçla kullanılabilir. 12‐14 Bileşenlerin Eklenmesi • Panel ler GUI bileşenlerini tek başlarına görüntüleyemez. • Paneller genellikle birbiriyle alakalı GUI bileşenlerini organize biçimde ekrana yerleştirmek için kullanılır. • Paneller JPanel sınıfı kullanılarak yaratılır. private JPanel panel; … panel = new JPanel(); panel.add(message); panel.add(kilometers); panel.add(calcButton); 12‐15 Bileşenlerin Eklenmesi • Bileşenler önce panel üzerinde yerleştirilir ve daha sonra panel JFrame‘in content pane’i içerisine konulur. add(panel); 12‐16 GRAFİK KULLANICI ARAYÜZÜ – ÖRNEK 3 – 1. KISIM import javax.swing.*; public class KiloConverter extends JFrame { private JPanel panel; // To reference a panel private JLabel messageLabel; // To reference a label private JTextField kiloTextField; // To reference a text field private JButton calcButton; // To reference a button private final int WINDOW_WIDTH = 310; // Window width private final int WINDOW_HEIGHT = 100; // Window height public KiloConverter() { // Set the window title. setTitle("Kilometer Converter"); // Set the size of the window. setSize(WINDOW_WIDTH, WINDOW_HEIGHT); // Build the panel and add it to the frame. buildPanel(); // Add the panel to the frame's content pane. add(panel); // Display the window. setVisible(true); } 17 GRAFİK KULLANICI ARAYÜZÜ – ÖRNEK 3 - 2. KISIM /** The buildPanel method adds a label, text field, and and a button to a panel. */ private void buildPanel() { // Create a label to display instructions. messageLabel = new JLabel("Enter a distance in kilometers"); // Create a text field 10 characters wide. kiloTextField = new JTextField(10); // Create a button with the caption "Calculate". calcButton = new JButton("Calculate"); // Create a JPanel object and let the panel // field reference it. panel = new JPanel(); // Add the label, text field, and button // components to the panel. panel.add(messageLabel); panel.add(kiloTextField); panel.add(calcButton); } public static void main(String[] args) { KiloConverter kc = new KiloConverter(); } } 18 KAYNAKÇA 1. Turhan Çoban, Java Bilgisayar Diliyle Programlama. 2. Starting Out with Java 5th Edition (Tony Gaddis): From Control Structures through Objects 19
© Copyright 2024 Paperzz