小程序重绘频率
Applet repaint frequency
我想用小程序创建一条橡皮筋线。这是我的代码:
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.util.Vector;
public class RubberLines extends Applet implements MouseMotionListener {
public void init() {
addMouseMotionListener(this);
}
public void mouseDragged(MouseEvent e) {
draw=true;
X.add(e.getX());
Y.add(e.getY());
System.out.println(X.get(0));
System.out.println("mouse is being dragged at location (" + e.getX() + ", " + e.getY() + ")");
}
public void mouseMoved(MouseEvent e) {
System.out.println("mouse is being moved at location (" + e.getX() + ", " + e.getY() + ")");
}
public void paint(Graphics g) {
initX=X.get(0);
initY=Y.get(0);
finalX=X.get(X.size()-1);
finalY=Y.get(Y.size()-1);
//g.drawLine(0, 0, 100, 100);
if(draw)
g.drawLine(initX, initY, finalX, finalY);
g.setColor(Color.green);
System.out.println(initX);
System.out.println(finalY);
//repaint();
}
int initX,initY;
int finalX,finalY;
Vector<Integer> X=new Vector<Integer>();
Vector<Integer> Y=new Vector<Integer>();
boolean draw=false;
}
但是,当我拖动鼠标时,直到我改变了小程序的大小(这意味着重新绘制),这条线才出现。但是当我添加 repaint()
时,小程序会不停地重新绘制自己。
如何理解这个repaint()
以及如何解决这个问题?
但是当我添加 repaint() 时,小程序会不停地重绘自己。
不要在绘画方法中调用 repaint()。
改为将 repaint() 添加到 mouseDragged() 方法,因为这是生成事件的地方。
此外,不要忘记在您的绘画方法中调用super.paint()
。
我想用小程序创建一条橡皮筋线。这是我的代码:
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.util.Vector;
public class RubberLines extends Applet implements MouseMotionListener {
public void init() {
addMouseMotionListener(this);
}
public void mouseDragged(MouseEvent e) {
draw=true;
X.add(e.getX());
Y.add(e.getY());
System.out.println(X.get(0));
System.out.println("mouse is being dragged at location (" + e.getX() + ", " + e.getY() + ")");
}
public void mouseMoved(MouseEvent e) {
System.out.println("mouse is being moved at location (" + e.getX() + ", " + e.getY() + ")");
}
public void paint(Graphics g) {
initX=X.get(0);
initY=Y.get(0);
finalX=X.get(X.size()-1);
finalY=Y.get(Y.size()-1);
//g.drawLine(0, 0, 100, 100);
if(draw)
g.drawLine(initX, initY, finalX, finalY);
g.setColor(Color.green);
System.out.println(initX);
System.out.println(finalY);
//repaint();
}
int initX,initY;
int finalX,finalY;
Vector<Integer> X=new Vector<Integer>();
Vector<Integer> Y=new Vector<Integer>();
boolean draw=false;
}
但是,当我拖动鼠标时,直到我改变了小程序的大小(这意味着重新绘制),这条线才出现。但是当我添加 repaint()
时,小程序会不停地重新绘制自己。
如何理解这个repaint()
以及如何解决这个问题?
但是当我添加 repaint() 时,小程序会不停地重绘自己。
不要在绘画方法中调用 repaint()。
改为将 repaint() 添加到 mouseDragged() 方法,因为这是生成事件的地方。
此外,不要忘记在您的绘画方法中调用super.paint()
。