Java实现类MSN、QQ好友上线通知界面-Java基础-Java-编程开发

Java实现类MSN、QQ好友上线通知界… 相信大家都使用过MSN,QQ这样的即时聊天类软件,对于它们的好友上线提示功能并不陌生吧?从屏幕右下角弹出一个小界面,慢慢上升,最后消失。我们能不能在自已的程序中也做出相同的功能呢?能!笔者现用JAVA和eclipse的SWT用户界面组件实现这个功能。   什么是SWT呢?   SWT原来是eclipse项目组为开发eclipse IDE所编写的图形界面API,运行时,其先判断本机是否有相同的界面元 阅读详情
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>  相信大家都使用过MSN,QQ这样的即时聊天类软件,对于它们的好友上线提示功能并不陌生吧?从屏幕右下角弹出一个小界面,慢慢上升,最后消失。我们能不能在自已的程序中也做出相同的功能呢?能!笔者现用JAVA和eclipse的SWT用户界面组件实现这个功能。

  什么是SWT呢?

  SWT原来是eclipse项目组为开发eclipse IDE所编写的图形界面API,运行时,其先判断本机是否有相同的界面元素,如果有则直接调用显示,如没有才进行模拟显示。其运行机制使速度比AWT,SWING快很多。

  了解更多请看:http://www.eclipse.org/swt

  编写思路

  先取得用户屏幕大小,用屏幕高度减去popup界面的高度计算出popup界面在屏幕显示的最高位置(当界面移动到此位置时就停止移动)。
Rectangle area = Display.getDefault().getClientArea();
int upPosition = area.height - 100;
  用屏幕高度加上popup界面的高度就计算出popup界面的初始位置(初始化时不可见,然后慢慢上移到upPosition点后停止移动,再显示若干秒后消失)。

nt downPosition = area.height 100;

  移动位置我们用线程实现,当初始化界面后,调用start()方法运行此线程,在线程中循环判断downPosition的大小是否小于upPosition,如果小于的话说明还未到停止的时候,设置popup界面的边框为downPosition,并暂停10毫秒,如果downPosition大于upPosition的,说明popup界面已移动到了最高位置。调用sleep()暂停5秒钟后关闭界面并退出程序。就这么简单,ok, Let's go! 下面给出整个程序代码:

  描述:

  (Test为主界面,点击上面的button后,调用Popup在右下角显示像MSN和QQ一样的popup界面。)

  图一为源代码中的实现,图二为修改过后的界面(和QQ的有点像吧。)


图一             图二
  源代码:
// Test.java
//主界面,其中只有一个button,当点击时调用Popup在右下角显示像MSN和QQ一样的popup界面。

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;

public class Test {

 public static void main(String[] args) {

  final Display display = new Display();
  Shell shell = new Shell();
  shell.setText("aaa");
  shell.setSize(250, 150);

  final Button button = new Button(shell, SWT.NONE);
  button.setBounds(50, 20, 100, 25);
  button.setText("button");
  //监听button的事件,当用户点击时调用Popup类显示popup界面。
  button.addSelectionListener(new SelectionAdapter() {
   public void widgetSelected(SelectionEvent e) {
    //实例化popup类,构造函数为popup界面中出现的提示信息。
    Popup popup = new Popup("您的好友xxx上线了。");
    popup.start();
   }
  });

  shell.open();

  while (!shell.isDisposed()) {
   if (!display.readAndDispatch()) {
    display.sleep();
   }
  }
  display.dispose();
 }
}

// Popup.java
//实现像MSN,QQ一样的好友上线通知popup

import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;

public class Popup extends Thread {

 Shell shell;

 protected int moveStep = 2; //每次移动的pixel
 protected int upPosition; //能移动到的最上面坐标
 protected int downPosition; //当前popup的边框坐标
 protected int leftPosition; //popup左边边框坐标 public Popup(final String message) {

 shell = new Shell(SWT.ON_TOP);
 Text text = new Text(shell, SWT.MULTI | SWT.WRAP);
 text.setBounds(10, 20, 180, 80);
 text.setBackground(shell.getBackground());
 text.setText(message);

 //取屏莫大小
 Rectangle area = Display.getDefault().getClientArea();

 upPosition = area.height - 100;//计算出popup界面在屏幕显示的最高位置
 downPosition = area.height 100;//计算出popup界面的初始位置
 leftPosition = area.width - 180;

 shell.setSize(180, 100);

 //初始化popup位置
 shell.setLocation(leftPosition, downPosition);

 shell.open();

}

public void run() {

 Display display = shell.getDisplay();
 while (true) {
  try {
   Thread.sleep(10);

   //判断当前位置是否小于能出现的最高位置,小于的话就说明还可以向上移动。
   if ((downPosition - moveStep) >upPosition) {
    display.asyncExec(new Runnable() {
     public void run() {
      shell.setLocation(leftPosition, downPosition- moveStep);
      downPosition -= moveStep;
     }
    });
    //此时已经移动到了最高位置,显示5秒钟后,关闭窗口并退出。
   } else {
    Thread.sleep(5000);
    display.asyncExec(new Runnable() {
     public void run() {
      shell.dispose();
     }
    });
   }
  } catch (InterruptedException e) {
   e.printStackTrace();
  }
 }
}
}
  上面的源程序就完成了图一中的功能,读者可以自行修改,让其界面,功能更强大。

Java后台实现前台下线通知推送 Java后台实现前台下线通知推送,本例采用Servlet实现,简单易懂,有无经验的都易上手,在此感谢大家对我的支持 立即下载

相关推荐

仿QQ聊天系统

java仿QQ登陆系统

Java实现类MSN、QQ好友上线通知界面

  相信大家都使用过MSN,QQ这样的即时聊天类软件,对于它们的好友上线提示功能并不陌生吧?从屏幕右下角弹出一个小界面,慢慢上升,最后消失。我们能不能在自已的程序中也做出相同的功能呢?能!笔者现用JAVA和eclipse的SWT用户界面组件实现这个功能。   什么是SWT呢?  SWT原来是eclipse项目组为开发eclipse IDE所编写的图形界面API,运行时,其先判断本机是否有相同的界面

键者天行 6805

java 高仿QQ8.x版本好友列表(socket聊天室项目)

高仿QQ8.x版本的好友界面,jdk版本1.8,正常1.6以上都可以直接运行,1.5版本应该改下泛型部分就可以正常运行。 主要是好友列表的界面效果,其它的部分没有细做,有需要的可以下载 预览图: (http://ouvjpvjng.bkt.clouddn.com/20170906134345_140050_clipboard.png) 作者:Scruel 转载请注明出处

巧妙利用java实现在线聊天系统教程方法

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。a)、创建Socket对象,指明需要连接的服务器的地址和端口。c)、建立连接后,通过输入输出流读取客户端发送的请求信息。a)、创建ServerSocket对象绑定监听端口。b)、建立连接后,通过输出流向服务器发送请求信息。b)、通过accept()方法监听客户端的请求。d)、通过输出流向客户端发送请求信息。c)、通过输入流获取服务器的响应信息。// 服务器端是否启动。e)、关闭相关资源。

我的博客,不一样的自我表达 2235

Innovus中_clock_gen skew group的隐藏陷阱:如何避免自动分组导致的时序问题

本文深入剖析了在Innovus工具进行时钟树综合(CTS)时,`_clock_gen` skew group自动分组机制可能引发的隐蔽时序问题。文章通过实际案例,解释了该机制如何错误地将分频寄存器与配置寄存器归为一组,从而破坏时钟域边界并导致post-CTS时序违例,并提供了关闭自动提取、手动精确定义skew group等有效解决方案。

gpu4optimizer的博客 266

告别高延迟!用RV1106+4G模块+libdatachannel搭建低功耗WebRTC监控,保姆级避坑指南

本文详细介绍了如何利用RV1106低功耗处理器、4G模块和libdatachannel库构建嵌入式WebRTC监控系统,解决高延迟问题。通过硬件选型、系统优化和核心代码实现,提供了一套完整的低功耗实时视频传输方案,特别适合智能安防和工业物联网应用。

weixin_42527401的博客 193

Java 实现提示音

import java.io.InputStream; import java.net.URL; import sun.audio.AudioPlayer; import sun.audio.AudioStream; public class MyAudioPlayer { private URL url = null;// 音乐文件的URl private A

柚子茶0902 3555

考虑风和浪的影响的旋筒帆船航线优化方法研究

针对旋筒帆船进行航线优化的实现方法,包括升阻力系数的数值模拟、升阻力系数的多元非线性回归建模、旋筒帆船6DOF摇荡运动建模分析以及考虑风、浪影响的旋筒帆船的航线优化研究。

m0_63225885的博客 1164

java 如何发提示_消息提醒-如何实现收到待办给QQ发送提醒?

一、前期准备一台windows服务器(用于运行QQ机器人)下载QQ机器人框架二、QQ机器人配置1、解压前面下载的机器人框架和httpapi2、打开解压后的 小栗子框架.exe3、在用户列表右击选择添加单个4、添加后右击点添加后的账号选择登录选中QQ5、点击应用中心==>点击导入插件==>选中前面下载的httpapi.dll6、应用中心中选中刚导入的HTTP API==>点击启用=...

weixin_34731498的博客 746

嵌入式开发实战:LWIP中PPP协议配置全流程(含CHAP认证避坑指南)

本文是一份嵌入式开发实战指南,详细解析了如何在STM32平台上配置LWIP协议栈中的PPP协议,实现从串口到IP网络的完整连接。内容涵盖工程搭建、源码整合、关键配置、串口驱动绑定、状态管理以及CHAP认证等核心流程,并重点提供了CHAP认证失败的排查与避坑指南,帮助开发者高效打通嵌入式设备的网络连接。

plant的博客 464

【QT】基于QSerialPort的跨平台串口通信实战指南

本文是一份基于Qt QSerialPort模块的跨平台串口通信实战指南。详细介绍了从硬件基础、QSerialPort核心类使用、参数配置、设备自动发现到数据异步读写和错误处理的完整流程,并通过构建一个功能齐全的串口调试助手实例,帮助开发者快速掌握在Windows、Linux和macOS系统下进行高效、稳定的串口应用开发。

a1b2c3d的博客 982

java qq好友上线 好友面板更新如何实现_Java实现类MSN、QQ好友上线通知界面

// Test.java//主界面,其中只有一个button,当点击时调用Popup在右下角显示像MSN和QQ一样的popup界面。import org.eclipse.swt.SWT;import org.eclipse.swt.events.SelectionAdapter;import org.eclipse.swt.events.SelectionEvent;import org.ecli...

weixin_36472962的博客 326

NXP S32k3 MCAL EMIOS PWM配置

NXP s32k 配置 EMIOS PWM

Leon_0125的博客 2703

SWT实现类MSN、QQ好友上线通知界面

本文转载自Java天下社区:http://www.javatx.cn/index.jsp由ajie发表相信大家都使用过MSN,QQ这样的即时聊天类软件,对于它们的好友上线提示功能并不陌生吧?从屏幕右下角弹出一个小界面,慢慢上升,最后消失。我们能不能在自已的程序中也做出相同的功能呢?能!笔者现用JAVA和eclipse的SWT用户界面组件实现这个功能。    什么是SWT呢?  SWT原来是ecli

了我欣艺 1950

手把手教你学simulink(44.1)--串励直流电动机场景示例:基于Simulink开发一个串励直流电动机电压控制仿真模型

高启动转矩:由于励磁绕组和电枢绕组串联连接,电机在启动时可以产生较大的转矩。速度随负载变化:由于励磁电流和电枢电流是同一电流,电机的速度会随着负载的变化而显著变化。适用于重载启动:适合用于需要高启动转矩的应用,如起重机、牵引系统等。

MHD0815的博客 341

华为OD机试双机位C卷-分披萨 (Py/Java/C/C++/Js/Go)

华为OD机试(机考)双机位C卷 【分披萨】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为od机试 - 分披萨。

qq_45776114的博客 1397

MSN进行时 msning

  MSN应该也是微软在2004年的一个重点产品吧,从进入2004年开始近期关于MSN的消息还是不少的。微软的MSN.COM网站大幅改版,体现给最终用户的除了速度的提升外更多的个性化机制也是吸引更多用户的一个卖点。然后MSN Explorer 9在网络上频频展露,有人将MSN Premium 9 Rip出来,很多用户使用过或正在使用这个版本,除了能将个人的Hotmail或MSN邮箱变成25M的之外

dankes 2127

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

JAVA实现MSN Messenger功能

 现在的即时通讯软件琳琅满目,大家耳熟能详的无非就是腾讯公司的QQ,微软公司的MSN Messenger以及网易的泡泡,就用户量而言这三者应该是名列前茅的。但是腾讯公司的QQ以及网易的泡泡由于并没有公开其客户端与服务器之间的通讯协议导致开发者很难利用起这一庞大的用户群体来开辟另外的服务渠道。MSN Messenger这一由世界头号软件商-微软公司开发的即时通讯软件,凭借其与windows操作系统和

zaowei21的专栏 1791

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

[转载]怎样用Java实现MSN Messager的功能

怎样用Java实现MSN Messager的功能现在的即时通讯软件琳琅满目,大家耳熟能详的无非就是腾讯公司的QQ,微软公司的MSN Messenger以及网易的泡泡,就用户量而言这三者应该是名列前茅的。但是腾讯公司的QQ以及网易...

congji3817的博客 207

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

java调用msn、qq 及.exe程序总结

最近项目中需要调用msn和qq  所以就收集了一些相关自恋调用qq的方法:target=blank点击这里给我发消息对于qq 可以登录到http://imis.qq.com/webpresence/code.shtml 这里来这里设计和生成代码 调用msn的方法:点这里和我MSN聊天  下面是一个简单的例子:import java.io.*;public class R

Macroli 2537
上一篇: Web Service安全机制探讨-Java基础-Java-编程开发
下一篇: 可扩展的Java应用程序开发模式-Java基础-Java-编程开发
java169
博客等级 码龄19年 27粉丝 2568原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值