EDUTIME Java Day 6 Serdar TÜRKEL
Konular AWT araçlarının kullanımı Yerleşim Yöneticisi Olayların yönetimi
AWT AWT Abstract Windowing Toolkit (Soyut Pencereleme Araçtakımı) AWT kullanıcı arabirimi yaratmamıza izin veren sınıflar setidir Çekici ve etkili kullanıcı arabirimleri oluşturmayı sağlayan çeşitli parçalar sağlar Kaplar(Containers) Bileşenler(Components) Yerleşim Yöneticilieri (Layout Managers) Grafik ve çizme yetenekleri Fontlar Olaylar(Events)
AWT AWT, sınıflar, arayüzler ve diğer paketlerden oluşur.
Kaplar(Containers) Bileşenlerimizi koyduğumuz yerlerdir. Bileşenleri tutabilir, üzerine çizilebilir ve boyanabilirler Java.awt paketinin ‘Container’ isimli bir sınıf vardır. Bu sınıf, doğrudan veya dolaylı olarak sık kullanılan iki kaptan türer Çerçeveler(Frames) Panolar(Panels)
Çerçeveler Pencerelerden farklıdırlar Pencerelerin alt sınıflarıdırlar Ayrı bir pencere içinde gösterililer ve sınırları vardır. ‘Frame’, bir apletten veya tarayıcıdan bağımsızdır. Oluşturucuları Frame() Frame(String başlık)
Çerçeveler import java.awt.*; class FrameDemo extends Frame { public FrameDemo(String title){ super(title); } public static void main (String args[]) FrameDemo f=new FrameDemo("Ben bir Frame mim"); f.setSize(300,200); f.setVisible(true);
Panel Pencere içinde bulunur Tarayıcının sağladığı pencerede bulunur ve sınırları yoktur. Bileşenleri bir grup olarak kullanmak için kullanılır Panel doğrudan gözükmez, ‘Frame’ eklememiz gerekir. Oluşturucusu Panel()
Panel import java.awt.*; class PanelTest extends Panel { public PanelTest() } public static void main (String args[]) PanelTest p = new PanelTest(); Frame f = new Frame("Testing a Panel"); f.add(p); f.setSize(300,200); f.setVisible(true);
Diyalog(Dialog) Window sınıfının alt sınıfıdır Oluşturucuları Frame myframe = new Frame(“My frame”); String title = “Title”; boolean modal = true; Dialog dlg = new Dialog( myframe, title, modal);
Bileşenler Bileşenler, kullanıcı arayüzü üzerine yerleştirilebilir ve yeniden boytlandırılabilirler. Örnek Textfield, label, checkbox, textarea Scrollbar, scrollpane, dialog
Label String leri göstermek için kullanılır Oluşturucuları Metotları Label(String labeltext) Label(String labeltext, int alignment) Metotları setFont(Font f) setText(String s) getText( )
Label import java.awt.*; class LabelTest extends Frame { Label label1; public LabelTest(String title){ super(title); label1= new Label("Sadece bir Label"); add(label1); } public static void main(String args[]){ LabelTest f = new LabelTest("Label"); f.setSize(300,200); f.show();
TextField İçinde metin gösterilebilen yada girilebilen tek satırlık alanlardır. Oluşturucuları TextField( ) TextField(int columns) TextField(String s) TextField(String s, int columns) Metotları: setEchoChar(char) setTest(String s) getText( ) setEditable(boolean) isEditable( )
TextField import java.awt.*; public class TextField1{ public static void main(String args[]){ Frame f=new Frame("Pencere"); f.setSize(300,300); TextField tf1=new TextField(); TextField tf2=new TextField("Edutime"); TextField tf3=new TextField("edutime",5); TextField tf4=new TextField(5); TextField tf5=new TextField("serdar"); f.setLayout(new FlowLayout()); f.add(tf1); f.add(tf2); f.add(tf3); f.add(tf4); f.add(tf5); f.setVisible(true); }
TextField import java.awt.*; public class TextField1{ public static void main(String args[]){ Frame f=new Frame("Pencere"); f.setSize(300,300); TextField tf=new TextField("Edutime"); tf.setEchoCharacter('a'); //tf.setText("Edutime Bilgi akademisi"); //System.out.println (tf.getText()); /* *if(tf.isEditable()){ System.out.println ("duzenlenebilir"); }else{ System.out.println ("duzenlenemez"); } */ f.add(tf); f.setVisible(true);
TextArea Metinin iki veya daha fazla satır olarak alınacağı durumlarda kullanılır Çok satırlı özelliğe sahip, düzenlenebilen bir alandır. TextArea oluşturmak için gerekli adımlar: Bir eleman oluşturun Sahip olacağı satır ve kolon sayısını belirtin Ekranda yer alacağı yeri belirtin
TextArea (Contd…) Oluşturucuları: TextArea( ) TextArea(int rows, int cols ) TextArea(String text) TextArea(String text, int rows, int cols)
TextArea (Contd…) import java.awt.*; public class textArea1{ public static void main(String args[]){ String metin="edutime bilgi akademisi"; Frame f=new Frame("pencere"); f.setSize(200,300); TextArea alan=new TextArea(metin,10,20); f.add(alan); f.setVisible(true); }
TextArea metotları setText(String) getText( ) setEditable(boolean) isEditable( ) insertText(String, int) replaceText(String, int, int)
TextArea import java.awt.*; public class TextArea2{ public static void main(String args[]){ String metin="edutime bilgi akademisi"; Frame f=new Frame("pencere"); f.setSize(200,300); TextArea alan=new TextArea(metin,10,20); alan.insertText("uuu",3); alan.replaceText("TIME",6,11); f.add(alan); f.setVisible(true); }
Düğme (Button ) Basma yada komut düğmeleri, grafik arayüzlerin önemli parçasıdır Düğme oluşturmak için gerekli adımlar Düğme bileşenini tercihen amacını belirten bir etiket ile oluşturun Ekranda nereye koyacağımıza karar verin Ekranda gösterin Oluştrurucuları: Button( ) Button(String text)
Button import java.awt.*; class ButtonTest extends Frame { Button b1 = new Button("red"); Button b2 = new Button("Green"); Button b3 = new Button("Blue"); public ButtonTest(String title){ super(title); setLayout(new FlowLayout()); add(b1); add(b2); add(b3); } public static void main(String args[]){ ButtonTest f = new ButtonTest("ButtonTest"); f.setSize(300,200); f.show();
Checkbox ve RadioButton Checkbox lar çok seçenekli kullanıcı girdileri için kullanılırlar Radiobutton lar tercihleri belirtmek için kullanılır Checkbox yada radiobutton yaratma için adımlar: Bir eleman yaratın Başlangıç durumunu (seçili veya seçili değil) olarak belirtin Ekrandaki yerini belirtin Ekranda gösterin
Checkbox ve RadioButton Checkbox oluşturmak için oluşturucular: Checkbox( ) Checkbox(String text) RadioButton oluşturmak için, önce ‘CheckboxGroup’ nesnesini aşağıdaki gibi oluşturmalıyız. CheckboxGroup cg = new CheckboxGroup(); Checkbox erkek= new Checkbox(“erkek”,cg,true); Checkbox kadin= new Checkbox(“kadin”,cg,false)
Checkbox and RadioButton import java.awt.*; class CheckboxTest extends Frame { Label l1 = new Label("CheckBoxes"); Checkbox b1 = new Checkbox("red",true); Checkbox b2 = new Checkbox("Green",true); Checkbox b3 = new Checkbox("Blue",false); Label l2 = new Label("RadioButtons"); CheckboxGroup cg = new CheckboxGroup(); Checkbox erkek= new Checkbox("erkek",cg,false); Checkbox kadin= new Checkbox("kadin",cg,false); public CheckboxTest(String title){ super(title); setLayout(new FlowLayout()); add(l1); add(b1); add(b2); add(b3); add(l2); add(erkek); add(kadin); } public static void main(String args[]){ CheckboxTest f = new CheckboxTest("CheckboxTest"); f.setSize(300,200); f.show();
Tercih(Choice) Listeleri ‘Choice’ sınıfı çoklu öğe listeleri oluşturmamızı sağlar Liste ilk yaratıldığında boştur Tercih listeleri oluşturmak için gereken adımlar: Bir eleman yaratın Öğeleri(String) tek tek ekleyin Ekranda nerede yerleştireceğinize karar verin Ekranda gösterin
Tercih(Choice) Listeleri Örnekler Choice colors=new Choice( ); colors.addItem(“Red”); colors.addItem(“Green”);
Tercih(Choice) Listeleri import java.awt.*; class ChoiceTest extends Frame { Label l1 = new Label("What is your favorite color"); Choice colors = new Choice(); public ChoiceTest(String title){ super(title); setLayout(new FlowLayout()); add(l1); colors.add("White"); colors.add("Red"); colors.add("Orange"); colors.add("Green"); colors.add("Yellow"); colors.add("Blue"); add(colors); } public static void main(String args[]){ ChoiceTest f = new ChoiceTest("ChoiceTest"); f.setSize(300,200); f.show();
Yerleşim Yöneticisi (Layout Manager) Farklı yerleşim türleri vardır: Flow Layout Border Layout Card Layout Grid Layout GridBag Layout Yerleşim yöneticisi ‘setLayout( )’ metodu kullanılarak ayarlanır
FlowLayout Yöneticisi Apletlerin ve panoların varsayılan yerleşim yöneticisdir. Bileşenler, sol üst köşeden sağ alt köşeye kadar yerleştirilir. Oluşturucuları: FlowLayout mylayout = new FlowLayout(); FlowLayout exLayout = new flowLayout(FlowLayout.RIGHT);
BorderLayout Yöneticisi ‘BorderLayout’ yöneticisi, ‘Window’,’Frame’ ve ‘Dialog’ için varsayılan yerleşim yöneticisidir. Bu yerleşim biçimine göre, bir kap içinde en fazla beş parça yerleştirir. Bu parçalar, kuzeye(North), güneye(South), batıya(West), doğuya(East), veya merkeze(Center) yerleştirilebilir
BorderLayout Yöneticisi Example: To add component to North region Button b1= new Button(“North Button”); setLayout(new BorderLayout( )); add(b1, BorderLayout.NORTH);
BorderLayout Yöneticisi import java.awt.*; class BorderLayoutTest extends Frame { Label l1 = new Label("What is your favorite color"); private Button buttons[]; private String names[]={"Hide North","Hide South","Hide east","Hide West", "Hide Center"}; private BorderLayout layout; public BorderLayoutTest(String title){ super(title); layout= new BorderLayout(5,5); setLayout(layout); buttons = new Button[names.length]; int count; for(count = 0; count < names.length;count++){ buttons[count] = new Button(names[count]); } add(buttons[0],BorderLayout.NORTH); add(buttons[1],BorderLayout.SOUTH); add(buttons[2],BorderLayout.EAST); add(buttons[3],BorderLayout.WEST); add(buttons[4],BorderLayout.CENTER); public static void main(String args[]){ BorderLayoutTest f = new BorderLayoutTest("BorderLayoutTest"); f.setSize(300,200); f.show();
CardLayout Yöneticisi Farklı yerşelimlerden oluşan yığın tutabilir Her yerleşim, destedeki bir kart gibidir. Kart, çoğunlukla ‘Panel’ nesnesidir. Düğme gibi ayrı bir bileşen, en üstte gösterilecek kartı kontrol eder.
CardLayout Yöneticisi CardLayout oluşturmak için adımlar: Ana panonun yerleşimini ‘CardLayout’ olarak ayarlıyoruz CardLayout card = new CardLayout(); panelMain.setLayout(card); Diğer panoları ana panoya ekliyoruz panelMain.add(“Kirmizi Pano”, panelOne); panelMain.add(“Mavi Pano”, panelTwo);
CardLayout Yöneticisi
GridLayout Yöneticisi Kabı ızgaralara bölmemizi sağlar. Bileşenler satırlara ve kolonlara yerleştirilir. Her hücre, en az bir bileşen içermelidir. Tüm bileşenler aynı boyutta ise kullanılır Bileşenlerin yerleştirilme sıraları soldan sağa, yukarıdan aşağıyadır Oluşturucusu GridLayout gl = new GridLayout(no. of rows, no. of columns);
GridBagLayout Yöneticisi Bu yerleşimi kullanmak için, her bileşenin boyutunun ve yerleşiminin ne olacağını belirtmelisiniz. ‘GridBagLayoutConstraints’ sınıfı, ‘GridLayout’ sınıfının her bileşeni yerleştirmek ve boyutunu ayarlamak için ihtiyaç duyduğu tüm ilgileri tutar.
Olayların yönetimi Olaylar aşağıdakiler tarafından yönetilirler: Abstract Windowing Toolkit Trayıcı Direkt olarak programcı tarafından yazılan olay yöneticileri(Event Handler) Uygulama, bir olay yöneticisini bir nesneye kaydetmelidir Bu yönetici, ilgili olay nesnede meydana geldiği zaman çağrılacaktır
Olayların yönetimi Olay dinleyici, bir nesnenin oluşturduğu belirli bir olayı dinler Her olay dinleyici, bu olayları yöneten metodları sağlar. Dinleyiciyi gerçekleştiren sınıf, bu metodları tanımlamalıdır.
Olaylar & Karşılık gelen dinleyiciler ActionEvent AdjustmentEvent ComponentEvent FocusEvent ItemEvent WindowEvent TextEvent MouseEvent KeyEvent ActionListener AdjustmentListener ComponentListener FocusListener ItemListener WindowListener TextListener MouseListener MouseMotionListener KeyListener
Event paketi sınıf hiyerarşisi
Dinleyici Arayüz Hiyerarşisi
ActionListener
ItemListener
WindowListener
Component Sınıfının Dinleyicileri
Menuüler Menü çeşitleri : Frame de sadece bir menü bar olabilir Pull-down Pop-up menü Frame de sadece bir menü bar olabilir Menünün bileşenleri: Menubar MenuItems