Java 使用sleep命令绘制线

Java 使用sleep命令绘制线,java,graphics,drawing,line,Java,Graphics,Drawing,Line,我的目标是得到这样的结果: 灰色的线是鼠标的路径,黑色的线是你在屏幕上看到的线,但是我有两个问题 新行之前的行消失(我希望它保持不变) 线绘制是滞后的,仅在鼠标静止时绘制 公共类Press extends小程序实现MouseMotionListener{ public int count; public int x1, y1, x2, y2; public void init(){ this.addMouseMotionListener(this); } public Press(

我的目标是得到这样的结果:

灰色的线是鼠标的路径,黑色的线是你在屏幕上看到的线,但是我有两个问题

  • 新行之前的行消失(我希望它保持不变)
  • 线绘制是滞后的,仅在鼠标静止时绘制

    公共类Press extends小程序实现MouseMotionListener{

    public int count;
    public int x1, y1, x2, y2;
    
    public void init(){
        this.addMouseMotionListener(this);
    }
    
    public Press(){
        count = 0;
    }
    
    public void paint (Graphics g) {
        Graphics2D g2 = (Graphics2D) g;
        g2.draw(new Line2D.Double(x1, y1, x2, y2));
        repaint();
    }
    
        public void clickup(){
        count++;
        }
    
        public void mouseDragged(MouseEvent e){
        x1 = x2;
        y1 = y2;
        x2 = e.getX();
        y2 = e.getY();
        System.out.println("x: " + x2 + " y: " + y2 + " Count: " + count);
        clickup();
        try {
            Thread.sleep(100);
        } catch (InterruptedException e1) {
            e1.printStackTrace();
        }
    
        }
    
        public void mouseMoved(MouseEvent e) {
        }
    
    public static void main(String[] args) {
        Press mouse = new Press();
        }
    
    }


  • 实现这一点的方法是使用(缓冲)图像,在paint中绘制图像,并在鼠标事件处理程序中绘制图像

    1-不要在事件调度线程内使用
    线程。休眠
    ;2-将要绘制的点添加到某种类型的
    列表
    ,每次调用
    绘制
    时,重新绘制
    列表中的所有点