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();
    .....
    .....

}

Input/Output Stream ve Reader/Writer'lar ile Çalışmak

Input/Output Stream (aynı durum Reader/Writer'lar için de geçerlidir.) değişkeni try/finally bloğundan önce tanımlanmalı, try bloğu içinde oluşturulmalı ve finally bloğu içinde kapatılmalı (close). Catch bloğu tanımlanmamış olsa dahi finally bloğu tanımlanıp bu işlemler yapılmalıdır.


Örnek:


InputStream is = null;
try {
    is = new FileInputStream(inputFileName);
    is.....
    .......
    .......
}
finally {
    if (is != null) {
        try {
            is.close();
        }
        catch (Exception exc) {
            // logla
        }
}