Computer Science 225
Advanced Programming
Spring 2017, Siena College
DragAndDrop BlueJ Project
Click here to download a BlueJ project for DragAndDrop.
DragAndDrop Source Code
The Java source code for DragAndDrop is below. Click on a file name to download it.
import javax.swing.JApplet;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
/**
* Example DragAndDrop: dragging a little rectange around with
* the mouse!
*
* @author Jim Teresco, Siena College, Computer Science 225, Spring 2017
*
*/
public class DragAndDrop extends JApplet implements MouseListener, MouseMotionListener {
/** position of the rectangle */
private int x, y;
/** am I currently dragging the rectangle? */
private boolean dragging;
/** remember mouse "grab point" in the rectangle */
private int xOffset, yOffset;
/** what color to draw the rectangle (it will change
* based on the situation
*/
private Color rectColor;
/** rectangle's size */
public static final int SIZE = 25;
/**
* init method for JApplet
*/
public void init() {
// initial position of our draggable rectangle
x = 0;
y = 0;
addMouseListener(this);
addMouseMotionListener(this);
}
/**
* Applet's paint method to manage our graphics
*
* @param g the Graphics reference
*/
public void paint(Graphics g) {
g.setColor(Color.white);
g.fillRect(0, 0, getWidth(), getHeight());
g.setColor(rectColor);
g.fillRect(x, y, SIZE, SIZE);
}
public void mouseClicked(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
/**
* determine if the mouse was pressed in the bounds of
* our rectangle.
*
* @param e mouse event information
*/
public void mousePressed(MouseEvent e) {
dragging = (e.getX() >= x && e.getX() <= x + SIZE &&
e.getY() >= y && e.getY() <= y + SIZE);
xOffset = e.getX() - x;
yOffset = e.getY() - y;
}
public void mouseReleased(MouseEvent e) {
rectColor = Color.black;
repaint();
}
public void mouseDragged(MouseEvent e) {
if (dragging) {
x = e.getX() - xOffset;
y = e.getY() - yOffset;
rectColor = Color.blue;
repaint();
}
}
public void mouseMoved(MouseEvent e) {
if (e.getX() >= x && e.getX() <= x + SIZE &&
e.getY() >= y && e.getY() <= y + SIZE) {
rectColor = Color.red;
}
else {
rectColor = Color.black;
}
repaint();
}
}