public void initCanvas() { canvas = new Canvas(); shapeList = new ArrayList<Shapes>(); lineList = new ArrayList<Line[]>(); connectorList = new ArrayList<Connector>(); selectedObject = null; canvas.addMouseListener( new MouseAdapter() { public void mousePressed(MouseEvent e) { int x = oldX = e.getX(); int y = oldY = e.getY(); if (shapePressed == SQUARE) { changesMade++; if (changesMade == 1) { title.setText("* " + title.getText()); } canvas.doDraw(x, y); } } public void mouseReleased(MouseEvent e) { canvas.removeDrags(); if (shapePressed == SQUARE) { canvas.doDraw(e.getX(), e.getY()); } canSnap = true; } }); canvas.addMouseMotionListener( new MouseMotionAdapter() { public void mouseDragged(MouseEvent e) { xCord = e.getX(); yCord = e.getY(); coordinates.setText("Coordinates: (" + xCord + ", " + yCord + ")"); if (shapePressed == SQUARE) { if (canSnap) { final int x = e.getX(); final int y = e.getY(); Thread newThread = new Thread() { public void run() { canvas.doDraw(x, y); } }; newThread.start(); try { newThread.join(); } catch (InterruptedException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } } } @Override public void mouseMoved(MouseEvent e) { xCord = e.getX(); yCord = e.getY(); coordinates.setText("Coordinates: (" + xCord + ", " + yCord + ")"); } }); }