使用类Point的java中的自由手绘图

时间:2016-02-16 08:45:26

标签: java applet mouselistener

我正在尝试使用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
    }

}

1 个答案:

答案 0 :(得分:1)

您需要为初始x / y位置设定种子(否则mn将为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年前AppletJApplet取代的事实之外,Oracle不再支持applet插件,但大多数浏览器都会主动阻止它,使其成为死胡同技术

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