你可以写一个Line类来表示这个线段
public class Line{
//保存相对位置,所以只要设其终点
private int endX;
private int endY;
...
}然后在画图的容器里用数组或者List保存图形
并保存一个当前活动的图形(就是你想跟着鼠标动的这个图形,如果是多个,就用List或者数组表示)
然后就是这个容器相应鼠标的move事件了,实现这个事件监听器就可以了
实现MouseMotionListener接口来监听MouseMotion事件
实现mouseMoved()方法
component.addMouseMotionListener(new MouseMotionAdapter(){
public void mouseDragged(MouseEvent e){}
public void mouseMoved(MouseEvent e){
Point p=e.getPoint();
//利用这个点重绘画面
}
});
public class Line{
//保存相对位置,所以只要设其终点
private int endX;
private int endY;
...
}然后在画图的容器里用数组或者List保存图形
并保存一个当前活动的图形(就是你想跟着鼠标动的这个图形,如果是多个,就用List或者数组表示)
然后就是这个容器相应鼠标的move事件了,实现这个事件监听器就可以了
实现MouseMotionListener接口来监听MouseMotion事件
实现mouseMoved()方法
component.addMouseMotionListener(new MouseMotionAdapter(){
public void mouseDragged(MouseEvent e){}
public void mouseMoved(MouseEvent e){
Point p=e.getPoint();
//利用这个点重绘画面
}
});
这是我其中一个画直线的程序啊
import java.awt.Graphics;
import java.awt.Point;
import java.awt.Event;
import java.applet.Applet;public class DrawLine extends Applet {
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.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);
}
}
我的QQ是99198044 希望chanceqw() LemonHunter(太阳花) 能加一下我啊~帮我一下啊~
或在此给点例子我啊好吗?我已经头都大了