1. Modify the program below so that listener classes are derived from the approp
ID: 3763197 • Letter: 1
Question
1. Modify the program below so that listener classes are derived from the appropriate adapter classes for handling mouse events. Also, remove all unnecessary code. Hint, mousePressed is defined in MouseAdapter and MOuseDragged- in MouseMotionAdapter.
Public class RubberLinesPanel extends JPanel
{
private Point point1 = null, point2 = null;
public RubberLinesPanel ()
{
LineListener listener = new LineListener ();
addMouseListener (listener);
addMouseMotionListener (listener);
SetBackground (Color. Black);
setPreferredSize (new Dimension (400, 200));
}
public void paintComponent (Graphics page)
{
super.PaintComponent (page);
page.setColor (Color.yellow);
if (point1! = null && point2! = null)
page.drawLine (point1.x, point1.y, point2.x, point2.y);
}
Private class LineListener implements MouseListener, MouseMotionListener {
public void mousePressed (MouseEvent event)
{
point1 = event.getPoint ();
}
public void mouseDragged (MouseEvent event)
{
point2 = event.getPoint ();
repaint ();
}
public void mouseClicked (MouseEvent event)
{
}
Public void mouseReleased (MouseEvent event)
{
}
Public void mouseEntered (MouseEvent event)
{
}
Public void mouseExited (MouseEvent event)
{
}
Public void mouseMoved (MouseEvent event)
{
}
}
}
Explanation / Answer
Program code:
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.Frame;
import java.awt.Graphics;
@SuppressWarnings("serial")
public class RubberLinesPanel extends Frame implements MouseListener {
int p = 0, q = 0;
String eventString = "";
RubberLinesPanel(String name) {
super(name);
addWindowListener(new LineListener(this));
addMouseListener(this);
setSize(250, 250);
setVisible(true);
}
public void mouseClicked(MouseEvent e) {
eventString = "Mouse Clicked at location";
p = e.getX();
q = getY();
repaint();
}
public void mousePressed(MouseEvent e) {
eventString = "Mouse Pressed at location";
p = e.getX();
q = getY();
repaint();
}
public void mouseReleased(MouseEvent e) {
eventString = "Mouse Released at location";
p = e.getX();
q = getY();
repaint();
}
public void mouseEntered(MouseEvent e) {
eventString = "Mouse Entered at location";
p = e.getX();
q = getY();
repaint();
}
public void mouseExited(MouseEvent e) {
eventString = "Mouse Exited at location";
p = e.getX();
q = getY();
repaint();
}
public void paint(Graphics g) {
g.drawString(eventString + +p + "," + q, 50, 50);
}
@SuppressWarnings("unused")
public static void main(String[] args) {
RubberLinesPanel window = new RubberLinesPanel("HANDLING MOUSE EVENTS");
}
}
class LineListener extends WindowAdapter {
RubberLinesPanel myWindow = null;
LineListener(RubberLinesPanel myWindow) {
this.myWindow = myWindow;
}
public void windowClosing(WindowEvent we) {
myWindow.setVisible(false);
}
}
Sample output:
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.