要求用:Graphics和Image画图
面板要求有背景图,另外还有一张位于面板背景图上可移动的小图
获取图片位置时用this.getClass().getResource("")来获得!!!

解决方案 »

  1.   

    改一下!!
    只要获得图片位置时是用this.getClass().getResource("")实现的就行!!
      

  2.   


    import java.awt.BorderLayout;
    import java.awt.Graphics;
    import java.awt.Point;
    import java.awt.event.MouseEvent;
    import java.net.URL;import javax.swing.ImageIcon;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.SwingUtilities;
    import javax.swing.event.MouseInputAdapter;
    /**
     * @author closewbq
     * 拖动图片
     */
    public class DragImage extends JFrame {
    private JLabel imageLabel;
    private JPanel jpanel; public DragImage() {
    URL path = DragImage.class.getResource("xxxx.jpg");
    ImageIcon image = new ImageIcon(path);
    jpanel = new PanelImage(image);
    imageLabel = new JLabel(image);
    jpanel.setSize(900, 600);
    jpanel.add(imageLabel);
    setLayout(null);
    this.getContentPane().add(jpanel);
    DragListener listener = new DragListener();
    imageLabel.addMouseListener(listener);
    imageLabel.addMouseMotionListener(listener);
    setTitle("图片拖动");
    setSize(900, 600);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setVisible(true);
    } class DragListener extends MouseInputAdapter {
    Point point = new Point(0, 0);
    public void mouseDragged(MouseEvent e) {
    Point newPoint = SwingUtilities.convertPoint(imageLabel, e
    .getPoint(), imageLabel.getParent());
    //新位置
    imageLabel.setLocation(imageLabel.getX() + (newPoint.x - point.x),
    imageLabel.getY() + (newPoint.y - point.y));
    //更改坐标点
    point = newPoint;
    } public void mousePressed(MouseEvent e) {
    point = SwingUtilities.convertPoint(imageLabel, e.getPoint(),
    imageLabel.getParent());
    System.out.println(e.getPoint().x + " : " + e.getPoint().y);
    System.out.println(point.x + " : " + point.y);
    }
    } public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {
    public void run() {
    new DragImage();
    }
    }); } class PanelImage extends JPanel {
    BorderLayout borderLayout = new BorderLayout();
    private ImageIcon image = null; public PanelImage(ImageIcon image) {
    try {
    this.image = image;
    jbInit();
    } catch (Exception exception) {
    exception.printStackTrace();
    }
    } private void jbInit() throws Exception {
    this.setLayout(borderLayout);
    } protected void paintComponent(Graphics g) {
    setOpaque(true);
    super.paintComponent(g);
    g.drawImage(image.getImage(), 0, 0, null, null); }
    }
    }
      

  3.   

    3#的哥!!
    如何用Graphics和Image画图再和this.getClass().getResource("")联系一起的话可以不!!
      

  4.   

    回7#
    必要的容器还是要用的噻!!
    思路是用Graphics和Image画图再和this.getClass().getResource("")