java 画笔会自动消失_java 画线问题 为什么线画出来后就自动没了?怎么才能静止下来...

在Java编程中,遇到一个常见问题:使用Graphics对象画线后,线条会自动消失。该问题可能源于不正确的重绘机制。通过分析`Ex13_2`类的代码,发现当鼠标移动时,`repaint()`被调用,导致画布不断重绘并清除先前的线条。为解决此问题,可以调整重绘策略,确保线条不会被清除。关键在于正确处理鼠标事件和重绘请求。
摘要由CSDN通过智能技术生成

importjava.awt.*;importjava.awt.event.*;publicclassEx13_2extendsFrameimplementsRunnable{intcurrentX,currentY;intstartX,startY;publicstaticvoidmain(String[]args){Ex13_2wor...

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);

}

}

}

展开

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值