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);
}
}
|