📄 mousetest.java
字号:
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.awt.geom.*;
import javax.swing.*;
public class MouseTest extends JApplet {
public void init() {
MousePanel panel = new MousePanel();
getContentPane().add(panel);
}
}
class MousePanel extends JPanel {
private static final int SAIZ = 10;
private ArrayList segi4;
private Rectangle2D rect;
public MousePanel() {
segi4 = new ArrayList();
rect = null;
addMouseListener(new MouseHandler());
addMouseMotionListener(new MouseMotionHandler());
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
for(int i=0; i<segi4.size(); i++)
g2.draw( (Rectangle2D) segi4.get(i));
}
public Rectangle2D find(Point2D p) {
for (int i=0; i < segi4.size(); i++) {
Rectangle2D r = (Rectangle2D) segi4.get(i);
if (r.contains(p))
return r;
}
return null;
}
public void add(Point2D p) {
double x = p.getX();
double y = p.getY();
rect = new Rectangle2D.Double(x-SAIZ/2, y-SAIZ/2, SAIZ, SAIZ);
segi4.add(rect);
repaint();
}
public void remove(Rectangle2D r) {
if (r == null)
return;
if (r == rect)
rect = null;
segi4.remove(r);
this.repaint();
}
private class MouseHandler extends MouseAdapter {
public void mousePressed(MouseEvent e) {
rect = find(e.getPoint());
if (rect == null)
add(e.getPoint());
}
public void mouseClicked(MouseEvent e) {
rect = find(e.getPoint());
if (rect != null && e.getClickCount() >= 2)
remove(rect);
}
}
private class MouseMotionHandler implements MouseMotionListener {
public void mouseMoved(MouseEvent e) {
if (find(e.getPoint()) == null)
setCursor(Cursor.getDefaultCursor());
else
setCursor(Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR));
}
public void mouseDragged(MouseEvent e) {
if (rect != null) {
int x = e.getX();
int y = e.getY();
rect.setFrame(x-SAIZ/2, y-SAIZ/2, SAIZ, SAIZ);
repaint();
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -