You are on page 1of 8

Component'ler

Component Kavram
Kullancdan bir bilgi almak iin kullanlan grsel nesnelere
'component' denir. Button, TextField, CheckBox gibi
component'ler bulunmaktadr. Btn component'ler AWT
ierisinde bulunan Component adl class' extend eder. Bu
class btn bileenlerde bulunan yaz rengi, boyutlar gibi
property'ler ve eitli method'lar ierir.
Container Class'
Bir veya daha ok component ieren component'ler
Container'lardr. Container'n iine konan component'ler
belli bir layout manager tarafndan yerletirilir. Aslnda
Frame ierisine konan componentler de Frame'in
ierisindeki container'a konur. Container'ler da aslnda birer
component'tir. Yani Container class' Component class'n
extend eder.
Panel Class'
Container class' ierisinde bir veya daha ok component
bulundurabilen bileen olmakla birlikte, programclarn bu
class' extend eden Panel adl class'n bu amala
kullanlmas gerekir.
Canvas Class'
zerinde izim veya image ilemleri yapmak iin
kullanlmas uygun olan component Canvas'dr. izim
yapmak iin Component'teki paint() method'u override
edilir :
public void paint(Graphics g){
g.drawLine(100,100,300,300)
}

Button (Dme)
En ok kullanlan componentler'den biri olan Button,
zerinde bir etiket (label) bulunan, fareyle tklandnda
basld izlenimi veren ve bir ActionEvent reten arayz
elemandr. AWT paketinde Toolbar (ara ubuu) yoktur,
ancak bir panele bir ka dme eklenerek ok kolay ayn
ilevsellik elde edilebilir.
Telefonunun arayzn emle eden bir pencere yapalm.
Bu uygulama dmelerden birine baslarak yazlan
numaray gya arasn. lem, hangi dmeye basldn
anlamak, eer "Yes" gibi kontrol tuuysa bir ilem yapmak,
"1","2","3" gibi numaraysa diplay'da gstermekten ibarettir.
PhoneSimulatorFrame class' implements ActionListener
diyerek ve actionPerformed() methodunu yazarak
dmeleri dinleyebilme zellii kazanmtr. Dmelere
kendisini button.addActionListener(this) eklinde
kaydettirir. Hangi dmeye basldn event'in
source'undan renmektedir.
PhoneSimulatorFrame.java Indir Gster Gizle Kopar Satr Gizle Satr Gster
import java.awt.*;
import java.awt.event.*;
public class PhoneSimulatorFrame
extends Frame
implements ActionListener
{
private TextField display=null;
public PhoneSimulatorFrame() {
setBounds(100,100,100,200);
setLayout(new BorderLayout());
display=new TextField("");
add(display,BorderLayout.NORTH);
Panel buttons=createButtonsPanel();
add(buttons,BorderLayout.CENTER);
}
public void actionPerformed(ActionEvent event){
Button button=(Button)event.getSource();
String label=button.getLabel();
if(label.equals("Yes")){
String text=display.getText();
if(text.length()==7 || text.length()==11){
System.out.println("Calling "+text);
}else{
System.out.println("Error!");
}
}else if(label.equals("C")){
display.setText("");
}else if(label.equals("No")){
display.setText("");
System.out.println("Cancelled.");
}else{
String text=display.getText();
text=text+label;
display.setText(text);
}
}
private Panel createButtonsPanel(){
Panel buttons=new Panel(new GridLayout(5,3));
addButton(buttons,"Yes");
addButton(buttons,"C");
addButton(buttons,"No");
addButton(buttons,"1");
addButton(buttons,"2");
addButton(buttons,"3");
addButton(buttons,"4");
addButton(buttons,"5");
addButton(buttons,"6");
addButton(buttons,"7");
addButton(buttons,"8");
addButton(buttons,"9");
addButton(buttons,"*");
addButton(buttons,"0");
addButton(buttons,"#");
return buttons;
}
private void addButton(Panel panel,String label){
Button button=new Button(label);
button.addActionListener(this);
panel.add(button);
}
public static void main(String[] args){
PhoneSimulatorFrame frame=new PhoneSimulatorFrame();
frame.setVisible(true);
}
}

Burada frame sadece button'lar dinledii iin event'in


source'u Button'a cast edilmitir. Eer baka bileenleri de
dinleseydi source'un Button olup olmadn kontrol
etmemiz gerekirdi. Bunun iin bir nesnenin belli bir class'n
veye subclass'nn bir instance' olup olmadn kontrol
eden instanceof operatr kullanlr. rnekteki
actionPerformed() aadakine uygun olarak
deitirilmelidir.
Object source=event.getSource();
if(source instanceof Button){
Button button=(Button) source;
}

TextArea
Bir ka satrdan oluan metin girii iin kullanlr.
erisindeki text'in tamam ve seilmi ksmyla ilgili bir
ok method ierir.
TextField
Tek satrlk bilgi girii iin bu component kullanlr.
TextArea'dan bir fark da Enter'a basldnda ActionEvent'i
retebilmesidir.
Label
Kullancnn deitiremeyecei tek satrlk metin iin
kullanlr. levi ekranda belli bir yazy sergilemekten
ibarettir.
Checkbox
Kullancnn bir konudaki tercihini renmek iin kullanlr.
Birden fazla Checkbox bir CheckboxGroup'a eklenirse,
sadece ayn anda sadece birinin seili olabildii radio
button olarak alr.
List
Kullancnn bir liste ierisinden herhangi birini semesi
iin kullanlr. Bir veya daha fazla maddenin seilmesine
olanak tanr. Bir elemann zerinde ift tklama durumunda
ok eleman seilmi olur.
Choice
Birden fazla elemann tklamayla alan bir listeden eleman
seilmesine olanak tanyan bileendir. Ekranda sadece seili
olan elaman gsterir.
Form rnei
ok kullanlann bileenleri ieren bir form rnei yapalm.
Tamam dmesine baslnca kullancnn girdii deerleri
ekrana bassn. Burada sadece dmenin rettii
ActionEvent dinlenmektedir. Aslnda Checkbox,Choice ve
TextField'lar da dinlemek mmkndr. Ama o durumda
kullancnn bilgi girii bitmeden bir tepki verilir ki, form
tr bilgi girilerinde bu pek doru olmaz.
Burada her component grubu ayr bir panel'e konmu, daha
sonra btn paneller ana pencereye yerletirilmitir. Bu
ekilde sadece GirdBagLayout, GridLayout ve
BorderLayout kullanlarak karmak bir form
yaplabilmitir.
Insets class' her bileenin etrafnda kendisine ayrlan
yerden braklacak aral belirler. Bu ekilde bileenlerin
kendi alanlarn tamamen doldurmas, birbirlerine ve en d
snrlara yapmas engellenmi olur.
Bir baka nemli konu da, dmelere ActionListener
eklenmesinin anonymous inner class'larla gerekletirlmi
olmasdr. Bu ekilde ayr bir listener class' yapmaya gerek
duymadan ya da asl class'n ActionListener' implement
etmeye mecbur brakmadan dmeleri dinlemi olduk.
Ayrca birden fazla bileenin dinlenmesine ramen
actionPerformed() methodunda hangi dmeye basldn
anlamak iin herhangi bir ayklma yapmak zorunda
kalmadk. "OK" ve "Cancel" dmeleri ayr ayr
dinlenmektedir.
Dikkat edildiyse rnekte baz bileenler class'da property
olarak tutulmutur. Bunun nedeni, tanmlandklar method
dnda da eriilebilmelerini salamaktr. Aksi taktirde her
deikenin iinde bulunduu '{' ve '}' scope'unun dnda
tannmamas yznden bu bileenlere ve ierisindeki
verilere eriemeyebilirdik.
ComponentFormSample.java Indir Gster Gizle Kopar Satr Gizle Satr Gster
import java.awt.*;
import java.awt.event.*;
public class ComponentFormSample
extends Frame
{
private TextField name=new TextField();
private CheckboxGroup gender=new CheckboxGroup();
private Checkbox[] hobbies=new Checkbox[3];
private Choice education=new Choice();
private TextArea description=new TextArea();
public ComponentFormSample() {
setFont(new Font("Arial",Font.BOLD,12));
setBackground(Color.lightGray);
setBounds(100,100,300,500);
setLayout(new GridBagLayout());
Label label=new Label("INFORMATION FORM",Label.CENTER);
addPart(label,1,1);
Panel names=createNamesPanel();
addPart(names,2,1);
Panel genders=createGendersPanel();
addPart(genders,3,1);
Panel hobbies=createHobbiesPanel();
addPart(hobbies,4,4);
Panel education=createHobbiesPanel();
addPart(hobbies,8,1);
Panel descriptions=createDescriptionsPanel();
addPart(descriptions,9,1);
Panel buttons=createButtonsPanel();
addPart(buttons,10,1);
}
public Insets insets(){
return new Insets(25,15,15,15);
}
private void addPart(Component part,int row,int height){
GridBagConstraints constraints=new GridBagConstraints();
constraints.gridx=0;
constraints.gridy=row;
constraints.gridwidth=1;
constraints.gridheight=height;
constraints.weightx=1.0;
constraints.weighty=1.0;
constraints.fill=GridBagConstraints.BOTH;
constraints.insets=new Insets(5,0,5,0);
add(part,constraints);
}
private Panel createNamesPanel(){
Panel panel=new Panel(new GridLayout(1,2));
panel.add(new Label("Full Name "));
panel.add(name);
return panel;
}
private Panel createGendersPanel(){
Panel panel=new Panel(new GridLayout(1,3));
Checkbox male=new Checkbox("Male",gender,true);
Checkbox female=new Checkbox("Female",gender,false);
panel.add(new Label("Gender"));
Panel boxes=new Panel(new GridLayout(1,2));
boxes.add(male);
boxes.add(female);
panel.add(boxes);
return panel;
}
private Panel createHobbiesPanel(){
Panel panel=new Panel(new GridLayout(4,1));
panel.add(new Label("Hobbies"));
hobbies[0]=new Checkbox("Computer",true);
panel.add(hobbies[0]);
hobbies[1]=new Checkbox("Music",false);
panel.add(hobbies[1]);
hobbies[2]=new Checkbox("Art",false);
panel.add(hobbies[2]);
return panel;
}
private Panel createEducationPanel(){
Panel panel=new Panel(new GridLayout(1,2));
education.add("Primary");
education.add("Secondary");
education.add("High School");
panel.add(new Label("University"));
panel.add(education);
return panel;
}
private Panel createDescriptionsPanel(){
Panel panel=new Panel(new BorderLayout());
Label label=new Label("Description");
panel.add(label,BorderLayout.NORTH);
panel.add(description,BorderLayout.CENTER);
return panel;
}
private Panel createButtonsPanel(){
Panel panel=new Panel(new GridLayout(1,2));
Button ok=new Button("OK");
ok.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
printData();
setVisible(false);
}
}
);
panel.add(ok);
Button cancel=new Button("Cancel");
cancel.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
setVisible(false);
}
}
);
panel.add(cancel);
return panel;
}
private void printData(){
System.out.println("# Name :"+name.getText());
System.out.println("#
Gender :"+gender.getSelectedCheckbox().getLabel());
System.out.println("# Hobbies ");
for(int i=0;i<hobbies.length;i++){
System.out.println(hobbies[i].getLabel()+" : "+
(hobbies[i].getState()?"Yes":"No"));
}
System.out.println("# Description : "+description.getText());
}
public static void main(String[] args){
ComponentFormSample frame=new ComponentFormSample();
frame.setVisible(true);
}
}

You might also like