java 创建桌面宠物

QQ宠物终于因为玩家稀少而挂掉了, 但是想一想还有点怀念(其实早就弃了) 再加上追了近三年, 数码宝贝tri 也算就此完结了, 再一次勾起了童年, 以及.....我为毛不能自己养数码宝贝呢(手动滑稽)

由于大学狗(天天在宿舍打游戏的那种)一枚, 所以本宅也就只会一点java Swing ,也就只能从此下手了

参考文章在这里

大概内容是用swing 的JLabel来加载 图片,通过线程来改变JLabel中的图片来实现动画,以及相关属性的配置

 

代码部分相对比较简单

//        创建并设置窗口
        JFrame frame = new JFrame("digimonDesktopBaby");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        // 框体透明
        frame.setUndecorated(true); // 取消窗口标题栏
        frame.setBackground(new Color(0,0,0,0));// 背景透明
        //设置位置并显示在最前端
        frame.setBounds(first_x,first_y,0,0);
        frame.setAlwaysOnTop(true);
        //设置取消窗体任务栏图标
        frame.setType(JFrame.Type.UTILITY);
        //设置托盘图标
        setTray(frame);
//        添加图片JLabel
        JLabel digimonLabel = MainFrame.loadPicture(0,0);
        MainFrame.animateNormal(digimonLabel);
        frame.getContentPane().add(digimonLabel);
//        添加移动事件
        frame.addMouseListener(new MouseAdapter() {
            @Override
            public void mousePressed(MouseEvent e) {
                // 当鼠标按下的时候获得窗口当前的位置
                origin.x = e.getX();
                origin.y = e.getY();
            }

//            @Override
//            public void mouseClicked(MouseEvent e) {
//                evolut(frame,digimonLabel);
//            }
        });
        frame.addMouseMotionListener(new MouseMotionAdapter() {
            // 拖动(mouseDragged 指的不是鼠标在窗口中移动,而是用鼠标拖动)
            public void mouseDragged(MouseEvent e) {
                // 当鼠标拖动时获取窗口当前位置
                Point p = frame.getLocation();
                // 设置窗口的位置
                // 窗口当前的位置 + 鼠标当前在窗口的位置 - 鼠标按下的时候在窗口的位置
                int x = p.x + e.getX() - origin.x;
                int y = p.y + e.getY()- origin.y;
                frame.setLocation(x, y);
                FileUtil.updateFile(configPath,configName,"pox",""+x);
                FileUtil.updateFile(configPath,configName,"poy",""+y);
            }
        });

    //设置托盘菜单
    private static void setTray(JFrame frame) {
        if (SystemTray.isSupported()) {// 判断系统是否支持系统托盘
            SystemTray tray = SystemTray.getSystemTray(); // 获取当前系统的托盘

            // 为托盘添加一个右键弹出菜单
            PopupMenu popMenu = new PopupMenu();

            MenuItem itemOpen = new MenuItem("打开");
            itemOpen.addActionListener(e -> frame.setVisible(true));

            MenuItem itemHide = new MenuItem("隐藏");
            itemHide.addActionListener(e -> frame.setVisible(false));

            MenuItem itemExit = new MenuItem("退出");
            itemExit.addActionListener(e -> System.exit(0));

            popMenu.add(itemOpen);
       
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值