`
huangfeiNetJava
  • 浏览: 39654 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

仿QQ图片发送实现

阅读更多

    这两天断断续续把仿QQ通信系统完善,在没有一点基础的情况下完成图片的发送,还是很受鼓舞的。下面是一些具体细节和实现:

      首先,我们在窗体上添加一个“图片”按钮,然后添加一个监听器,当我们点击这个按钮时,弹出图片选择器,我的图片选择器是用JList实现的,我们可以再新建一个窗体,将JList添加到窗体上,JList里面添加图片元素就完成了第一步。

      代码实现:

 

      // 列表模型,添加元素
    DefaultListModel listModel = new DefaultListModel();
    ImageIcon icon1 = new ImageIcon("images/发火.png");
    ImageIcon icon2 = new ImageIcon("images/哭泣.png");
    ImageIcon icon3 = new ImageIcon("images/我晕.png");
    ImageIcon icon4 = new ImageIcon("images/2008328111941.png");
    ImageIcon icon5 = new ImageIcon("images/2008328111958.png");
    ImageIcon icon6 = new ImageIcon("images/200832811204.png");
    ImageIcon icon7 = new ImageIcon("images/200832811209.png");
    listModel.addElement(icon1);
    listModel.addElement(icon2);
    listModel.addElement(icon3);
    listModel.addElement(icon4);
    listModel.addElement(icon5);
    listModel.addElement(icon6);
    listModel.addElement(icon7);
    // 根据模型实例化JList
    final JList pictureList = new JList(listModel);
    // 设置JList单选属性
    pictureList
      .setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
    // 元素水平显示
    pictureList.setLayoutOrientation(JList.HORIZONTAL_WRAP);
    // 元素自动换行
    pictureList.setVisibleRowCount(-1);
    // JList是轻量级组件,要把它添加到窗体上
    final JFrame jf1 = new JFrame();
    jf1.setLocationRelativeTo(null);
    jf1.setSize(96 * 4 + 30, 192 + 50);
    jf1.getContentPane().add(pictureList);
    jf1.setUndecorated(true);// 去边框,调用方法就行了
    jf1.setVisible(true);
    pictureList.setBounds(0, 0, 96 * 4 + 20, 192 + 50);

 

JList(ListModel dataModel)
          根据指定的非 null 模型构造一个显示元素的 JList
JList(Object[] listData)
          构造一个 JList,使其显示指定数组中的元素。

以上为JList常用的两种构造方法,我用的是模型参数,这样便于扩展。

   当然,会发现点击JList的元素后没有反应,因为我们没有给它添加事件监听,我们可以添加双击事件,单击事件等,切莫认为JList有默认的事件监听。

  

   以下为一些零散的知识点,但是零散就是精华啊:

   1.要把一个窗体关闭,我们用dispose(),而不是用setVisible(false)。

   2.JList里的元素是有顺序的,我们可以用getSelectedIndex()得到选中元素的索引(从0开始)。

   3.要得到JList里面的对象,可以用getSelectedValue()方法。

  

   至此,JList已经完成,但是图片发送怎么搞呢?

   首先,我们用JTextPane来接收图片(JTextArea为纯文本编辑,不可插入图片),JTextPane可以编辑文字,插入图片,设置文字格式等,功能比JTextArea强大。

   然后,JTextPane里面有insertICon(Icon icon)的方法可以插入图片。

   在JTextPane中添加文字,我用的是StyledDocument类,这个类可以从JTextPane的getStyledDocument()获得,是用来编辑文字和设置文字格式的。

   这里有一点是要注意的,就是插入光标的位置,有一个方法可以让光标移到JTextpane末尾,setCaretPosition(length);那时候图片插入的位置总是东插一个,西插一个,有了这个方法后,这个问题就解决了。

  

   都知道,到现在我们还没有实现在两个客户端之间发送表情。

   我用的是类似腾讯的表情发送方法:

   如果大家留心,会发现别人发来的表情会存到你的硬盘的一个地方(具体自己找找),然后再取出图片文件发送到你的聊天窗口上,就是这个流程,思路有了,细节就的自己实现了,将聊天系统的文件发送功能的代码稍微改一下就行了……

 

 

分享到:
评论

相关推荐

    高仿qq发送图片时"编辑图片"功能

    高仿qq图片编辑,支持多点触控放大缩小移动,涂鸦,选择涂鸦颜色,画笔粗细,橡皮擦擦除功能

    仿QQ图片表情发送

    此demo实现和QQ类似的图片表情发送功能。

    仿QQ微信高德地图实现发送位置

    可以做到的功能,定位,获取周边信息,滑动重新定位,点击周边位置设置为地图中心点,地图截图保存,6.0申请权限,发送位置带图片,完美功能实现

    世上最高仿QQ2012的局域网聊天程序-完美好友列表(绝对经典)

    项目名称:CC2012(经典仿QQ实例源码) 下载文件内容: word格式说明书, CC2012-C#源码, MYCC数据库与查询文件脚本 源码实现功能: 1.仿QQ的CC登录界面采用网络美女恩典作为主题类型,界面更好看又养眼,界面相似度...

    在VS6.0环境下实现仿QQ多功能聊天

    主要功能:通过MFC实现仿QQ多功能聊天项目,主要功能有发送文字,图片以及传输文件,是学习网络编程的好资料。

    仿QQ的C#源码、仿QQ的C#源码

    根据企业对QQ系统的要求,本系统可以实现以下目标:  操作简单方便、界面简洁美观。  每个客户端只能注册一次。  可以在局域网中实现文字及大图片的传输。  可以实现局域网视频。  可以实现多用户的信息...

    仿QQ聊天界面

    实现最新版的QQ聊天界面,发送表情,发送图片,好友列表,QQ侧滑菜单,下拉刷新,资源有点大,图片太多了。

    仿QQ即时通讯软件2023最新版+MySQL+JAVA

    仿QQ即时通讯软件项目主要是综合应用java基础知识,集合运用,DAO数据库技术,MySQL数据库技术,多线程技术,IO流技术,socket网络通讯技术,Swing界面编程技术等,该项目的主要功能如下: 1.实现用户注册及修改功能...

    Android仿QQ项目

    该项目是仿QQ的Android小项目,实现登录注册,添加好友,即时聊天,修改密码等功能。使用MySQL5.6数据库,即时聊天通过集成网易云信实现,聊天界面可调用系统相机,但视屏聊天,语音通话,发送图片等功能未实现

    基于java的仿qq聊天程序的设计与实现 +代码

    聊天窗口发送文件文字与图片的代码如下: //发送文字 public void insertString(String s, SimpleAttributeSet attributset) { Try { doc.insertString(doc.getLength(), s, attributset); doc.insertString...

    高仿QQ2017界面

    项目为安卓平台的一款模仿腾讯QQ的即时通讯APP,整体框架为目前大多数优质应用主流框架(侧滑菜单+底部导航),UI框架可供绝大数应用直接引用,主要模仿腾讯QQ,实现了发送文本与图片功能,应用界面十分漂亮,可供...

    安卓自定义View实现图片上传进度

    安卓自定义View实现图片上传进度,仿qq聊天发送图片时进度显示

    仿QQ聊天系统.zip

    根据企业对QQ系统的要求,本系统可以实现以下目标:  操作简单方便、界面简洁美观。  每个客户端只能注册一次。  可以在局域网中实现文字及大图片的传输。  可以实现局域网视频。  可以实现多用户的信息...

    仿QQ2013源码

    (C#)仿QQ2013局域网通讯源码一份, 初级版参考通讯源码一份 二、实现功能: 1.高仿界面100%,让你分辨不清楚那个才是真的QQ。 2.四边阴影,毛边效果。 3.密码键盘输入,防护更贴心。 4.圆角窗体,润滑如圆。 5.登录...

    高仿QQ2013源码

    15.聊天窗口可发送图片,文件,表情,还有震动。 16.聊天窗口输入框和显示框都采用半透明技术,和真的QQ一样漂亮,有点闪烁,但是不影响整体使用。 17.更是有和QQ如出一辙的QQ截图。QQ截图采用网上好友开发的截图,...

    基于qt的截图工具,实现截图后进行多种编辑,采用仿QQ截图控制面板

    基于qt的截图工具实现了截图后进行多种编辑,采用仿QQ截图控制面板,已经进行打包,若有兴趣,可在博客中留言留下邮箱,可将主要代码发送分享。

    基于MFC 仿QQ截屏

    截屏,有半透明效果,选择区域可自由放缩和移动,可涂鸦,可另存为图片,双击则复制到剪贴板,有选择区域提示

    使用java实现的仿QQ登陆以及文件传输项目

    下载后请修改数据库连接部分,以及MyClient以及Myserver中的ip. 文件传输部分使用的是Tcp+Udp。前者发送文件长度和名称后者保证传输速度。可以传输多种文件,但不支持图片传输。

    高仿QQ2013

    15.聊天窗口可发送图片,文件,表情,还有震动。 16.聊天窗口输入框和显示框都采用半透明技术,和真的QQ一样漂亮,有点闪烁,但是不影响整体使用。 17.更是有和QQ如出一辙的QQ截图。QQ截图采用网上好友开发的截图,...

    安卓开发_高仿手机QQ_MingQQ源码,采用WebQQ协议

    3、发送编辑框的复制剪切粘贴图片功能。 4、长按气泡弹出复制剪切粘贴菜单功能。 5、消息发送失败处理。 6、网络状况变化通知处理。 目前已知的未解决的小缺陷: 1、表情选择界面的删除键不能够长按...

Global site tag (gtag.js) - Google Analytics