编写一个Applet响应鼠标事件,用户可以通过拖动鼠标在Applet中画出矩形,并在状态条中显示鼠标当前位置
时间: 2023-11-22 22:52:13 浏览: 29
以下是一个简单的Applet示例代码,可响应鼠标拖拽事件并在状态栏中显示当前鼠标位置:
```java
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
public class DrawRectangle extends Applet implements MouseListener, MouseMotionListener {
private int startX, startY, endX, endY;
private boolean dragging;
public void init() {
addMouseListener(this);
addMouseMotionListener(this);
}
public void paint(Graphics g) {
if (dragging) {
int width = Math.abs(endX - startX);
int height = Math.abs(endY - startY);
int x = Math.min(startX, endX);
int y = Math.min(startY, endY);
g.drawRect(x, y, width, height);
}
}
public void mousePressed(MouseEvent e) {
startX = e.getX();
startY = e.getY();
dragging = true;
}
public void mouseDragged(MouseEvent e) {
endX = e.getX();
endY = e.getY();
repaint();
showStatus("Mouse position: " + endX + "," + endY);
}
public void mouseReleased(MouseEvent e) {
dragging = false;
}
public void mouseMoved(MouseEvent e) {}
public void mouseClicked(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
}
```
在这个示例中,我们实现了 `MouseListener` 和 `MouseMotionListener` 接口,以便处理鼠标事件。在 `init` 方法中,我们将Applet注册为 `MouseListener` 和 `MouseMotionListener` 的实例,这样我们就可以捕获鼠标事件。在 `mousePressed` 方法中,我们记录鼠标按下时的位置,以便后面计算矩形的大小和位置。在 `mouseDragged` 方法中,我们记录鼠标拖动时的位置,并在状态栏中显示当前鼠标位置。我们还调用 `repaint` 方法来触发 `paint` 方法重新绘制屏幕上的矩形。在 `mouseReleased` 方法中,我们将 `dragging` 标志设置为 `false`,以结束矩形的绘制。最后,在 `paint` 方法中,我们使用 `drawRect` 方法绘制矩形。