JAVA鼠标拖动物体移动、碰撞销毁

JAVA鼠标拖动物体移动、碰撞销毁

主要也是利用了图形化用户界面一章,主要的功能、意图不是做界面,而是鼠标拖动物体到一定的范围之后就消失。

图中有1~6张不同颜色的标签,每次启动之后他们的位置是随机的,把他们拖拽到下面最大的总标签里面之后,对应的数字标签销毁并消失。

主要还是看下面的代码和运行效果图吧!相信大家都能看懂,也比较简单。

import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
import java.util.ArrayList;
import java.util.List;

/*
 *      模块
 *   鼠标拖动、销毁
 * */

public class Rubbish extends JFrame {
    JPanel jp;
    JLabel[] jl = new JLabel[6];

    JLabel jl_zon;
    Color[] colors = {Color.BLACK,Color.CYAN,Color.GRAY,Color.RED,Color.YELLOW,Color.WHITE};
    List<JLabel> list = new ArrayList<>();

    int x,y;

    public static void main(String[] args) {
        new Rubbish();

    }

    public Rubbish(){
        jp = new JPanel();
        jp.setLayout(null);
        this.add(jp);

        for (int i=0;i<jl.length;i++){
            jl[i] = new JLabel(""+(i+1),JLabel.CENTER);
            jl[i].setBounds((int) (Math.random()*400),(int)(Math.random()*250) ,60,80);
            jl[i].setBackground(colors[i]);
            jl[i].setOpaque(true);
//            System.out.println((int) (Math.random()*400)+"     "+(int) (Math.random()*250));
            jp.add(jl[i]);
            list.add(jl[i]);
        }

        for(int i = 0 ; i < list.size();i++) {
            JLabel jl= list.get(i);

            list.get(i).addMouseListener(new MouseAdapter() {
                public void mousePressed(MouseEvent e) {
                    x = e.getX();
                    y = e.getY();
//                    System.out.println(x+"    "+y);
                }

                public void mouseReleased(MouseEvent e) {
                    peng(jl,jl.getX(),jl.getY());

                }

            });
//			跟踪鼠标移动和鼠标拖动
            list.get(i).addMouseMotionListener(new MouseMotionListener() {
                @Override
                public void mouseMoved(MouseEvent arg0) {
                    // TODO Auto-generated method stub

                }

                @Override
                public void mouseDragged(MouseEvent e) {
                    // TODO Auto-generated method stub
                    JLabel jl = (JLabel) e.getSource();
                    jl.setLocation(jl.getX()+e.getX()-x,jl.getY()+e.getY()-y);
//                    System.out.println(x+"    "+y);
                    System.out.println(jl.getX()+"    "+jl.getY());
//                    System.out.println(e.getX()+"    "+e.getY());
                }
            });
        }

        jl_zon = new JLabel("总标签",JLabel.CENTER);
        jl_zon.setBounds(150,350,200,100);
        jl_zon.setBackground(Color.GREEN);
        jl_zon.setOpaque(true);
        jp.add(jl_zon);

        this.setBounds(400,200,500,500);
        this.setVisible(true);

    }

    public void peng(JLabel jlabel,int x,int y){
        if(x>150 && x<350 && y>350 && y<450){
            jp.remove(jlabel);
            jp.repaint();
        }
    }

}

运行效果如下:
如图有6张标签
这是拖动之后还剩3张
如有不懂,加微信 :zhi19990327
备注 :Java碰撞、消失

发布了2 篇原创文章 · 获赞 3 · 访问量 251

猜你喜欢

转载自blog.csdn.net/AresPer/article/details/104344707