我正在尝试使用Point类和arraylist在java中编写一个简单的自由手绘图代码,但我遇到了问题。首先,不能真正离开原点,其次,即使没有拖动鼠标,也总是在2点之间绘制一条线。
public class FreeDraw extends Applet implements MouseMotionListener
{
int x,y,m,n;
ArrayList<Point> al;
public void init()
{
al = new ArrayList<>();
this.addMouseMotionListener(this);
}
public void paint(Graphics g)
{
for(int i=0;i<al.size();i++)
{
m=al.get(i).x;
n=al.get(i).y;
g.drawLine(m,n,x,y);
x=m;
y=n;
}
}
public void mouseDragged(MouseEvent e)
{
al.add(new Point(e.getX(),e.getY()));
repaint();
}
public void mouseMoved(MouseEvent e)
{
//do nothing
}
}
答案 0 :(得分:1)
您需要为初始x / y位置设定种子(否则m
和n
将为0x0
到第一点
像...一样的东西。
@Override
public void paint(Graphics g) {
super.paint(g);
if (!al.isEmpty()) {
int x = al.get(0).x;
int y = al.get(0).y;
for (int i = 1; i < al.size(); i++) {
m = al.get(i).x;
n = al.get(i).y;
g.drawLine(m, n, x, y);
x = m;
y = n;
}
}
}
例如。
除了大约16年前Applet
被JApplet
取代的事实之外,Oracle不再支持applet插件,但大多数浏览器都会主动阻止它,使其成为死胡同技术
有关详细信息,请参阅Java Plugin support deprecated和Moving to a Plugin-Free Web