30 Eylül 2010 Perşembe

Herhangi Bir Sınıfa Listener Desteği Sağlamak

Başka sınıfların bizim sınıfımıza ActionListener olarak kaydolmalarını ve sınıfımızın iç işleyişi sırasında bir durum oluştuğunda actionPerformed olayını atmak istiyoruz. Bunun için sınıfımızda yapmamız gereken tanımlamalar aşağıdaki gibidir.

public class XYZ {
    private ActionListener listenerList;

    .....
    .....
    // diğer sınıflar bu metot aracılığıyla bizim sınıfımızda oluşan olaya kayıt yaptırabilir.
    public void addActionListener(ActionListener listener) {
        if (listener == null) {
            return;
        }
        listenerList = AWTEventMulticaster.add(listenerList, listener);
    }

    // diğer sınıflar bizde gerçekleşen olaylardan artık haberdar olmak istemiyorsa bu metodu kullanmalıdır.
    public void removeActionListener(ActionListener listener) {
        if (listener == null) {
            return;
        }
        listenerList = AWTEventMulticaster.remove(listenerList, listener);
    }
   
    // sınıfımızda oluşan durumda olay atmak için bu metodu kullanacağız.
    private void fireActionEvent() {
        ActionListener listener = listenerList;
        if (listener != null) {
            // burada isterseniz başka source, id ve command parametreleri geçebilirsiniz.
            ActionEvent event = new ActionEvent(this, 0, null);
            listener.actionPerformed(event);
        }
    }

    .....
    .....
        // beklenilen durum gerçekleşti, olay atalım.
        fireActionEvent();
    .....
    .....

}

Hiç yorum yok:

Yorum Gönder