标题:java中怎样实现图片拖动
只看楼主
lovefan
Rank: 2
等 级:论坛游民
帖 子:31
专家分:53
注 册:2013-3-16
结帖率:75%
已结贴  问题点数:5 回复次数:4 
java中怎样实现图片拖动
java中怎样实现图片的拖动,我的代码如下,我的问题是怎样让图片整个显示,我的代码的问题是图片拖动后只能显示图片的一部分,求高手指点:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.BufferedImage;

public class DragTest_02 extends JFrame  {
    Point pStart = new Point();
    Point pEnd = new Point();
    Icon img = new ImageIcon(this.getClass().getResource("/img/jinan.jpg"));
    JLabel JL = new JLabel(img);   
    JPanel p = new JPanel();

    public DragTest_02() {
        setBounds(300, 200, 500, 500);
        setLayout(null);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setLayout(null);
        add(JL);
        add(JL);
        JL.setBounds(10, 10, 80, 100);
        JL.addMouseListener(new MouseAdapter() {
            public void mousePressed(MouseEvent e) {
                pStart.x = JL.getX();
                pStart.y = JL.getY();
            }
        });
        JL.addMouseListener(new MouseAdapter() {
            public void mouseReleased(MouseEvent e) {
                pEnd.x = e.getX();
                pEnd.y = e.getY();
                JL.setLocation(pEnd);
            }
        });
        JL.addMouseMotionListener(new MouseMotionAdapter() {
            public void mouseDragged(MouseEvent e) {
                pEnd.x = e.getX();
                pEnd.y = e.getY();
                JL.setLocation(pEnd);
            }
        });

        setVisible(true);
    }

    public static void main(String[] args) {
        new DragTest_02();
    }
}
搜索更多相关主题的帖子: public 图片 import 
2013-03-20 19:35
w527705090
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:11
帖 子:441
专家分:1882
注 册:2011-6-28
得分:0 
程序代码:
import java.awt.Point;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;


public class DragListener extends JFrame implements MouseMotionListener,MouseListener{

    /**
     * @param args
     */
    Point p1=null;
    Point p=null;
    Point p2=null;
    JLabel jl=new JLabel(new ImageIcon("9.jpg"));
    JLabel jl2=new JLabel(new ImageIcon("9.jpg"));
    boolean flagjl1=false;
    boolean flagjl2=false;
    DragListener(){
        this.setTitle("DragListener");
        this.setBounds(200, 200, 400, 400);
        this.setLayout(null);
        jl.setBounds(20, 20, 50, 50);
        jl.addMouseListener(this);
        jl.addMouseMotionListener(this);
        jl2.setBounds(70, 70, 70,70);
        jl2.addMouseListener(this);
        jl2.addMouseMotionListener(this);
        this.add(jl2);
        this.add(jl);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);
    }
    public static void main(String[] args) {
        new DragListener();
    }

    @Override
    public void mouseClicked(MouseEvent e) {
        // TODO Auto-generated method stub
       

    }

    @Override
    public void mousePressed(MouseEvent e) {
        if(e.getComponent().equals(jl)){
            flagjl1=true;
        }else if(e.getComponent().equals(jl2)){
            flagjl2=true;
        }
        p=this.jl.getMousePosition();
        p2=this.jl2.getMousePosition();
        p1=this.getLocationOnScreen();
//        System.out.println(p);
       

    }

    @Override
    public void mouseReleased(MouseEvent e) {
        flagjl1=false;
        flagjl2=false;
       

    }

    @Override
    public void mouseEntered(MouseEvent e) {
        // TODO Auto-generated method stub
       

    }

    @Override
    public void mouseExited(MouseEvent e) {
        // TODO Auto-generated method stub
       

    }

    @Override
    public void mouseDragged(MouseEvent e) {
        if(flagjl1){
            this.jl.setLocation(e.getXOnScreen()-p.x-p1.x, e.getYOnScreen()-p.y-p1.y);
        }else if(flagjl2){
            this.jl2.setLocation(e.getXOnScreen()-p2.x-p1.x, e.getYOnScreen()-p2.y-p1.y);
        }
       

       

    }

    @Override
    public void mouseMoved(MouseEvent e) {
        // TODO Auto-generated method stub
       

    }

}

    这个是可以拖动两张图片的  以前写的 ...

有心者,千方百计;无心者,千难万难。
2013-03-21 22:04
lovefan
Rank: 2
等 级:论坛游民
帖 子:31
专家分:53
注 册:2013-3-16
得分:0 
我运行了一下,根本就不显示图片啊…………
2013-03-24 22:29
w527705090
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:11
帖 子:441
专家分:1882
注 册:2011-6-28
得分:5 
回复 3楼 lovefan
你放了图片在你的工程里面吗?

有心者,千方百计;无心者,千难万难。
2013-03-25 00:02
lovefan
Rank: 2
等 级:论坛游民
帖 子:31
专家分:53
注 册:2013-3-16
得分:0 
我发现问题所在了,虽然没有解决我的问题,但还是感谢您,我的解决方法也分享一下,解决方案如下:
将原先的程序段:
JLabel jl=new JLabel(new ImageIcon("/img/image1.jpg"));
JLabel jl2=new JLabel(new ImageIcon("/img/jinan.jpg"));
改为如下程序:
Icon image1 = new ImageIcon(this.getClass().getResource("/img/img.jpg"));
Icon image2 = new ImageIcon(this.getClass().getResource("/img/jinan.jpg"));
JLabel jl=new JLabel(image1);
JLabel jl2=new JLabel(image2);
就可以看到图片了,可以拖动,不过只能看到图片的一部分……
2013-03-26 13:13



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-401398-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.048496 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved