java中的repaint()方法工作不正常

java中的repaint()方法工作不正常,java,paint,repaint,Java,Paint,Repaint,我正在做一个在面板上画鼠标位置的程序,该程序工作正常,但大约10秒钟后,它停止画点。。。有什么帮助吗 import java.awt.Color; import java.awt.Graphics; import javax.swing.JPanel; import javax.swing.JFrame; public class Draw extends JPanel { public static int newx; public static int n

我正在做一个在面板上画鼠标位置的程序,该程序工作正常,但大约10秒钟后,它停止画点。。。有什么帮助吗

   import java.awt.Color;
   import java.awt.Graphics;
   import javax.swing.JPanel;
   import javax.swing.JFrame;
    public class Draw extends JPanel {
public static  int newx;
public static  int newy;

   public void paint(Graphics g) {    

  Mouse mouse = new Mouse();
  mouse.start();

int newx = mouse.x;
int newy = mouse.y;
 g.setColor(Color.blue);  
   g.drawLine(newx, newy, newx, newy);
   repaint();




   }

   public static void main(String[] args) {

  JFrame frame = new JFrame("");
  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  frame.setBackground(Color.white);
  frame.setSize(2000,2000 );
  frame.setVisible(true);
  frame.getContentPane().add(new Draw());
  frame.revalidate();
  frame.getContentPane().repaint();


  }
 }

paint
方法中调用
repaint
,导致无限循环。首选在组件上运行定期更新


对于Swing中的自定义绘制,应该覆盖方法
paintComponent
,而不是
paint
,不要忘记调用
super。paintComponent
paint
方法中调用
repaint
,从而导致无限循环。首选在组件上运行定期更新

对于Swing中的自定义绘制,应该覆盖方法
paintComponent
,而不是
paint
,不要忘记调用
super。paintComponent

public void paint(图形g)
应该是
public void paintComponent(图形g)

您不应该在这个方法中调用repaint()

您还应该在此方法之外添加鼠标侦听器

改编自

public void paint(图形g)
应该是
public void paintComponent(图形g)

您不应该在这个方法中调用repaint()

您还应该在此方法之外添加鼠标侦听器

改编自


什么是
鼠标
类?显示其代码。
鼠标
类是什么?显示它的代码。这是真的,它应该是一个无限循环,这就是代码被锁定的原因。更改
newx
newy
等的代码应在
JPanel
上调用
repaint
,而不是调用
repaint()
不立即调用
paint()
paintComponent()
。它只安排在可能的情况下完成。没错,它应该是一个无限循环,这就是代码被锁定的原因。更改
newx
newy
等的代码应在
JPanel
上调用
repaint
,而不是调用
repaint()
不立即调用
paint()
paintComponent()
。它只安排在可能的情况下完成。
public class MouseMotionEventDemo extends JPanel 
                                  implements MouseMotionListener {
    //...in initialization code:
        //Register for mouse events on blankArea and panel.
        blankArea.addMouseMotionListener(this);
        addMouseMotionListener(this);
        ...
    }

    public void mouseMoved(MouseEvent e) {
       Point point = e.getPoint();
       updatePanel(point); //create this method to call repaint() on JPanel.
    }

    public void mouseDragged(MouseEvent e) {
    }


    }
}