qq聊天界面 java_JAVA基于Swing和netty仿QQ界面聊天小项目
这是登录成功的界面
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 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(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;
}
}
qq聊天界面 java_JAVA基于Swing和netty仿QQ界面聊天小项目相关推荐
- 仿qq左滑删除listview_Java基于Swing和Netty仿QQ界面聊天小项目
点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:硬刚一周,3W字总结,一年的经验告诉你如何准备校招! 个人原创100W+访问量博客:点击前往,查看更多 来源:b ...
- Java基于Swing和Netty仿QQ界面聊天小项目
点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 来源:blog.csdn.net/weixin_44048 ...
- JAVA: 初级项目之基于Swing界面的仿QQ(三)
模块 进度 登录 √ 注册 √ 信息交互 √ 用户显示 √ 群显示 √ 点对点聊天 × 点对点聊天还有一个难点,发送表情和文件 发送表情 基于Swing界面中只有JTextPane可以以文本的格式输出 ...
- JAVA:初级项目之 基于Swing界面的仿QQ(二)
模块 进度 登录 √ 注册 √ 信息交互 √ 在上一章中已经完成了上述操作,若有问题的可以私聊一起研究. 在完成了登录操作后,通过信息的交互,成功进入到了主界面.这时候就面临了几个问题. 1:好友的显 ...
- 基于环信的仿QQ即时通讯的简单实现
代码地址如下: http://www.demodashi.com/demo/11645.html 我的博客地址 之前一直想实现聊天的功能,但是感觉有点困难,今天看了环信的API,就利用下午的时间动手试 ...
- 视频教程-网络聊天室Java基础版(Socket_Swing编程)仿QQ聊天-Java
网络聊天室Java基础版(Socket_Swing编程)仿QQ聊天 IT行业资深从业者,7年资深Java高级开发,Java架构师.曾就职银行.电信等行业多家上市公司.担任项目负责人,软件架构师.有丰富 ...
- 悄悄说--一个Swing界面的仿qq聊天软件
1.项目简介 一个仿QQ聊天的软件,实现了用户注册,登录,私聊,创建群组进行多人聊天 2.功能描述 用户进行注册自己的用户名,密码,以及个人简介,然后进行登录 当用户注册成功时,会弹出一个注册成功提示 ...
- Swing制作高仿QQ界面包含主界面、聊天窗口、系统设置窗口|圆角界面|透明|颜色|渲染|换肤
最近几天闲着没事,练习了一下.编写了一个模仿QQ的界面,主要是练习Swing.呵呵,基本上使用到了我博客前面讲的各种技术,在这里跟大家分享了.我们先来看看主界面: 左边的界面是用Swing ...
- Swing学习----------实现仿QQ注册功能
在上一次的博客中实现了一个仿QQ的登录界面,现在将实现一个注册QQ账号的功能,在本文中将制作一个QQ注册的页面,然后通过一些swing中的组件来获取用户的信息,最后通过点击注册按钮将注册信息保存到My ...
最新文章
- python的类和对象_Python类与对象实验
- Nodejs简介以及Windows上安装Nodejs
- RMAN 不完全恢复
- BAT脚本加防火墙455端口
- VS2015编译Poco+openssl,使用Poco发送HTTPS请求
- CentOS5.6下配置rsync内网同步数据到外网
- Django从理论到实战(part2)--virtualenvwrapper
- 装饰者模式如何拯救了我的一天
- 第二章导数与微分思维导图_线性代数第二章 矩阵 思维导图
- MyBatis中selectByExample和selectByExampleWithBLOBs区别
- 每日算法系列【LeetCode 312】戳气球
- 扇贝有道180920每日一句
- 微电影|小白创作微电影的辛酸
- linux安装Vim-plug和配置.vimrc文件
- 1.27(Bomb Game)
- python找不到文件怎么办_python中open找不到文件怎么解决
- 有一种存储英文单词的方法,是把单词的所有字母串在一个单链表上。为了节省一点空间,如果有两个单词有同样的后缀,就让它们共享这个后缀。下图给出了单词“loading”和“being”的存储形式。
- 前端文字点击出现蓝底
- 2020届校招浦发银行 信息科技 创新岗 面经及历年汇总~
- 【工业互联网】工业互联网