java的画图的小疑点、

java的画图的小问题、、我想画一幅画然后定义相对坐标 当相对坐标移动时 那副画会整体移动、、、该怎么实现、、、p

java的画图的小问题、、
我想画一幅画  然后定义相对坐标 当相对坐标移动时 那副画会整体移动、、、该怎么实现、、、

package com.tur.demo;

import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.geom.Rectangle2D;

public class Hello extends JPanel {
    private Rectangle2D imageBoundingRect; // 图像的矩形区
    private Point       mousePressedPos;   // 鼠标按下的位置
    private boolean     imageSelected = false; // 图像被选中

    private Image       image;

    public Hello() {
        imageBoundingRect = new Rectangle2D.Double(10, 10, 150, 150);
        mousePressedPos = new Point();
        image = new ImageIcon("/Users/Biao/Desktop/x.png").getImage();

        MyMouseAdapter ma = new MyMouseAdapter();
        addMouseListener(ma);
        addMouseMotionListener(ma);
    }

    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);

        Graphics2D g2d = (Graphics2D) g;

        // 在此矩形框内绘制图像
        g2d.drawImage(image,
                      (int) imageBoundingRect.getX(),
                      (int) imageBoundingRect.getY(),
                      (int) imageBoundingRect.getWidth(),
                      (int) imageBoundingRect.getHeight(),
                      this);

        if (imageSelected) {
            // 图像被选中时高亮边框
            g2d.setColor(Color.RED);
            g2d.draw(imageBoundingRect);
        }
    }

    private static void createGuiAndShow() {


        JFrame frame = new JFrame("");

        // TODO add component.
        frame.getContentPane().add(new Hello());

        // Set frame's close operation and location in the screen.
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(400, 400);
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }

    class MyMouseAdapter extends MouseAdapter {
        @Override
        public void mousePressed(MouseEvent event) {
            if (imageBoundingRect.contains(event.getPoint())) {
                imageSelected = true;
                mousePressedPos.setLocation(event.getX(), event.getY());

                repaint();
            }
        }

        @Override
        public void mouseReleased(MouseEvent event) {
            imageSelected = false;

            repaint();
        }

        @Override
        public void mouseDragged(MouseEvent event) {
            if (imageSelected) {
                // 当图像被选中且拖动时,修改图像对应的矩形区域的左上角的坐标.
                int deltaX = event.getX() - mousePressedPos.x;
                int deltaY = event.getY() - mousePressedPos.y;
                imageBoundingRect.setFrame(imageBoundingRect.getX() + deltaX,
                                           imageBoundingRect.getY() + deltaY,
                                           imageBoundingRect.getWidth(),
                                           imageBoundingRect.getHeight());



                mousePressedPos.setLocation(event.getX(), event.getY());

                repaint();
            }
        }
    }

    public static void main(String[] args) {
        createGuiAndShow();
    }
}