使用 class 点在 java 自由手绘

free hand drawing in java using class Point

我正在尝试使用 Point class 和 arraylist 在 java 中编写一个简单的自由手绘代码,但我被卡住了。首先,不能真正离开原点,其次,即使不拖动鼠标,两点之间也总是画一条线。

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
    }

}

您需要播种初始 x/y 位置(否则 mn0x0 到第一个点)

类似...

@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;

        }
    }
}

例如

除了Applet在大约16年前被JApplet取代之外,小程序插件不再被Oracle支持,但大多数浏览器都主动阻止它,使其成为一个死胡同技术。

有关详细信息,请参阅 Java Plugin support deprecated and Moving to a Plugin-Free Web