java 画线问题 为什么线画出来后就自动没了?怎么才能静止下来

importjava.awt.*;importjava.awt.event.*;publicclassEx13_2extendsFrameimplementsRunnab... import java.awt.*;
import java.awt.event.*;
public class Ex13_2 extends Frame implements Runnable
{
int currentX,currentY;
int startX,startY;
public static void main(String []args)
{
Ex13_2 workstart=new Ex13_2();
}
public Ex13_2()
{
super("Ex13_2");
setSize(350,350);

enableEvents(AWTEvent.MOUSE_EVENT_MASK);
enableEvents(AWTEvent.WINDOW_EVENT_MASK);
enableEvents(AWTEvent.MOUSE_MOTION_EVENT_MASK);

setVisible(true);
new Thread(this).start();
}

public void processWindowEvent(WindowEvent e)
{
if(e.getID()==WindowEvent.WINDOW_CLOSING)
{
System.exit(0);
}
}

public void processMouseMotionEvent(MouseEvent e)
{ //这里加了一个函数并且把processMouseEvent函数中的鼠标移动判断移到这里
if(e.getID()==MouseEvent.MOUSE_MOVED || e.getID()==MouseEvent.MOUSE_DRAGGED)
{
currentX=e.getX();
currentY=e.getY();
repaint();
}
}

public void processMouseEvent(MouseEvent e)
{
if(e.getID()==MouseEvent.MOUSE_PRESSED)
{
startX=e.getX();
startY=e.getY();
}

}
public void run()
{
while(true)
{
repaint();
try{Thread.sleep(30);}
catch(InterruptedException e){;}
}
}
public void paint(Graphics g)
{
if(gx==true)
{
g.drawLine(startX,startY,currentX,currentY);
}
}

}
展开
 我来答
Eking2000
2012-04-07 · TA获得超过1228个赞
知道小有建树答主
回答量:1471
采纳率:0%
帮助的人:729万
展开全部
public void paint(Graphics g)这个函数在使用时会自动清屏,因此为了防止它自动清屏,可以再定义一个方法,比如:
public void mypaint()
{
Graphics g=this.GetGraphics();//这句我不清楚了,大概是这个。
if(gx==true)
{
g.drawLine(startX,startY,currentX,currentY);
}
}
然后再run方法中调用这个函数mypaint();
但是还存在一个问题就是你切换屏幕后发现已经绘制的东西消失了,
为此你可以将你绘制的所有点保存到一个数组中(最好是可变的,比如Vector),然后可以调用paint方法,在里面绘制数组中所有的点,这样你的屏幕上就不会消失了。
清逸隐士
2012-04-06 · 超过28用户采纳过TA的回答
知道答主
回答量:129
采纳率:0%
帮助的人:78.9万
展开全部
飘过
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式