Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision |
| oop:adapter_pattern [2026/05/24 21:06] – [java.util.Arrays#asList()] gthanos | oop:adapter_pattern [2026/05/24 21:08] (current) – [WindowAdapter, MouseAdapter (στο java.awt.event)] gthanos |
|---|
| |
| * **Το πρόβλημα:** Το interface ''MouseListener'' έχει 5 μεθόδους (mouseClicked, mousePressed, mouseReleased, mouseEntered, mouseExited). Αν ο προγραμματιστής θέλει να γράψει κώδικα μόνο για το click, η Java θα τον ανάγκαζε να κάνει override και τις 5 μεθόδους, αφήνοντας τις 4 κενές, γεμίζοντας τον κώδικα με "θόρυβο". | * **Το πρόβλημα:** Το interface ''MouseListener'' έχει 5 μεθόδους (mouseClicked, mousePressed, mouseReleased, mouseEntered, mouseExited). Αν ο προγραμματιστής θέλει να γράψει κώδικα μόνο για το click, η Java θα τον ανάγκαζε να κάνει override και τις 5 μεθόδους, αφήνοντας τις 4 κενές, γεμίζοντας τον κώδικα με "θόρυβο". |
| * **Η λύση (Adapter):** Η Java παρέχει την κλάση ''MouseAdapter''. Αυτή η κλάση υλοποιεί το //interface// ''MouseListener'' και δίνει κενές (empty) υλοποιήσεις για όλες τις μεθόδους. Κληρονομείς τον //MouseAdapter// και κάνεις //override// μόνο τη μέθοδο που σε ενδιαφέρει. | * **Η λύση (Adapter):** Η Java παρέχει την κλάση ''MouseAdapter''. Αυτή η κλάση υλοποιεί το //interface// ''MouseListener'' και δίνει κενές (empty) υλοποιήσεις για όλες τις μεθόδους. Κληρονομείς τον //MouseAdapter// και κάνεις //override// μόνο τη μέθοδο που σε ενδιαφέρει, αγνοώντας τις υπόλοιπες. |
| | |
| | <code java> |
| | // Αντί για "implements MouseListener" (που θέλει 5 μεθόδους) |
| | // χρησιμοποιούμε τον MouseAdapter και γράφουμε μόνο μία |
| | button.addMouseListener(new MouseAdapter() { |
| | @Override |
| | public void mouseClicked(MouseEvent e) { |
| | System.out.println("Left mouse button clicked!"); |
| | } |
| | }); |
| | </code> |
| |
| |