注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

千鸟

本blog所有日志均系原创 转载请注明出处

 
 
 

日志

 
 

在netbeans插件大赛的作品文档: IM Manager  

2007-06-09 17:57:48|  分类: J2SE |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
 想要这个插件的留下邮箱来

  在netbeans插件大赛的作品文档: IM Manager - souljava - 千鸟

 本文档包含如下板块:

1.       绪言

2.       插件的作用

3.       插件的使用(调用)方法

4.       模块的一些主要技术要点

5.       结束语                 

绪言

欢迎使用由刘柯netbeans6.0 m9 编写的基于java的集成聊天工具 IM Manager

我的联系方式: soulnew@gmail.com  欢迎咨询。Java桌面加油!!!

blog:http://souljava.blog.163.com/

注意:因为需要调用浏览器使用非http协议,目前只有在windows环境下才能发出IM交谈。 

 

                         插件的作用

IM Manager可以添加自己的在qqgtalkmsn中的联系人到同一个平台中,大大的方便自己的管理。

IM Manager 的文字框编写有超酷的文本过滤查找功能,不用输入好友的全名,就能出现带有关键字的所有好友。这个功能再也不只是在AJAX中能看到了^_^

后面会详细解释这个魔术功能的实现方式。

 在netbeans插件大赛的作品文档: IM Manager - souljava - 千鸟

如下图的例子:输入一个 q,和ql 时,List 的过滤反应。

 在netbeans插件大赛的作品文档: IM Manager - souljava - 千鸟

在netbeans插件大赛的作品文档: IM Manager - souljava - 千鸟

如果你不喜欢用文本的方式查找好友,可以点击All Friends 查看所有的好友。

添加好友:

在netbeans插件大赛的作品文档: IM Manager - souljava - 千鸟

在添加好友的时候你可以选择,一种或多种IM 作为好友的联系方式,但是姓名是区分好友的唯一方式

在netbeans插件大赛的作品文档: IM Manager - souljava - 千鸟

browse时,可以在本机上找张图片作为好友的头像。每张图片会被压缩成小于64X64象素。

当你点击了相应的好友会调用相应的IM 程序,如果朋友有多种联系方式时,会有选择框让你选择.

qq

 在netbeans插件大赛的作品文档: IM Manager - souljava - 千鸟

 

msn

 在netbeans插件大赛的作品文档: IM Manager - souljava - 千鸟

修改好友资料如下:

可以直接在内容里修改好友的资料

 

 在netbeans插件大赛的作品文档: IM Manager - souljava - 千鸟

 

               

                         插件的使用方法

IM Manager调用简单,IM Manager已经做成了继承自JPanel (javax.swing.JPanel) 的类,只要能放入JPanel的地方就能使用这个插件。

关键使用接口:

MessagePanel panel=new MessagePanel();

 

使用实例:

1.导入类

import com.soulnew.netbeansmessage. MessagePanel;

2. MessagePanel放入自己的框架

JFrame frame = new JFrame ("FilteredJList");      

        MessagePanel pane=new MessagePanel();  //关键使用接口     

        frame.getContentPane().add(pane);      

        frame.pack();

        frame.setVisible(true);

 

就这么简单^_^

 

IM Manager目前只能运行在windows 平台下调用IM 接口。

 

 

 

模块的一些技术要点如下

本部分的内容包含:

1.可浮动的带过滤功能的有图标的Jlist

2.通过浏览器调用IM 接口,以启动IM

 

一.可浮动的带过滤功能的有图标的Jlist  (最酷的^_^ )

 

这个功能借鉴到了《swing hacks》里面的Jlist 技巧,受益非潜。总结里面的东西配合这次的要求做出了独一无二的的hack可浮动的带过滤功能的有图标的Jlist

 

各个功能实现分开描述:

1.       浮动窗口

 在netbeans插件大赛的作品文档: IM Manager - souljava - 千鸟

给文本框JTextField添加 DocumentListener 监听

当有文本框有输入变化时,弹出窗口ListPanel,同时将JtextField里的内容复制到ListPane里的成员JtextField。这个魔术让用户感觉不到有新窗口弹出,他们会感到JtextField 自动增长了。^_^

在netbeans插件大赛的作品文档: IM Manager - souljava - 千鸟

ListPanel添加WindowFocusListener 监听

当用户焦点转移,触发changedUpdateListPanel 会自动关闭

 

 在netbeans插件大赛的作品文档: IM Manager - souljava - 千鸟

 

2..文本过滤

Jlist中实现.文本过滤

 

列表显示的关键过程是:列表要显示的内容 从自己的成员模型中调用getElementAtint index

我们要做的就是: 覆盖getElementAt(),把需要显示的东西通过getElementAt()返回给列表,就ok了。

 

如果不嫌烦可以看看下面我的详细做法:

ListPanel 的成员JtextField 监听到又输入变化时,调用 ListPanel的另一个成员Jlist(列表)的模型(getModel()),然后把要显示的内容模型的的成员ArrayList。重写的getElementAtint index)要干的事情就是返回ArrayLis的指定值,然后激活刷新(fireContentsChanged(this, 0, getSize()))来更新Jlist(列表)。

 在netbeans插件大赛的作品文档: IM Manager - souljava - 千鸟

 

3.Jlist 自定义显示。包括加入图片

 

当我们要在Jlsit放入自己定义的东西时。

我们上面调用的getElementAtint index)的返回值是其实是Object,那Jlist该怎么显示了?

哈哈,调用JlistsetCellRenderer(ListCellRenderer cellRenderer)

你只需要继承ListCellRenderer,告诉Jlist怎么处理通过getElementAtint index)得到的Objectok了。^_^

 

如果不嫌烦可以看看下面我的详细做法:

重写 ListCellRenderer的方法:

Component getListCellRendererComponent(JList list,

                Object value,

                int index,

                boolean isSelected,

                boolean cellHasFocus)

 

value:就是从model getElementAtint index)获得的对象

FriendsInfo item = (FriendsInfo) value;    //value转换成了自己的数据类型

frindsIconLabel.setText(item.getName());  // 在做好的面板上加上名字

frindsIconLabel.setIcon(item.getImageIcon());   //在做好的面板上加上图标

setColorsForSelectionState(friendPrototype, isSelected);// friendPrototype是个Jcomponent   //frindsIconLabel也会被加到Jcomponent

 return friendPrototype; 

 

 

二.通过浏览器调用IM 接口,以启动IM

(最麻烦的,不能跨平台了,谁能帮帮我-_-|||

 

考虑过使用netbeans提供的org.openide.awt.HtmlBrowser.URLDisplayer 来调用浏览器

但是因为调用IM接口是非http 协议,所以要编写代码针对不同的浏览器做调用。

 

1.用到的IM的调用接口方式如下

gtalk gtalk:chat?jid=Gmail 号码

qq tencent://message/?uin=qtencent://message/?uin=qq号码交谈

msn msnim:chat?contact=msn号码

 

2.window的平台运行bat脚本调用ie

ie.bat脚本如下编写:

set path=C:\"Program Files"\"Internet Explorer"

IEXPLORE %1=%2   ―――%1是调用接口,%2是用户号码

3. java中调用

String cmd=getClass().getResource(batfilename).toString();

                Process child = Runtime.getRuntime().exec("cmd.exe /c start /min "+cmd+" msnim:chat?contact "+fi.getMSN());

 

结束语

 

虽然这个插件用到netbeans独特的地方只有设计对话框的布局,但是我想说的是netbeans 真的太方便了。

  评论这张
 
阅读(1413)| 评论(7)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017