Square Mover



Instructions:  1. Click and drag to move the square around the panel.
 

 

Complete Source Code

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;


public class SquareMover {


   public static class SquareMoverPanel extends JPanel {

      int x = 100, y = 100, xDistance, yDistance;
      boolean dragging = false, mouseInsideSquare = false;

      public void paintComponent(Graphics g) {

         super.paintComponent(g);

         if (mouseInsideSquare) g.setColor(Color.BLACK);
         else g.setColor(Color.LIGHT_GRAY);

         g.fillRect(x,y,100,100);

      }

   }

   public static class SquareMoverMouse implements MouseListener, MouseMotionListener {

      public void mousePressed(MouseEvent e) {

         SquareMoverPanel source = (SquareMoverPanel) e.getSource();

         if (e.getX() > source.x && e.getX() < source.x + 100 &&
             e.getY() > source.y && e.getY() < source.y + 100) {

            source.xDistance = e.getX() - source.x;
            source.yDistance = e.getY() - source.y;
            source.dragging = true;

         }

      }

      public void mouseReleased(MouseEvent e) {

         SquareMoverPanel source = (SquareMoverPanel) e.getSource();

         source.dragging = false;

         if (source.x > 390 || source.y > 390 || source.x < -90 || source.y < -90) {

            source.x = 100;
            source.y = 100;
            source.mouseInsideSquare = false;
            source.repaint();

         }

      }

      public void mouseClicked(MouseEvent e) {}
      public void mouseEntered(MouseEvent e) {}
      public void mouseExited(MouseEvent e) {}

      public void mouseMoved(MouseEvent e) {

         SquareMoverPanel source = (SquareMoverPanel) e.getSource();

         if (e.getX() > source.x && e.getX() < source.x + 100 &&
             e.getY() > source.y && e.getY() < source.y + 100) {

            source.mouseInsideSquare = true;
            source.repaint();

         }

         else {

            source.mouseInsideSquare = false;
            source.repaint();

         }

      }

      public void mouseDragged(MouseEvent e) {

         SquareMoverPanel source = (SquareMoverPanel) e.getSource();

         if (source.dragging) {

            source.x = e.getX() - source.xDistance;
            source.y = e.getY() - source.yDistance;
            source.repaint();

         }

      }

   }

   public static void main(String[] args) {

      SquareMoverMouse listener = new SquareMoverMouse();
      SquareMoverPanel myPanel = new SquareMoverPanel();
      JFrame myFrame = new JFrame("Square Mover");

      myPanel.setBackground(Color.WHITE);
      myPanel.addMouseListener(listener);
      myPanel.addMouseMotionListener(listener);

      myFrame.add(myPanel);
      myFrame.setSize(416,438);
      myFrame.setLocation(100,100);
      myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      myFrame.setVisible(true);

   }


}