图形配对

package peidui;
import java.awt.event.*;
import java.awt.*;
 
import javax.swing.*;
import javax.swing.border.LineBorder;
public class peidui extends JFrame implements MouseMotionListener,MouseListener{
    JLabel j1,j2,j3,j4,j5,j6;
    JPanel jp1,jp2;
    Point presspoint;
    public static void main(String[] args) {
        peidui pd=new peidui();
    }
    public peidui(){
        j1=new JLabel(new ImageIcon(getClass().getResource("bike.jpg")));
        j2=new JLabel(new ImageIcon(getClass().getResource("coffe.jpg")));
        j3=new JLabel(new ImageIcon(getClass().getResource("dress.jpg")));
        j4=new JLabel("咖啡",JLabel.CENTER);
        j5=new JLabel("衣服",JLabel.CENTER);
        j6=new JLabel("自行车",JLabel.CENTER);
        jp1=new JPanel();
        jp2=new JPanel();
        j1.setPreferredSize(new Dimension( 60, 60));
        j1.setBorder(new LineBorder(Color.BLACK));
        j2.setPreferredSize(new Dimension( 60, 60));
        j2.setBorder(new LineBorder(Color.BLACK));
        j3.setPreferredSize(new Dimension( 60, 60));
        j3.setBorder(new LineBorder(Color.BLACK));
        j4.setBackground(Color.green);
        j4.setOpaque(true);
        j4.setPreferredSize(new Dimension( 80, 80));
        j5.setBackground(Color.green);
        j5.setOpaque(true);
        j5.setPreferredSize(new Dimension( 80, 80));
        j6.setBackground(Color.green);
        j6.setOpaque(true);
        j6.setPreferredSize(new Dimension( 80, 80));
        j1.addMouseListener(this);//注册监听
        j1.addMouseMotionListener(this);//注册监听
        j2.addMouseListener(this);
        j2.addMouseMotionListener(this);
        j3.addMouseListener(this);
        j3.addMouseMotionListener(this);
         
        jp1.add(j1);
        jp1.add(j2);
        jp1.add(j3);
        this.setGlassPane(jp1);//加玻璃板把jp1放到玻璃板上
        this.getGlassPane().setVisible(true);//玻璃板的显示即jp1的显示
        jp1.setOpaque(false);//面板透明,玻璃板不透明窗体
        jp2.add(j4);
        jp2.add(j5);
        jp2.add(j6);
        this.add(jp2,BorderLayout.SOUTH);
        this.setTitle("配对游戏");
        this.setLocation(500, 200);
        this.setSize(300, 300);
        this.setVisible(true);
        this.setResizable(true);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    @Override
    public void mouseClicked(MouseEvent arg0) {
        // 单击
         
    }
    @Override
    public void mouseEntered(MouseEvent arg0) {
        // 进入
         
    }
    @Override
    public void mouseExited(MouseEvent arg0) {
        // 退出
         
    }
    @Override
    public void mousePressed(MouseEvent arg0) {
        // 一直按住
        presspoint=arg0.getPoint();
    }
    @Override
    public void mouseReleased(MouseEvent arg0) {
        // 释放
        if(check()){
            this.getGlassPane().setVisible(false);
            j6.setBackground(Color.red);
            j6.setText("配对成功");
            j5.setBackground(Color.red);
            j5.setText("配对成功");
            j4.setBackground(Color.red);
            j4.setText("配对成功");
        }
    }
    @Override
    public void mouseDragged(MouseEvent arg0) {
        //拖拽
        Point curentPoint=arg0.getPoint();
        JLabel imgsource=(JLabel)arg0.getSource();
        Point labPoint=imgsource.getLocation();
        imgsource.setLocation(labPoint.x+(curentPoint.x-presspoint.x), labPoint.y+(curentPoint.y-presspoint.y) );
    }
    @Override
    public void mouseMoved(MouseEvent arg0) {
        // 移动
         
    }
    public boolean check(){
        boolean asc=true;
        Point a=j1.getLocationOnScreen();
        Point b=j6.getLocationOnScreen();
        if(a.x<b.x||a.y<b.y||a.x>b.x+ 80||a.y>b.y+ 80)
        {
            asc=false;
            j6.setBackground(Color.green);
 
        }
        Point c=j3.getLocationOnScreen();
        Point d=j5.getLocationOnScreen();
        if(c.x<d.x||c.y<d.y||c.x>d.x+ 80||c.y>d.y+ 80)
        {
            asc=false;
            j5.setBackground(Color.green);
 
        }
        Point e=j2.getLocationOnScreen();
        Point f=j4.getLocationOnScreen();
        if(e.x<f.x||e.y<f.y||e.x>f.x+ 80||e.y>f.y+ 80)
        {
            asc=false;
            j4.setBackground(Color.green);
 
        }
        return asc;
    }
 
}
时间: 2024-12-07 02:19:24

图形配对的相关文章

基本图形生成算法

1.直线生成算法 所谓图元的生成,是指完成图元的参数表示形式(由图形软件包的使用者指定)到点阵表示形式(光栅显示系统刷新时所需的表示形式)的转换.通常也称扫描转换图元. 直线的扫描转换:确定最佳逼近于该直线的一组像素,并且按扫描线顺序对这些像素进行写操作. 三个常用算法:1.数值微分法DDA:2.中点画线法:3.Bresenham算法. 生成目标,求与直线段充分接近的像素集 生成前提条件:1.像素网格均匀,坐标为整数值:2.直线段的宽度为1:3.直线段的斜率k的取值范围为[-1,1]. 1.1

如何设置并将你的iWatch和iPhone配对

如何设置并将你的iWatch和iPhone配对 一旦你买到一个iWatch,打回家并拆封,下面教你如何设置. iWatch是这样一个装置,它被设计出来和你的iPhone一起使用.它可以说是一个iPhone配件,它们的关系非常亲密.这也是为什么设置iWatch感觉在很大程度上都像在你的电脑上安装一个外围设备或者软件包一样的原因.但是,这里,你是在为你的iPhone"安装一个配件".一旦配对完成后,它就也可以安装你需要的所有apps啦. 过程非常的简单,但是有点浪费时间.准备好至少花费20

图形绘制 Canvas Paint Path 详解

图形绘制简介        Android中使用图形处理引擎,2D部分是android SDK内部自己提供,3D部分是用Open GL ES 1.0.大部分2D使用的api都在android.graphics和android.graphics.drawable包中.他们提供了图形处理相关的Canvas.ColorFilter.Point.RetcF等类,还有一些动画相关的AnimationDrawable.BitmapDrawable.TransitionDrawable等.       以图形

Microbit蓝芽配对

Microbit蓝芽配对 (Bluetooth Pairing) Microbit 可以像手机或平板与其他蓝芽装置一样,一旦做完第一次配对完就可以使用"蓝芽服务" paired with the micro:bit,再与行动装置去交换数据. 什么是配对 ? 配对就是让你的Microbit 去信任(trust) 其他装置,所以配对必须进行"安全的流程",因为你不会希望其他的行动装置可以跟你的microbit 交谈 (talk),所以当配对流程结束,只有你自己的行动装置

centos7开机无法进入图形界面,出现sda assuming drive cache write through的一个解决方案

centos7开机无法进入图形界面,出现sda assuming drive cache write through.no valid rapl domains found in package之类信息. 这个问题是我在VMware里面操作出现的,原因是我在使用虚拟机和实体机之间文件共享功能时,centos系统无法出现hgfs文件夹, 为了解决hgfs的不出现问题,我参考了如下帖子: http://blog.csdn.net/cindy_cheng/article/details/5045697

CentOS设置默认启动命令行(不启动图形界面)

CentOS中如何进入图形界面和文字界面,Linux真正的服务器是不会运行图形化界面的,怎么样才能在不卸载桌面的前提下开机直接进入命令界面呢?(我安装的是CentOS 6.5)下面就简单介绍以下: 一.如果要进入图形界面: 1.首先得安装有图形界面,一般为X-window图形界面. 2.启动linux在终端下输入:startx 即可进入X11的图形操作界面. 二.在图形界面还可以在多个界面中进行切换: 在X-window图形操作界面中按"Alt+Ctrl+功能键Fn n=1~6 "就可

阿里云centos图形初始化

1.登录 2.先安装MATE可视化桌面 yum groups install "MATE Desktop" 选择y 3.安装X Window System:图形接口 systemctl set-default graphical.target 选择y 4.设置服务器默认启动桌面 systemctl set-default graphical.target 5.重启服务器 reboot

Java图形用户界面布局控制Layout练习

尝试搭建登录对话框,包含两个文字标签(用户名.服务器IP),两个文本输入条(用户名.服务器IP),一个按钮(登录),按照自己认为合适的方式布局.  我把GridLayout(网格布局).BorderLayout(边界布局).FlowLayout(流式布局)三种布局进行了比较并且做了尝试.  终于到了使用Java得到图形反馈的结果,心里还有些小激动呢.虽然只是完成了界面的展示,没有功能的实现,但是成就感还是蛮大的,而且查询JDK文档真的非常有收获. package gui; import java

仿掌上英雄联盟能力值图形绘制

一,前沿 相信玩撸啊撸的撸友们一定记得掌上英雄联盟App的能力值吧~~ 好吧,不记得没关系我来给大家上张图!! 所以今天呢我就抽空模仿了一下: 照例线来张GIF,有图有真相 下面是我的微博账号希望可以关注哈: Email:[email protected] Github: https://github.com/icuihai. weibo:http://weibo.com/icuihai 二.言归正传 在平常做项目的时候自定义控件用的还是蛮多的,使用别人造好的轮子比较节省时间,但是作为了一个优雅