java中的repaint()方法工作不正常
我正在做一个在面板上画鼠标位置的程序,该程序工作正常,但大约10秒钟后,它停止画点。。。有什么帮助吗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
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。paintComponentpublic 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) {
}
}
}