What is wrong with the following code Give two effective way
What is wrong with the following code? Give two effective ways to fix it.
1 import javax.swing.*;
2 import java.awt.event.*;
3
4 public class H2ClassJ extends JFrame {
5 public static final long serialVersionUID = 22;
6
7 public H2ClassJ () {
8 addMouseListener (new MouseListener () {
9 public void mouseClicked (MouseEvent e) {}
10 });
11 } // end constructor
12
13 } // end class H2ClassJ
Solution
wrong:-
The listener interface MouseListener has 5 abstract methods.So the class H2ClassJ must be declared abstract or it must implement all abstract methods of MouseListener interface
the methods are
public void mouseClicked (MouseEvent e) {}
public void mousePressed (MouseEvent e)
public void mouseReleased (MouseEvent e) {}
public void mouseEntered (MouseEvent e) {}
public void mouseExited (MouseEvent e) {}
But only mouseClicked is implemented.
solution:
To fix the problem
1. implement all methods (as above)
2. Use an Adapter class(MouseAdapter) and implement public void mouseClicked (MouseEvent e) method
Example -1 : for solution-1
import javax.swing.*;
import java.awt.event.*;
public class H2ClassJ extends JFrame {
public static final long serialVersionUID = 22;
public H2ClassJ () {
addMouseListener (new MouseListener () {
public void mouseClicked (MouseEvent e) {}
public void mousePressed (MouseEvent e) {}
public void mouseReleased (MouseEvent e) {}
public void mouseEntered (MouseEvent e) {}
public void mouseExited (MouseEvent e) {}
});
} // end constructor
} // end class H2ClassJ
Example-2:for solution-2 :just replace MouseListener with MouseAdapter
import javax.swing.*;
import java.awt.event.*;
public class H2ClassJ extends JFrame {
public static final long serialVersionUID = 22;
public H2ClassJ () {
addMouseListener (new MouseAdapter() {
public void mouseClicked (MouseEvent e) {}
});
} // end constructor
} // end class

