Supaya suatu event berarti, suatu program harus bisa mendeteksi event  dan bereaksi akan event tersebut. Untuk mendeteksi suatu event, suatu  program harus mendengarkannya. Mendengarkan event ini dilakukan oleh  objek yang berna,a 
pendengar event  (event listener). Objek listener harus memiliki metode instansi untuk  menangani event yang didengarkannya. Bentuknya bervariasi tergantung  dari jenis event yang ditanganinya.
Ada beberapa hal detail yang harus diingat untuk bisa bekerja dengan event. Beberapa langkah yang harus diingat :
1. Menambahkan import paket yang dibutuhkan, misalnya "org.eclipse.swt.events"
2. Mendeklarasikan kelas yang mengimplementasikan interface suatu listener
3. Menambahkan aksi yang dilakukan oleh kelas baru tersebut. Aksi ini adalah aksi yang dilakukan untuk menangani suatu event
4. Mendaftarkan event tersebut ke komponen yang mungkin memberikan event.
Objek  apapun bisa bertindah sebagai event listener asalkan ia  mengimplementasikan interface yang tepat. Suatu komponen dapat  mendengarkan event yang dihasilkannya sendiri. Suatu kelas dapat dibuat  secara khusus hanya untuk mendengarkan suatu event. Kebanyakan orang  menganggap lebih mudah untuk menggunakan kelas bertingkat anonim untuk  mendengarkan suatu objek. (Kelas bertingkat anonim telah dibahas  sebelumnya 
di sini).
Seperti  hanya Event, SWT memiliki dua jenis listener : tanpa tipe dan bertipe.  Masing-masing digunakan untuk menangani event tanpa tipe dan event  bertipe.
Listener Tanpa Tipe (untuk menangani event tanpa tipe)
nterface generik yang digunakan untuk menangai event tanpa tipe dinamakan 
Listener. Listener tanpa tipe dapat ditambahkan pada suatu widget dengan menggunakan metode 
addListener().
Metode 
addListener() memiliki bentuk seperti
addListener(int jenisEvent, Listener listener)
Metode ini akan menambah 
listener  ke dalam koleksi listener yang akan dipanggil ketika event tipe  tertentu terjadi. Ketika suatu event terjadi, maka listener akan  dipanggil dengan menggunakan metode 
handleEvent().
Contoh  berikut mengilustrasikan bagaimana menambah suatu Listener ke dalam  suatu widget, yang akan dipanggil ketika event SWT.Dispose terjadi.
widget.addListener(SWT.Dispose, new Listener() {
    public void handleEvent(Event event) {
        // widget was disposed
    }
});Perhatikan bahwa bentuk di atas menggunakan kelas anonim yang  langsung diturunkan dari interface Listener. Di dalam kelas anonim  tersebut, metode 
handleEvent() harus diimplementasikan, di mana implementasinya adalah tugas yang harus dilakukan ketika widget dihapus.
Jika  beberapa listener ditambahkan, maka mereka akan dipanggil dengan urutan  ketika mereka ditambahkan (first in first called). Artinya listener  pertama diberi kesempatan untuk mengolah event (mungkin untuk memfilter  sejumlah data) sebelum listener lain melakukan tugasnya. Kita juga bisa  menambah listener yang sama beberapa kali, yang artinya listener  tersebut akan dipanggil beberapa kali.
Kita bisa menghapus listener dari suatu widget dengan menggunakan metode 
removeListener(). Bentuknya adalah sebagai berikut
removeListener(int jenhsEvent, Listener listener)Untuk  menghapus suatu listener, kita harus memberikan instansi yang persisi  sama ketika listener tersebut ditambahkan. JIka beberapa instansi  listener yang sama sudah ditambahkan sebelumnya, maka kita harus  menghapusnya berulang kali sejumlah ia ditambahkan. Secara umum,  menghapus suatu listener mungkin tidak diperlukan. Listener akan diambil  oleh pemulung memori ketika suatu widget dihapus dan listener ini tidak  lagi digunakan di manapun di dalam program.
Kita juga bisa memanggil suatu listener untuk melakukan tugas tertentu, yaitu dengan menggunakan metode 
notifyListeners, yang memiliki bentuk seperti
notifyListeners(int jenisEvent, Event event)jenisEvent  adalah jenis event yang akan dilakukan, dan Event adalah objek yang  berisi event yang akan dilakukan. Hal penting yang harus dicatat adalah  memanggil metode 
notifyListeners() tidak menyebabkan event akan benar-benar terjadi. Misalnya memanggil 
notifyListeners() dengan jenis 
SWT.MouseDown tidak akan menyebabkan tombol terlihat seperti ditekan. Dan juga memanggil 
notifyListeners() tidak menjamin bahwa semua data pada event terinisialisasi seperti pada event sesungguhnya.
Listener Bertipe (untuk menangani Event bertipe)
Karena  event bertipe dibuat mengikuti pola listener pada JavaBeans, penggunaan  listener bertipe sangat mirip dengan penggunaan listener pada  AWT/Swing.
Misalnya untuk mendengarkan event ketika suatu widget dihapus, maka aplikasi bisa menggunakan 
addDisposeListener(), yang memiliki bentuk seperti
addDisposeListener(DisposeListener listener)Metode  ini menambahkan listener ke dalam koleksi listener yang akan dipanggil  ketike suatu widget dihapus. Ketika suatu widget dihapus, maka listener  akan dipanggil dengan memanggil metode widgetDisposed().
Potongan kode berikut digunakan untuk menangani event ketika suatu widget dihapus.
widget.addDisposeListener(new DisposeListener() {
    public void widgetDisposed(DisposeEvent dvent) {
        // widget was disposed
    }
});DisposeListener  adalah suatu interface. Jika ada lebih dari satu metode yang  didefinisikan dalam listener, maka SWT akan secara otomatis menambahkan  kelas adapter yang berisi implementasi kosong dari metode-metode yang  didefinisikan pada interface tersebut. Misalnya interface 
SelectionListener memiliki dua metode, yaitu 
widgetSelected() dan 
widgetDefaultSelected, yang keduanya mengambil argumen bertipe 
SelectionEvents. Dalam hal ini kelas 
SelectionAdapter  tersedia untuk memberikan implementasi kosong untuk setiap metode.  Kelas adapter ini hanyalah sebagai kelas bantu yang sesuai dengan  konvensi pada listener JavaBeans.
Listener bertipe bisa dihapus  dengan menggunakan metode penghapus untuk setiap listner. Misalnya,  listener untuk event ketika suatu widget dihapus bisa dibuang dengan  menggunakan 
removeDisposeListener(), yang memiliki bentuk 
removeDisposeListener(DisposeListener listener)listener adalah objek listener yang akan dihapus dari koleksi listener yang dipanggil ketika widget dihapus.
Tabel  berikut merangkum event bertipe, nama interface listener yang  menanganinya, serta metode pada interface tersebut, dibandingkan dengan  listener tanpa tipe.
| Event Bertipe | Interface Listener | Metode | Jenis Event Tanpa Tipe | 
| ArmEvent | ArmListener | widgetArmed(ArmEvent) | SWT.Arm | 
| ControlEvent | ControlListener (dan ControlAdapter) | controlMoved(ControlEvent) 
controlResized(ControlEvent) | SWT.Move 
SWT.Resize | 
| DisposeEvent | DisposeListener | widgetDisposed(DisposeEvent) | SWT.Dispose | 
| FocusEvent | FocusListener (dan FocusAdapter) | focusGained(FocusEvent) 
focusLost(FocusEvent) | SWT.FocusIn 
SWT.FocusOut | 
| HelpEvent | HelpListener | helpRequested(HelpEvent) | SWT.Help | 
| KeyEvent | KeyListener (dan KeyAdapter) | keyPressed(KeyEvent) 
keyReleased(keyEvent) | SWT.KeyDown 
SWT.KeyUp | 
| MenuEvent | MenuListener (dan MenuAdapter) | menuHidden(MenuEvent) 
menuShown(MenuEvent) | SWT.Hide 
SWT.Show | 
| ModifyEvent | ModifyListener | modifyText(ModifyEvent) | SWT.Modify | 
| MouseEvent | MouseListener (dan MouseAdapter) | mouseDoubleClick(MouseEvent) 
mouseDown(MouseEvent) 
mouseUp(MouseEvent) | SWT.MouseDoubleClick 
SWT.MouseDown 
SWT.MouseUp | 
| MouseEvent | MouseMoveListener | mouseMove(MouseEvent) | SWT.MouseMove | 
| MouseEvent | MouseTrackListener (dan MouseTrackAdapter) | mouseEnter(MouseEvent) 
mouseExit(MouseEvent) 
mouseHover(MouseEvent) | SWT.MouseEnter 
SWT.MouseExit 
SWT.MouseHover | 
| PaintEvent | PaintListener | paintControl(PaintEvent) | SWT.Paint | 
| SelectionEvent | SelectionListener (dan SelectionAdapter) | widgetDefaultSelected(SelectionEvent) 
widgetSelected(SelectionEvent) | SWT.DefaultSelection 
SWT.Selection | 
| ShellEvent | ShallListener (dan ShellAdapter) | shellActivated(ShellEvent) 
shellClosed(ShellEvent) 
shellDeactivated(ShellEvent) 
shellIconified(ShellEvent) 
shellDeiconified(ShellEvent) | SWT.Activate 
SWT.Close 
SWT.Deactivate 
SWT.Iconify 
SWT.Deiconify | 
| TraverseEvent | TraverseListener | keyTraversed(TraverseEvent) | SWT.Traverse | 
| TreeEvent | TreeListener (dan TreeAdapter) | treeCollapsed(TreeEvent) 
treeExpanded(TreeEvent) | SWT.Collapse 
SWT.Expand | 
| VerifyEvent | VerifyListener | verifyText(VerifyEvent) | SWT.Verify |