Checkbox kullanimi ve ItemListener sinifi

 

 

Görüldügü gibi uygulamamizda bir adet textfield ve iki adet checkbox mevcut.
Amaç, textfield’deki yaziyi checkbox’lar aracigiyla kalinlik ve egrilik ayarini yapacagiz.
 
Bundan önceki uygulamamizda butonlari kullanmak için ActionListener sinifindan yararlanmistik, bu uygulamamizda ise checkbox’lari kullanmak için ItemListener sinifindan yararlanacagiz.
.
 
import java.awt.*;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.*;
 
publicclass CheckboxSinifi extends JFrame{
                private JTextField txtMetin;
                private JCheckBox cboBold;
                private JCheckBox cboItalic;
               
                public CheckboxSinifi(){
                               super("java – Checkbox kullanimi");
                               setLayout(new FlowLayout());
                              
                               txtMetin = new JTextField("yazilim mutfagi", 20);
                               txtMetin.setFont(new Font("Serif", Font.PLAIN, 14));
                               add(txtMetin);
                              
                               cboBold = new JCheckBox("Kalin yazi");
                               cboItalic = new JCheckBox("Egik yazi");
                               add(cboBold);
                               add(cboItalic);
                              
                               ListenerSinifi ls = new ListenerSinifi();
                               cboBold.addItemListener(ls);
                               cboItalic.addItemListener(ls);
                              
                               pack();                   
                }
               
                private class ListenerSinifi implements ItemListener{
 
                               public void itemStateChanged(ItemEvent e) {
                                               Font font = null;
                                              
                                               if(cboBold.isSelected() && cboItalic.isSelected())
                                                               font = new Font("Serif", Font.BOLD + Font.ITALIC,15);
                                               elseif(cboBold.isSelected())
                                                               font = new Font("Serif", Font.BOLD,15);
                                               elseif(cboItalic.isSelected())
                                                               font = new Font("Serif", Font.ITALIC,15);
                                               else
                                                               font = new Font("Serif", Font.PLAIN, 15);
                                               txtMetin.setFont(font);                                        
                               }                             
                }             
}
ListenerSinifi adli sinifimiza deginmek istiyorum. Olusturdugumuz bu sinifi Java’nin ItemListener sinifindan implemente ettik. ItemListener sinifinda itemStateChanged() adinda bir metot var; bu metodu kullanarak checkbox’larimizdaki degisikliklere tepki verdirecegiz. Filanca checkbox isaretlendiyse su olsun, falanca isaretliyse bu olsun… gibi.
 
Uygulamamizda bir de pack(); adli metot dikkatinizi çekmis olabilir. pack metodu nedir, ne ise yarar? Dikkat ettiyseniz penceremizin boyutunu belirtmedik, ama yine de karsimiza sifira sifir bir pencere çikmadi. Bunun sebebi iste bu pack() metodu. pack metodu komponentleri (textfield, button, checkbox…) pencereye tam sigacak sekilde ayarlar. Sagdan, soldan, alttan ve üstten hiç bosluk birakmaz.
 
Bunu da belirttikten sonra main metodumuzu kullanmaya geldi sira. Ben Main adli bir sinif altinda kullanacagim. Siz isterseniz dogrudan ChechboxSinifi sinifina da ekleyebilirsiniz.
 
publicstaticvoid main(String[] arg){
                               CheckboxSinifi cs = new CheckboxSinifi();
                               cs.setDefaultCloseOperation(cs.EXIT_ON_CLOSE);
                               cs.setVisible(true);
                }
 
 
 

 

 

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir