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);
}
}
} 展开
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);
}
}
} 展开
展开全部
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方法,在里面绘制数组中所有的点,这样你的屏幕上就不会消失了。
public void mypaint()
{
Graphics g=this.GetGraphics();//这句我不清楚了,大概是这个。
if(gx==true)
{
g.drawLine(startX,startY,currentX,currentY);
}
}
然后再run方法中调用这个函数mypaint();
但是还存在一个问题就是你切换屏幕后发现已经绘制的东西消失了,
为此你可以将你绘制的所有点保存到一个数组中(最好是可变的,比如Vector),然后可以调用paint方法,在里面绘制数组中所有的点,这样你的屏幕上就不会消失了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询