精华内容
下载资源
问答
  •  QQ趣味大集合,内容丰富,包括QQ透明皮肤、QQ表情集合、个性签名QQ个性头像、QQ文本贴图、QQ彩信、QQ妙文妙语等内容,详情如下:  (1)QQ透明皮肤、QQ表情集合:经典而丰富;  (2)QQ个性头像:上百种个性...
  • 最后还是官方靠谱,加了客服qq给出了答案:复制一个原包,将复制的原包APK里的【META-INF】删掉,在加固助手配置签名后,直接将删掉【META-INF】的包上传就可以。 使用压缩工具打开自己的apk包删除【META-INF】,再...

    最近使用360加固保的时候,使用自动签名一直提示签名配置中未找到此APK使用的签名,在360社区里翻了一上午全是只有问题没有答案,很是烦躁。

    image

    最后还是官方靠谱,加了客服qq给出了答案:复制一个原包,将复制的原包APK里的【META-INF】删掉,在加固助手配置签名后,直接将删掉【META-INF】的包上传就可以。

    使用压缩工具打开自己的apk包删除【META-INF】,再重新上传包就ok了。
    image

    此篇文章希望能帮助到大家,让更多的人少踩坑

    展开全文
  • https://jingyan.baidu.com/article/546ae185d818941148f28c6c.html?qq-pf-to=pcqq.c2c 禁用完运行代码出错 bcdedit.exe /set nointegritychecks on //关闭签名 bcdedit.exe /set nointegritychecks off //开签名...

    https://jingyan.baidu.com/article/546ae185d818941148f28c6c.html?qq-pf-to=pcqq.c2c

    禁用完运行代码出错

    bcdedit.exe /set nointegritychecks on  //关闭签名

    bcdedit.exe /set nointegritychecks off  //开签名

    设置元素数据时出错。该值受安全引导策略保护,无法进行修改或删除。

    不知道为啥,突然就想起了主板BIOS选项里有一个Secure Boot,于是进入主板BIOS设置,找到Boot里面的Secure Boot,将Windows UEFI模式,切换成Other OS,再把Secure Key 都删掉。

    保存设置,重启。

    再启动,果然驱动就加载上了。

    这里可能还有禁用一次数字签名(我是dell的电脑过程根据提示还可能输入密钥)

    多一句win10最好关闭自动更新

    展开全文
  • 签名设计安装版 签名

    2008-11-10 15:10:50
    ║ 在下载后在24小时内删除。本站不保证软件的完整性和是否 ║ ║ 隐含病毒,请自行调试及杀毒,如不同意本条款请勿使用, ║ ║ 谢谢合作! ║ ║ ║ ║ ¤建议和要求:如果您对本站有好的建议,以及对本站...
  • Ejun手写签名2.0

    2006-08-25 08:48:51
    QQ:157123678 (注明手写签名软件) 安装(Word示例): 1.安装前,请先安装Word,并关闭Word 2.双击Install 3.安装完后打开Word,你会发现增了一个“手写签名”按钮。 反安装:1.双击UnInstall ...
  • 对已有apk进行重新签名

    千次阅读 2018-08-13 16:58:00
    老是找这样的文章,转载过来,方便查找。转载地址:...当你需要对APK重新签名或者对未签名的apk签名,首先将这个文件夹删除再用压缩工具生成zip,改后缀名为.apk 将你的证书和新生成的APK放在一个文件...

    老是找这样的文章,转载过来,方便查找。转载地址:https://blog.csdn.net/qq_31116683/article/details/52395620

     

    将APK解压后,META-INF 文件夹里面就是对应的一些签名信息;

    当你需要对APK重新签名或者对未签名的apk签名,首先将这个文件夹删除再用压缩工具生成zip,改后缀名为.apk

    将你的证书和新生成的APK放在一个文件夹下,命令行进入这个文件夹

    G:\test\>jarsigner -verbose -keystore myKey.jks -signedjar signed.apk unsign.apk myKeyAlias

    jarsigner:jdk自带工具,用于生成带签名的apk

    -verbose 具体描述

    myKey.jks 我的签名证书,用于给unsign.apk签名

    -signedjar signed.apk 签名生成后的apk名称

    unsign.apk 未签名的apk

    myKeyAlias 我的证书myKey.jks的别名

     

    附链接:http://blog.csdn.net/wzy_1988/article/details/50034711

    一般jdk1.6前通过studio/eclipse生成签名加密是使用rsa,向上版本是RSA256,在360平台加固发布,会提示

    您的应用签名算法采用“SHA256withRSA”,在部分4.2一下安卓版本的手机上不能安装。

    加密时就可以采用链接中方式:

    G:\test\>jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore myKey.jks -signedjar signed.apk unsign.apk myKeyAlias

    展开全文
  • E_Jun手写签名

    2006-08-21 15:34:44
    试用版,若要正试版,请联系Cyjsir@.163.COM或E_Jun@shou.com qq:157123678(注明手写签名软件) 安装: 1.安装前关闭Word 2.双击Install 3.安装完后打开Word,你会发现增了一个“手写签名”按钮。 反安装...
  • WORD电子签名插件V1.2

    热门讨论 2008-10-18 14:42:36
    欢迎转载,转载时请不要删除这些信息。谢谢。 2006-04-25 作者:wallimn email:wallimn@sohu.com QQ:54871876 博客:http://blog.csdn.net/wallimn 1.1版更新 ...
  • Word电子签名签章系统V1.2

    热门讨论 2008-10-19 16:18:28
    1.引言  WORD电子签名插件,支持手写、本地电子图章、... 欢迎转载,转载时请不要删除这些信息。谢谢。 2008-10-17 作者:wallimn email:wallimn@sohu.com QQ:54871876 博客:http://blog.csdn.net/wallimn
  • 程序只有一个风格,如果需要多风格多用户版(用户可自己选择风格),可以联系QQ89364178(不包做图,只收程序制作费) 程序使用方法 程序本人未做任何美化操作,只是做了简单的结构以及数据库,所以如果你想要美化的...
  • JAVA仿QQ通讯

    2017-09-06 10:58:53
    java开发的仿QQ系统,可以进入QQ空间,邮箱,通讯,删除好友,查看好友资料,移动好友分组,加入黑名单,添加好友,查找好友,修改签名
  • 实现QQ空间随机皮肤,随机签名,随机留言图片,随机留言板主人寄语 实现论坛发帖随机图片,随机签名,随机评论图片 效果: 要达到的目的是每刷新一次就换一张事先准备好的图片 (可以放在日志签名档等签名的地址 ...
  • 目前支持协议有QQ空间、3GQQ、手机QQ、WebQQ CWebQQ类 CWebQQ支持所有WebQQ功能: WebQQ上线、可自定义在线状态 与好友收发消息、与群收发消息、与群成员收发消息、查找好友加好友、查找群加群、同意群或好友的请求...
  • - 支持个人中心的资料管理,用户可以自定义昵称,用户图像,个性签名等内容,这些内容都采取云端存储 - 基于百度地图的LBS功能,可以查看附近的人,快速搭讪UI截图(本来打算上传一个gif动态图的,但是CSDN好像不...
  • QQ FOR pad 改尾巴工具

    2012-04-19 15:51:12
    用打开另一个叫AndroidResEdit的软件,点签名,选择替换过resources.arsc的QQ FOR PAD.apk ,点立即签名签名后会生成一个新的apk文件 此时运行此apk文件,方可正常安装及使用改过尾巴的QQ! 注意事项第一步安装...
  • 然后进入后台管理你要制作的随机秀QQ空间按F5刷新一次变一次 实现QQ空间随机皮肤,随机签名,随机留言图片,随机留言板主人寄语实现论坛发帖随机图片,随机签名,随机评论图片效果: 要达到的目的是每刷新一次就换...
  • 与好友收发消息、与群收发消息、与群成员收发消息、查找好友加好友、查找群加群、同意群或好友的请求等功能、获取好友列表、群成员列表、头像、群头像、设置个性签名、群公告、在 线状态、个人资料、QQ等级等 ...
  • JAVA基于Swing和netty仿QQ界面聊天小项目

    千次阅读 多人点赞 2020-11-11 18:29:59
    先是用swing写好了仿QQ界面(界面很丑)最后逻辑实现都是后面断断续续加进去的。写这个项目之前没有很好的规划在逻辑实现方面与数据库逻辑交互过于频繁。走了很多的弯路 2.功能实现 1.修改功能(密码、昵称、个性...

    1.前言
    2.功能实现
    3.模块划分
    4.使用到知识
    5.部分代码实现
    6.运行例图

    1.前言

       先说一下这个小项目也算是我在大学做的第一个应该算的上是的项目的项目,前前后后用了20天左右吧。先是用swing写好了仿QQ界面(界面很丑)最后逻辑实现都是后面断断续续加进去的。写这个项目之前没有很好的规划在逻辑实现方面与数据库逻辑交互过于频繁。走了很多的弯路

    2.功能实现

    1.修改功能(密码、昵称、个性签名)
    2.添加好友、删除好友
    3.单聊功能
    4.判断好友是否在线

    3.模块划分

    在这里插入图片描述

    4.使用的知识

    • netty
    • swing
    • 集合等同步阻塞队列synchronousQueue
    • 数据库MySQL中的CRUD
    • C3p0连接池
    • JSON字符串

    5.部分代码实现

    1.nettyController.java

    接收到来自客户端的消息,与dao层进行交互
    dao层与之数据库进行交互
    

    修改密码
    修改密码逻辑图
    添加好友
    添加好友逻辑图

    从添加好友逻辑实现上我走了很多的弯路频繁的访问数据库,这是一件很不好的事情

    package chat.Project.controller;
    
    import chat.Project.bean.information;
    import chat.Project.constant.EnMsgType;
    import chat.Project.dao.*;
    import chat.utils.CacheUtil;
    import chat.utils.JsonUtils;
    import com.fasterxml.jackson.databind.node.ObjectNode;
    import io.netty.channel.Channel;
    
    import java.util.ArrayList;
    import java.util.Iterator;
    
    public class NettyController {
    
        private static UserDao userDao = new UserDaoImpl();
        private static informationDao informationDao = new informationDaoImpl();
        private static friendDao friendDao = new friendDaoImpl();
    
        public static String processing(String message, Channel channel){
    
            //解析客户端发送的消息
            ObjectNode jsonNodes = JsonUtils.getObjectNode(message);
            String msgtype = jsonNodes.get("msgtype").asText();
            if (EnMsgType.EN_MSG_LOGIN.toString().equals(msgtype)){
                //登录操作
                return loginOperation(jsonNodes,channel);
            }else if (EnMsgType.EN_MSG_MODIFY_SIGNATURE.toString().equals(msgtype)){
                //修改签名
                return modifySignature(jsonNodes);
            }else if (EnMsgType.EN_MSG_MODIFY_NICKNAME.toString().equals(msgtype)){
                //修改昵称
                return modifyNickname(jsonNodes);
            }else if (EnMsgType.EN_MSG_GETINFORMATION.toString().equals(msgtype)){
                //获取登录信息
                return getInformation(jsonNodes);
            }else if (EnMsgType.EN_MSG_VERIFY_PASSWORD.toString().equals(msgtype)){
                //进行修改密码
                return verifyPasswd(jsonNodes);
            }else if (EnMsgType.EN_MSG_CHAT.toString().equals(msgtype)){
                //单聊模式
                return SingleChat(jsonNodes);
            }else if (EnMsgType.EN_MSG_GET_ID.toString().equals(msgtype)){
                //获取id
                return getId(jsonNodes);
            }else if (EnMsgType.EN_MSG_GET_FRIEND.toString().equals(msgtype)){
                //获取好友列表
                return getFriend(jsonNodes);
            }else if (EnMsgType.EN_MSG_ADD_FRIEND.toString().equals(msgtype)){
                //添加好友
                return addFriends(jsonNodes);
            }else if (EnMsgType.EN_MSG_DEL_FRIEND.toString().equals(msgtype)){
                //删除好友
                return delFriend(jsonNodes);
            }else if (EnMsgType.EN_MSG_ACTIVE_STATE.toString().equals(msgtype)){
                //判断好友的在线状态
                return friendIsActive(jsonNodes);
            }
            return "";
        }
    
        //判断好友在线状态
        private static String friendIsActive(ObjectNode jsonNodes) {
            int friendId = jsonNodes.get("friendId").asInt();
    
            ObjectNode objectNode = JsonUtils.getObjectNode();
            objectNode.put("msgtype",EnMsgType.EN_MSG_ACK.toString());
            objectNode.put("srctype",EnMsgType.EN_MSG_ACTIVE_STATE.toString());
    
            //客户端保证用户独立存在且是好友
            Channel channel = CacheUtil.get(friendId);
            //判断用户是否在线
            if (channel == null){
                //用户不在线
                objectNode.put("code",200);
            }else {
                //用户在线
                objectNode.put("code",300);
            }
            return objectNode.toString();
        }
    
        //添加好友
        private static String delFriend(ObjectNode jsonNodes) {
            Integer friendId = jsonNodes.get("friendId").asInt();
            int userId = jsonNodes.get("id").asInt();
            String localName = jsonNodes.get("localName").asText();
    
            //封装发回客户端的JSON
            ObjectNode objectNode = JsonUtils.getObjectNode();
            objectNode.put("msgtype",EnMsgType.EN_MSG_ACK.toString());
            objectNode.put("srctype",EnMsgType.EN_MSG_DEL_FRIEND.toString());
            objectNode.put("code",200);
    
            //验证是否存在当前好友
            information information = informationDao.getInformation(friendId);
            String friendName = information.getNickname();
            //查询自己是否有该好友
            boolean exist = friendDao.isExist(friendName,userId);
            if (exist){
                //存在当前好友进行删除操作
                friendDao.delFriend(userId,friendName);
                friendDao.delFriend(friendId,localName);
                objectNode.put("code",300);
            }
            return objectNode.toString();
        }
    
        //添加好友
        private static String addFriends(ObjectNode jsonNodes) {
            Integer friendId = jsonNodes.get("friendId").asInt();
            int userId = jsonNodes.get("id").asInt();
            String localName = jsonNodes.get("localName").asText();
    
            //验证是否有ID
            boolean exists = userDao.verifyExistFriend(friendId);
            ObjectNode objectNode = JsonUtils.getObjectNode();
            objectNode.put("msgtype",EnMsgType.EN_MSG_ACK.toString());
            objectNode.put("srctype",EnMsgType.EN_MSG_ADD_FRIEND.toString());
            objectNode.put("code",200);
    
            if(exists){
                //表示存在此id
                objectNode.put("code",300);
                //获取好友昵称
                information information = informationDao.getInformation(friendId);
                String friendNickname = information.getNickname();
                //进行添加好友的操作   两个对应的信息都应该添加
                friendDao.addFriends(userId,localName,friendNickname);
                friendDao.addFriends(friendId,friendNickname,localName);
            }
            return objectNode.toString();
        }
    
        //获取好友列表
        private static String getFriend(ObjectNode jsonNodes) {
    
            int uid = jsonNodes.get("uid").asInt();
    
            //返回ArrayLis集合
            ArrayList<String> friends = friendDao.getFriends(uid);
            //封装JSON
            ObjectNode objectNode = JsonUtils.getObjectNode();
            objectNode.put("msgtype",EnMsgType.EN_MSG_ACK.toString());
            objectNode.put("srctype",EnMsgType.EN_MSG_GET_FRIEND.toString());
    
            //写回friend集合
            Iterator<String> iterator = friends.iterator();
            int i = 0;
            while (iterator.hasNext()){
                objectNode.put("res"+i,iterator.next());
                i++;
            }
            //记录好友个数
            objectNode.put("count",i);
    
            return objectNode.toString();
        }
    
        //获取id
        private static String getId(ObjectNode jsonNodes) {
            String nickname = jsonNodes.get("nickname").asText();
            information information = informationDao.nicknameGetId(nickname);
            //联系人的id
            int uid = information.getUid();
            //封装JSON
            ObjectNode objectNode = JsonUtils.getObjectNode();
            objectNode.put("msgtype",EnMsgType.EN_MSG_ACK.toString());
            objectNode.put("srctype",EnMsgType.EN_MSG_GET_ID.toString());
            objectNode.put("uid",uid);
            return objectNode.toString();
        }
    
        //单聊模式
        private static String SingleChat(ObjectNode jsonNodes) {
    
            int id = jsonNodes.get("id").asInt();
    
            //根据id在friend表获取登录用户名
    
            //封装JSON数据服务端转发数据
            ObjectNode objectNode = JsonUtils.getObjectNode();
            objectNode.put("msgtype",EnMsgType.EN_MSG_ACK.toString());
            objectNode.put("srctype",EnMsgType.EN_MSG_CHAT.toString());
    
            //客户端保证用户独立存在且是好友
            Channel channel = CacheUtil.get(id);
            //判断用户是否在线
            if (channel == null){
                //用户不在线
                objectNode.put("code",200);
            }else{
                //用户在线
                objectNode.put("code",300);
                //消息转发
                channel.writeAndFlush(jsonNodes.toString());
            }
            return objectNode.toString();
        }
    
        //修改密码
        private static String verifyPasswd(ObjectNode jsonNodes) {
            int id = jsonNodes.get("id").asInt();
            String oldPasswd = jsonNodes.get("oldPasswd").asText();
            String newPasswd = jsonNodes.get("newPasswd").asText();
    
            boolean exits = userDao.verifyPassword(oldPasswd, id);
    
            ObjectNode objectNode = JsonUtils.getObjectNode();
            objectNode.put("msgtype",EnMsgType.EN_MSG_VERIFY_PASSWORD.toString());
            objectNode.put("code",200);
            if (exits){
                //验证成功
                userDao.modifyPasswd(newPasswd,id);
                objectNode.put("code",300);
            }
            return objectNode.toString();
        }
    
        //获取信息
        private static String getInformation(ObjectNode jsonNodes) {
            int id = jsonNodes.get("id").asInt();
    
            information information = informationDao.getInformation(id);
    
            //封装JSON发回客户端
            ObjectNode objectNode = JsonUtils.getObjectNode();
            objectNode.put("msgtype",EnMsgType.EN_MSG_ACK.toString());
            objectNode.put("srctype",EnMsgType.EN_MSG_GETINFORMATION.toString());
            objectNode.put("Nickname",information.getNickname());
            objectNode.put("Signature",information.getSignature());
    
            return objectNode.toString();
        }
    
        //修改昵称
        private static String modifyNickname(ObjectNode jsonNodes) {
            int id = jsonNodes.get("id").asInt();
            String nickname = jsonNodes.get("nickname").asText();
            //进行存储
            informationDao.storeNickname(nickname,id);
            return "";
        }
    
        //修改签名
        private static String modifySignature(ObjectNode jsonNodes) {
            int id = jsonNodes.get("id").asInt();
            String signature = jsonNodes.get("signature").asText();
            //进行存储
            informationDao.storeSignature(signature,id);
            return "";
        }
    
        //登录操作
        private static String loginOperation(ObjectNode objectNode,Channel channel) {
    
            int id = objectNode.get("id").asInt();
            String passwd = objectNode.get("passwd").asText();
            //进行数据库查询
            boolean exits = userDao.getInformation(id, passwd);
    
            ObjectNode jsonNodes = JsonUtils.getObjectNode();
            jsonNodes.put("msgtype",EnMsgType.EN_MSG_ACK.toString());
            jsonNodes.put("srctype",EnMsgType.EN_MSG_LOGIN.toString());
            jsonNodes.put("code",300);
            //返回状态码
            if (exits){
                jsonNodes.put("code",200);
    
                //添加用户的在线信息
                CacheUtil.put(id,channel);
            }
            return jsonNodes.toString();
        }
    }
    
    

    2.ClientHandler.java

    客户端接受来自服务端返回的消息
    根据返回的状态码来判断是否操作成功
    
    package chat.Project.netty;
    
    import chat.Frame.chat.ChatFrame;
    import chat.Frame.chat.linkmen;
    import chat.Frame.chat.login;
    import chat.Project.constant.EnMsgType;
    import chat.util.JsonUtils;
    import com.fasterxml.jackson.databind.node.ObjectNode;
    import io.netty.channel.ChannelHandlerContext;
    import io.netty.channel.SimpleChannelInboundHandler;
    
    import java.util.concurrent.SynchronousQueue;
    
    
    public class ClientHandler extends SimpleChannelInboundHandler<String> {
    
        //定义一个同步阻塞队列状态码
        public static SynchronousQueue<Object> queue = new SynchronousQueue<>();
    
        public static String Nickname;
        public String Signature;
    
        @Override
        protected void channelRead0(ChannelHandlerContext channelHandlerContext, String s) throws Exception {
    
        }
    
        //客户端接收数据
        @Override
        public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
            System.out.println(msg);
            //解析服务端发送的消息
            ObjectNode jsonNodes = JsonUtils.getObjectNode((String) msg);
            String msgtype = jsonNodes.get("msgtype").asText();
            if (EnMsgType.EN_MSG_ACK.toString().equals(msgtype)) {
                String srctype = jsonNodes.get("srctype").asText();
                if (EnMsgType.EN_MSG_LOGIN.toString().equals(srctype)) {
                    //登录操作
                    queue.offer(jsonNodes.get("code").asInt());
                }else if(EnMsgType.EN_MSG_GETINFORMATION.toString().equals(srctype)){
                    //存取信息
                     Nickname = jsonNodes.get("Nickname").asText();
                     Signature = jsonNodes.get("Signature").asText();
                    linkmen.label_1.setText(Nickname);
                    linkmen.field.setText(Signature);
                }else if (EnMsgType.EN_MSG_CHAT.toString().equals(srctype)){
                    //发送端返回消息
                    queue.offer(jsonNodes.get("code").asInt());
                }else if (EnMsgType.EN_MSG_GET_ID.toString().equals(srctype)){
                    int uid = jsonNodes.get("uid").asInt();
                    queue.offer(uid);
                }else if (EnMsgType.EN_MSG_GET_FRIEND.toString().equals(srctype)){
                    //获取登录用户的好友
                    int count = jsonNodes.get("count").asInt();
                    login.friend = new String[count];
                    for ( int i = 0;i<count;i++){
                        login.friend[i] = jsonNodes.get("res"+i).asText();
                        System.out.println(jsonNodes.get("res"+i));
                    }
                }else if (EnMsgType.EN_MSG_ADD_FRIEND.toString().equals(srctype)){
                    //添加好友
                    queue.offer(jsonNodes.get("code").asInt());
                }else if (EnMsgType.EN_MSG_DEL_FRIEND.toString().equals(srctype)){
                    //删除好友
                    queue.offer(jsonNodes.get("code").asInt());
                }else if (EnMsgType.EN_MSG_ACTIVE_STATE.toString().equals(srctype)){
                    //好友在线状态
                    queue.offer(jsonNodes.get("code").asInt());
                }
            }else if (EnMsgType.EN_MSG_VERIFY_PASSWORD.toString().equals(msgtype)){
                //修改密码
                int code = 0;
                code = jsonNodes.get("code").asInt();
                queue.offer(code);
            }else if (EnMsgType.EN_MSG_CHAT.toString().equals(msgtype)){
                //接收端接受消息  封装朋友昵称
                String message = " "+ jsonNodes.get("message").asText();
                //聊天显示框读取消息
                ChatFrame.sb.append(message+"\n");
                ChatFrame.displayTextPanel.setText(ChatFrame.sb.toString());
            }
        }
    
    }
    
    

    3.linkmen.java

    这是登录成功的界面
    
    package chat.Frame.chat;
    
    import chat.Frame.operation.alterColumn.changeNickname;
    import chat.Frame.operation.alterColumn.changePassword;
    import chat.Frame.operation.alterColumn.changeSignature;
    import chat.Frame.operation.friendHandle.addFriend;
    import chat.Frame.operation.friendHandle.delFriend;
    import chat.Frame.tipFrame;
    import chat.Project.services.sendServers;
    import io.netty.channel.Channel;
    
    import javax.swing.*;
    import javax.swing.event.ListSelectionEvent;
    import javax.swing.event.ListSelectionListener;
    import java.awt.*;
    import java.awt.event.ItemEvent;
    import java.awt.event.ItemListener;
    
    
    /**
     * 联系人界面
     */
    public class linkmen extends JFrame {
        //容器
        private JFrame frame;
        //标签
        private JLabel  label_2, label_3, label_4, label;
        //昵称
        public static JLabel label_1;
        //状态框
        private JComboBox box, box_1, box_2;
        //图片
        private ImageIcon icon_1, icon;
        //文本
        private JTextField  field_1;
        //个性签名
        public static JTextField field;
        //面板
        private JPanel panel_1, panel_3, panel;
        //滚动面板
        public JScrollPane panel_2;
        //列表
        public static JList list;
        //与服务端通信的通道
        private Channel channel;
        //用户的id
        private Integer id;
        //暂存oldPasswd
        public static JLabel label_5,label_6;
        //好友列表数组
        private String[] fd;
        //列表
        public static DefaultListModel<String> model;
    
        public linkmen(Integer id, Channel channel,String[] fd) {
            this.id = id;
            this.channel = channel;
            this.fd = fd;
        }
    
        public void init() {
            //初始化面板1并设置信息
            panel_1 = new JPanel();
            panel_1.setLayout(null);
            panel_1.setLocation(0, 0);
            panel_1.setBorder(BorderFactory.createTitledBorder("资料卡"));
            panel_1.setSize(new Dimension(295, 148));
            panel_1.setOpaque(false);
    
    
            //初始化面板3并设置信息
            panel_3 = new JPanel();
            panel_3.setLayout(null);
            panel_3.setBorder(BorderFactory.createTitledBorder("系统设置"));
            panel_3.setLocation(0, 617);
            panel_3.setSize(new Dimension(295, 55));
            panel_3.setOpaque(false);
    
            //设置头像标签
            label_2 = new JLabel(new ImageIcon("E:\\聊天软件\\untitled\\src\\imageSource\\4.png"));
            label_2.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
            label_2.setBounds(15, 15, 100, 100);
            panel_1.add(label_2);
    
            //初始暂存标签
            label_5 = new JLabel();
            label_6 = new JLabel();
    
            //设置昵称标签
            label_1 = new JLabel("");
            label_1.setBounds(130, 10, 100, 30);
            label_1.setFont(new Font("宋体", Font.PLAIN, 18));
            panel_1.add(label_1);
    
            list = new JList<String>(model);
            //设置每个列表的高
            list.setFixedCellHeight(20);
            list.setSelectionBackground(new Color(0xD8FF2F));
            list.addListSelectionListener(new ListSelectionListener() {
                @Override
                public void valueChanged(ListSelectionEvent e) {
                    //打开一个聊天窗口
                    if (e.getValueIsAdjusting()) {
                        for (int i = 0; i < model.size(); i++) {
                            if (model.get(i).equals(list.getSelectedValue())){
                                //获取id有错误
                                int ids = new sendServers(channel).getId((String) list.getSelectedValue());
                                if (ids!=0) {
                                    new sendServers(channel).friendIsActive(ids);
                                    new ChatFrame(ids, channel).setVisible(true);
                                }else{
                                    System.out.println("好友不存在");
                                }
                            }
                        }
                    }
                }
            });
    
            //初始化面板二
            panel_2 = new JScrollPane(list);
            panel_2.setBorder(BorderFactory.createTitledBorder("联系人"));
            panel_2.setLocation(0, 147);
            panel_2.setSize(new Dimension(295, 470));
            panel_2.getViewport().setOpaque(false);
            list.setOpaque(false);
            panel_2.setOpaque(false);
    
            //设置在线状态bBox();
            box = new JComboBox();
            box.addItem("✅在线");
            box.addItem("\uD83D\uDCBF隐身");
            box.addItem("\uD83D\uDCBB忙碌");
            box.addItem("❎离线");
            box.setBounds(200, 10, 70, 30);
            panel_1.add(box);
    
            //设置个性签名的标签
            label_4 = new JLabel("个性签名:");
            label_4.setFont(new Font("宋体", Font.PLAIN, 16));
            label_4.setForeground(Color.BLUE);
            label_4.setBounds(120, 50, 100, 20);
            panel_1.add(label_4);
    
            //设置文本
            field = new JTextField("");
            field.setBounds(120, 80, 160, 30);
            panel_1.add(field);
    
            label_3 = new JLabel("\uD83D\uDD0D");
            label_3.setForeground(Color.RED);
            label_3.setBounds(10, 122, 20, 20);
            panel_1.add(label_3);
    
            //设置搜索栏
            field_1 = new JTextField();
            field_1.setBounds(30, 120, 250, 25);
            panel_1.add(field_1);
    
            //对面板三进行初始化
            box_1 = new JComboBox();
            box_1.addItem("\uD83D\uDD12\uD83D\uDD28\uD83D\uDD13");
            box_1.addItem("修改密码");
            box_1.addItem("修改昵称");
            box_1.addItem("修改签名");
            box_1.setBounds(8, 20, 100, 25);
            panel_3.add(box_1);
            box_1.addItemListener(new ItemListener() {
                @Override
                public void itemStateChanged(ItemEvent e) {
                    if ("修改签名".equals(box_1.getSelectedItem())) {
                        //执行一次
                        if (e.getStateChange() == ItemEvent.SELECTED) {
                            changeSignature changeSignature = new changeSignature(linkmen.this);
                            changeSignature.setVisible(true);
                            field.setText(changeSignature.jTextField.getText());
                            String signature = field.getText();
                            //存储签名的方法
                            new sendServers(channel).modifySignature(signature, id);
                        }
                    }
                    if ("修改密码".equals(box_1.getSelectedItem())) {
                        if (e.getStateChange() == ItemEvent.SELECTED) {
                            changePassword changePassword = new changePassword(linkmen.this);
                            changePassword.setVisible(true);
                            label_5.setText(changePassword.oldPassword.getText());
                            String oldPasswd = label_5.getText();
                            label_6.setText(new String(changePassword.newPassword.getPassword()));
                            String newPasswd = label_6.getText();
                            //进行验证
                            new sendServers(channel).verifyPasswd(oldPasswd, id,newPasswd);
    
                        }
                    }
                    if ("修改昵称".equals(box_1.getSelectedItem())) {
                        if (e.getStateChange() == ItemEvent.SELECTED) {
                            changeNickname changeNickname = new changeNickname(linkmen.this);
                            changeNickname.setVisible(true);
                            label_1.setText(changeNickname.jTextField.getText());
                            String nickname = label_1.getText();
                            //存储昵称
                            new sendServers(channel).modifyNickname(nickname, id);
                        }
                    }
                }
            });
            //添加好友、删除好友
            box_2 = new JComboBox();
            box_2.addItem("\uD83D\uDC65");
            box_2.addItem("添加好友");
            box_2.addItem("删除好友");
            box_2.setBounds(170, 20, 100, 25);
            box_2.addItemListener(new ItemListener() {
                @Override
                public void itemStateChanged(ItemEvent e) {
                    if ("添加好友".equals(box_2.getSelectedItem())) {
                        if (e.getStateChange() == ItemEvent.SELECTED) {
                            addFriend addFriend = new addFriend(linkmen.this);
                            addFriend.setVisible(true);
                            //读取要搜索的ID
                            String friendIds = addFriend.jTextField.getText();
                            //判断是否是字符串
                            if (judgeDigit(friendIds)){
                                int friendId = Integer.parseInt(friendIds);
                                //搜索数据库
                                new sendServers(channel).addFriendOperate(friendId,id,label_1.getText());
                            }else {
                                new tipFrame().init("输入参数错误");
                            }
                        }
                    }
                    if ("删除好友".equals(box_2.getSelectedItem())) {
                        if (e.getStateChange() == ItemEvent.SELECTED) {
                            delFriend delFriend = new delFriend(linkmen.this);
                            delFriend.setVisible(true);
                            //对其数据库进行删除操作
                            String friendIds = delFriend.TextField.getText();
                            //判断是否是字符串
                            if(judgeDigit(friendIds)){
                                int friendId = Integer.parseInt(friendIds);
                                //操作数据库
                                new sendServers(channel).delFriendOperate(friendId,id,label_1.getText());
                            }else{
                                new tipFrame().init("输入参数错误");
                            }
                        }
                    }
                }
            });
            panel_3.add(box_2);
            //设置frame信息
            frame = new JFrame();
            //设置窗体信息
            frame.setTitle("腾讯QQ");
            //给窗体设置图片
            icon_1 = new ImageIcon("E:\\聊天软件\\untitled\\src\\imageSource\\3.png");
            frame.setIconImage(icon_1.getImage());
            icon = new ImageIcon("E:\\聊天软件\\untitled\\src\\imageSource\\5.png");
            label = new JLabel(icon);
            //获取窗口的第二层,将label放入
            frame.getLayeredPane().add(label, new Integer(Integer.MIN_VALUE));
            //获取frame的顶层容器,并设置为透明
            panel = (JPanel) frame.getContentPane();
            panel.setOpaque(false);
            frame.setLayout(null);
            frame.setLocation(750, 150);
            frame.setSize(287, 700);
            frame.setVisible(true);
            frame.setResizable(false);
            label.setBounds(0, 0, 287, 700);
            frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
            frame.add(panel_1);
            frame.add(panel_2);
            frame.add(panel_3);
        }
    
        public void mian() {
            //初始化面板2并设置信息
            model = new DefaultListModel<>();
            for (int i = 0; i < fd.length; i++) {
                model.addElement(fd[i]);
            }
            init();
            //更新昵称和签名
            new sendServers(channel).update(id);
            //获取用户的昵称,和好友列表
    
            //设置签名和昵称字体初始样式和大小
            label_1.setFont(new Font("宋体", Font.PLAIN, 18));
            field.setFont(new Font("宋体", Font.PLAIN, 18));
        }
    
        //判断是否是数字
        private static boolean judgeDigit(String string){
            for (int i = 0; i < string.length(); i++) {
                if (!Character.isDigit(string.charAt(i))){
                    return false;
                }
            }
            return true;
        }
    }
    
    

    4.tipFrame

    提示操作状态窗口
    
    package chat.Frame;
    
    import chat.Frame.chat.linkmen;
    import chat.Frame.operation.alterColumn.changeNickname;
    
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    
    public class tipFrame extends JDialog {
    
        private Container container;
        //显示错误信息
        public JLabel label;
        //确认按钮
        private JButton button;
    
        public tipFrame(){
    
        }
    
        public void init(String msg){
            container = getContentPane();
            label = new JLabel(msg);
            label.setBounds(70,0,200,70);
            label.setFont(new Font("微软雅黑",Font.PLAIN,20));
            container.add(label);
            button = new JButton("确认");
            button.setBounds(35,50,140,40);
            container.add(button);
            setBounds(780,170,220,140);
            setLayout(null);
            setVisible(true);
            container.setBackground(new Color(0xD8FFD5));
            //提示窗口前置
            setAlwaysOnTop(true);
            button.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    tipFrame.this.dispose();
                }
            });
        }
    }
    
    

    6.运行例图

    1.登录界面在这里插入图片描述

    注册账号和忘记密码没有添加事件现在就是个摆设

    2.联系人界面

    联系人界面
    这里面的所有功能都可以使用

    3.聊天界面

    聊天窗口
    这个里面表情按钮没弄好

    4.通信的过程

    在这里插入图片描述

    5.修改操作

    修改操作

    6.好友的操作

    在这里插入图片描述
    代码由于有点多不能全部贴出,希望三连,如需获取源码,可以扫描下方二维码或者搜索并关注微信订阅号“果汁简历”,回复“QQ” 获取源码。

    展开全文
  • 用户的个人信息管理(修改头像,昵称,性别,签名,手机号,地区。。。) 好友管理 查看天气 社交平台(聊天交友,参加活动,查看附近动态) 活动管理(发布活动,报名参加活动,评论活动) 朋友圈(发布动态,评价...
  • 显IPQQ制作(转)

    千次阅读 2008-01-30 10:04:00
    日志 > 个人日记 转载到我空间 复制本文网址 隐藏签名档 大字体 选用该信纸上一篇|下一篇|返回日志列表设置置顶 | 编辑 | 删除显IPQQ制作(转)发表于:2008年1月30日 9时29分15秒阅读(0)评论(0)本文链接:...
  • 来源:blog.csdn.net/weixin_44048140一. 功能实现1.修改功能(密码、昵称、个性签名)2.添加好友、删除好友3.单聊功能4.判断好友是否在线二. 模块划分三....
  • 4.24 --解决GBK编码签名错误问题 4.25 --添加两个登录图标 4.27 --修改登录成功后跳转至首页,解决部分网站开启完善资料而无法通过QQ审核 5.09 --调整新增注意说明文字:新浪回调地址及登录按钮链接部分 6.10 --修改...
  • 目录:1.功能实现2.模块划分3.使用到知识4.部分代码实现5.运行例图1.功能实现1.修改功能(密码、昵称、个性签名)2.添加好友、删除好友3.单聊功能4.判断好友是否在线2.模块划分...
  • 2.添加好友、删除好友 3.单聊功能 4.判断好友是否在线 2.模块划分 == 3.使用的知识 netty swing 集合等同步阻塞队列synchronousQueue 数据库MySQL中的CRUD C3p0连接池 JSON字符串 == 4.部分代码实现 ...
  • Foxmail v7.0.1.87

    千次阅读 2011-12-29 23:16:31
    增加了IMAP服务器删除邮件后本地保留邮件备份的功能 (了解详情)2.增加了IMAP压缩收取功能(支持Gmail等帐号)3.增加了写邮件、编辑签名时的html源码编辑功能4.增加了邮件预览时邮件头信息可折叠功能 (了解详情)5....
  • 注意:.git 目录中存放的是本地库相关的子目录和文件,不要删除,也不要胡乱修改。 2. 设置签名 形式用户名:tom Email地址:test@qq.com 作用:区分不同开发人员的身份 辨析:这里的设置的签名和登录远程库...
  • git和github学习笔记

    2019-03-11 20:42:11
    设置签名: 上图系统用户级别邮件设置命令有误,应该是 git config --global user.email XXXX@qq.com 二、git本地库的创建和删除: 鼠标右键点击Git Bash Here打开控制台 初始化git本地库:$ git init 查看...

空空如也

空空如也

1 2 3 4 5 ... 9
收藏数 175
精华内容 70
关键字:

qq签名删除