public class MouseMove extends Applet { /** * */ private static final long serialVersionUID = 1L; final int MaxLines = 20; int CurrentLines = 0; Point LineStarts[] = new Point[MaxLines]; Point LineEnds[] = new Point[MaxLines]; Point StartPoint, CurrentPoint; String CurrentMessage = "";
// 按下鼠标按键时会被调用的方法 public boolean mouseDown(Event evt, int x, int y) { if (CurrentLines < MaxLines) { StartPoint = new Point(x, y); CurrentPoint = new Point(x, y); CurrentMessage = "线段: (" + x + ", " + y + ")" + " – (" + x + ", "+ y + ")"; System.out.println("线段开始位置: (" + x + ", " + y + ")"); repaint(); } else System.out.println("太多线段了... "); return true; }
// 放开鼠标按键时会被调用的方法 public boolean mouseUp(Event evt, int x, int y) { if (CurrentLines < MaxLines) { CurrentPoint = new Point(x, y); LineStarts[CurrentLines] = StartPoint; LineEnds[CurrentLines ++] = CurrentPoint; System.out.println("线段结束位置: (" + x + ", " + y + ")"); StartPoint = null; CurrentPoint = null; repaint(); } return true; }
// 移动鼠标指标时, 会被调用的方法 (鼠标按键被按下的状态) public boolean mouseDrag(Event evt, int x, int y) { if (CurrentLines < MaxLines) { CurrentPoint = new Point(x, y); CurrentMessage = "线段: ("+ StartPoint.x + ", " + StartPoint.y + ")" + " – (" + x + ", " + y + ")"; repaint(); } return true; }
// 移动鼠标指标时, 会被调用的方法 (鼠标按键没有被按下的状态) public boolean mouseMove(Event evt, int x, int y) { CurrentMessage = "你把鼠标移到 (" + x + ", " + y + ") 了"; repaint(); return true; }
public void paint(Graphics g) { int I; g.setColor(Color.BLUE); // 印出现在的讯息 g.drawString(CurrentMessage, 5, 15); // 画出线段 for (I = 0;I < CurrentLines;I ++) g.drawLine(LineStarts[I].x, LineStarts[I].y, LineEnds[I].x, LineEnds[I].y); // 现在正在拖曳的线段 if (StartPoint != null) g.drawLine(StartPoint.x, StartPoint.y, CurrentPoint.x, CurrentPoint.y); } }
private lastY = -1;
public void mouseDragged(MouseEvent e){
int y = e.getY();
if(lastY != -1){
System.out.println((y > lastY ? "Up" : "Down") + " to (" + e.getX() + ", " + y + ")");
}
lastY = y;
}
}
import java.awt.Graphics;
import java.awt.Point;
import java.awt.Event;
import java.applet.Applet;
public class MouseMove extends Applet {
/**
*
*/
private static final long serialVersionUID = 1L;
final int MaxLines = 20;
int CurrentLines = 0;
Point LineStarts[] = new Point[MaxLines];
Point LineEnds[] = new Point[MaxLines];
Point StartPoint, CurrentPoint;
String CurrentMessage = "";
// 按下鼠标按键时会被调用的方法
public boolean mouseDown(Event evt, int x, int y) {
if (CurrentLines < MaxLines) {
StartPoint = new Point(x, y);
CurrentPoint = new Point(x, y);
CurrentMessage = "线段: (" + x + ", " + y + ")"
+ " – (" + x + ", "+ y + ")";
System.out.println("线段开始位置: (" + x + ", " + y + ")");
repaint();
}
else
System.out.println("太多线段了... ");
return true;
}
// 放开鼠标按键时会被调用的方法
public boolean mouseUp(Event evt, int x, int y) {
if (CurrentLines < MaxLines) {
CurrentPoint = new Point(x, y);
LineStarts[CurrentLines] = StartPoint;
LineEnds[CurrentLines ++] = CurrentPoint;
System.out.println("线段结束位置: (" + x + ", " + y + ")");
StartPoint = null;
CurrentPoint = null;
repaint();
}
return true;
}
// 移动鼠标指标时, 会被调用的方法 (鼠标按键被按下的状态)
public boolean mouseDrag(Event evt, int x, int y) {
if (CurrentLines < MaxLines) {
CurrentPoint = new Point(x, y);
CurrentMessage = "线段: ("+ StartPoint.x + ", "
+ StartPoint.y + ")" + " – (" + x + ", " + y + ")";
repaint();
}
return true;
}
// 移动鼠标指标时, 会被调用的方法 (鼠标按键没有被按下的状态)
public boolean mouseMove(Event evt, int x, int y) {
CurrentMessage = "你把鼠标移到 (" + x + ", " + y + ") 了";
repaint();
return true;
}
public void paint(Graphics g) {
int I;
g.setColor(Color.BLUE);
// 印出现在的讯息
g.drawString(CurrentMessage, 5, 15);
// 画出线段
for (I = 0;I < CurrentLines;I ++)
g.drawLine(LineStarts[I].x, LineStarts[I].y,
LineEnds[I].x, LineEnds[I].y);
// 现在正在拖曳的线段
if (StartPoint != null)
g.drawLine(StartPoint.x, StartPoint.y,
CurrentPoint.x, CurrentPoint.y);
}
}