首先自我介绍下,本人非专职IT人员、纯粹是IT爱好者,也并非计算机专业毕业的,所用的Java知识也全凭空闲时间学习的,所以在很多地方代码不够精炼,也只是能实现

一些功能吧,当然也参考了一些前辈的文档等。写此篇博客也纯粹是把自己学到的写写笔记而已。好了废话不多说,开始吧!

首先简单介绍下SWT吧。在做这个局域网QQ时,为什么选择SWT估计稍微对Java有点了解的都知道Java用自带的AWT/SWING做桌面程序确实不咋的。而IBM开发的SWT在视觉上超过了它们了;然后有个eclipse有个插件(Jigloo,大家可以自行查找)安装后可以实现类似微软的VS一样拖动控件(毕竟什么都手写的话太累是吧?)。出于这样吧,就选择了SWT——虽然也是第一次接触。至于SWT相关的知识,也请大家去百度了解。

1、插件的安装与使用

说到这里,推荐大家去看篇博客http://blog.csdn.net/tangl_99/article/details/1396805。插件的安装已经说了,这里就直接来使用了,步骤如下:

1、新建一个Java工程,然后在src文件夹下建other

2、找到GUI Forms下的SWT(如果没有确认你的插件安装正确)

3、包名、类名自己写。注意红色的圈是SWT运行所需要的库

4、建好后就是这样的界面,这样对于一些控件你可以拖动到窗体上,然后写相关的事件代码即可。

5、写一个匿名内部类用来弹出一个对话框,看是不是比难看的AWT好多了?

接下来看看代码吧:

package Main;import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.FormAttachment;
import org.eclipse.swt.layout.FormData;
import org.eclipse.swt.layout.FormLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MenuItem;
import org.eclipse.swt.widgets.MessageBox;
import org.eclipse.swt.widgets.Shell;import com.cloudgarden.resource.SWTResourceManager;/**
* This code was edited or generated using CloudGarden's Jigloo
* SWT/Swing GUI Builder, which is free for non-commercial
* use. If Jigloo is being used commercially (ie, by a corporation,
* company or business for any purpose whatever) then you
* should purchase a license for each developer using Jigloo.
* Please visit www.cloudgarden.com for details.
* Use of Jigloo implies acceptance of these licensing terms.
* A COMMERCIAL LICENSE HAS NOT BEEN PURCHASED FOR
* THIS MACHINE, SO JIGLOO OR THIS CODE CANNOT BE USED
* LEGALLY FOR ANY CORPORATE OR COMMERCIAL PURPOSE.
*/
public class NewSWTApp extends org.eclipse.swt.widgets.Composite {private Button btnOK;{//Register as a resource user - SWTResourceManager will//handle the obtaining and disposing of resourcesSWTResourceManager.registerResourceUser(this);}public NewSWTApp(Composite parent, int style) {super(parent, style);initGUI();}/*** 界面初始化。主要的工作是界面的布局、窗体中的控件布局等*/private void initGUI() {try {this.setSize(new org.eclipse.swt.graphics.Point(400,300));this.setBackground(SWTResourceManager.getColor(6,157,213));FormLayout thisLayout = new FormLayout();this.setLayout(thisLayout);{btnOK = new Button(this, SWT.PUSH | SWT.CENTER);FormData btnOKLData = new FormData();btnOKLData.left =  new FormAttachment(0, 1000, 119);btnOKLData.top =  new FormAttachment(0, 1000, 86);btnOKLData.width = 36;btnOKLData.height = 27;btnOK.setLayoutData(btnOKLData);btnOK.setText("确定");btnOK.addSelectionListener(new SelectionAdapter() {public void widgetSelected(SelectionEvent evt) {MessageBox box = new MessageBox(new Shell());box.setMessage("你好,SWT!");box.open();}});}this.layout();} catch (Exception e) {e.printStackTrace();}}/*** main方法,用来生成主窗体,大小、显示等。注意SWT中不一样,首先有个Display和Shell,然后用它创建主界面。* Auto-generated main method to display this * org.eclipse.swt.widgets.Composite inside a new Shell.*/public static void main(String[] args) {Display display = Display.getDefault();Shell shell = new Shell(display);NewSWTApp inst = new NewSWTApp(shell, SWT.NULL);Point size = inst.getSize();shell.setLayout(new FillLayout());shell.layout();if(size.x == 0 && size.y == 0) {inst.pack();shell.pack();} else {Rectangle shellBounds = shell.computeTrim(0, 0, size.x, size.y);shell.setSize(shellBounds.width, shellBounds.height);}shell.open();while (!shell.isDisposed()) {if (!display.readAndDispatch())display.sleep();}}}

好了就这样。。下面就把我做的半成品贴出来吧,让大家见见。

还是那么像样,呵呵~

利用SWT做Java版局域网QQ(一)——基于UDP协议相关推荐

  1. java移动版_老手机 JAVA版移动QQ上手记

    近日笔者出差比较多,这给笔者与网友沟通造成了一定的麻烦.想想虽然可以用一台笔记本电脑连上GPRS手机上网,但是也不是很方便!有什么好的办法吗?无奈之下,笔者就到一些数码网站闲逛,发现联想推出的PPC版 ...

  2. 小成开发日记---利用Qt/C++实现基于Udp协议的网络聊天室(分服务端和客户端的开发【轻聊v1.0.1】)

    作者:小成Charles 原创作品 转载请标注原创文章地址:https://blog.csdn.net/weixin_42999453/article/details/112363393 一.引言 最 ...

  3. java udp简单聊天程序_Java基于UDP协议实现简单的聊天室程序

    最近比较闲,一直在抽空回顾一些java方面的技术应用. 今天没什么事做,基于udp协议,写了一个非常简单的聊天室程序. 现在的工作,很少用到socket,也算是对java网络编程方面的一个简单回忆. ...

  4. Java实例练习——基于UDP协议的多客户端通信

    昨天学习了UDP协议通信,然后就想着做一个基于UDP的多客户端通信(一对多),但是半天没做出来,今天早上在参考了很多代码以后,修改了自己的代码,然后运行成功,在这里分享以下代码,也说一下自己的认识误区 ...

  5. Java学习系列(十八)Java面向对象之基于UDP协议的网络通信

    UDP协议:无需建立虚拟链路,协议是不可靠的. A节点以DatagramSocket发送数据包,数据报携带数据,数据报上还有目的目地地址,大部分情况下,数据报可以抵达:但有些情况下,数据报可能会丢失 ...

  6. java udp 聊天室_Java基于UDP协议实现简单的聊天室程序

    最近比较闲,一直在抽空回顾一些Java方面的技术应用. 今天没什么事做,基于UDP协议,写了一个非常简单的聊天室程序. 现在的工作,很少用到socket,也算是对Java网络编程方面的一个简单回忆. ...

  7. 基于UDP协议的局域网网络聊天工具

    /* * 本程序实现了基于UDP协议的局域网网络聊天工具. * 参考网上的源码,发现一个calss就可以搞定. * ChatFrame类创建窗口,包含JTextField和TextArea. * 前者 ...

  8. Java网络编程——基于UDP协议的聊天室

    UDP简述    UDP(User Datagram Protocol)协议是Internet 协议集支持的一个无连接的传输协议,中文名为用户数据报协议.它为应用程序提供了一种无需建立连接就可以发送封 ...

  9. java udp包_基于UDP协议的数据包收发程序(代码+报告)Java

    [实例简介] 设计要求: 1)按照UDP协议数据包发送方式实现用户端之间的通信. 2)统计包的发送和接收数,计算数据包的丢失数. 3)设计美观易用的图形界面. [实例截图] [核心代码] 基于UDP协 ...

  10. 我的世界java版局域网建立_局域网入门攻略:建立专属游戏世界_我的世界Minecraft中国版官方网站——你想玩的,这里都有...

    与小伙伴联机探索一直是<我的世界>游戏最大的乐趣所在.在中国版PC Java版启动器,多人游戏可以通过多种方式实现.第一种是局域网大厅的多人联机,第二种是可以直接加入其他人的服务器世界,第 ...

最新文章

  1. java关键字 面试_java面试 关键字
  2. 玩转java(Android)注解
  3. 我的代码为什么看起来像shit?
  4. Java——集合(输入5个学生的信息按总分高低排序)
  5. 安卓接受后台数据转换解析出错_安卓手机内存越大,速度就会越快?
  6. ListT转换为DataTable
  7. 分享:Django学习笔记(4)---ManyToMany 添加、删除关联、查询
  8. Python精确指南——第二章 界面开发
  9. css3 中心点,用css3实现打点效果实例讲解
  10. Lesson 6   Smash-and-grab 砸橱窗抢劫
  11. layuit 框架_Layui|经典模块化前端框架
  12. LeetCode 106. 从中序与后序遍历序列构造二叉树(递归)
  13. iOS ChildViewController与View
  14. python读取音频文件的几种方式
  15. IP101GR完美通信
  16. 给大学生的劝告,你们为何应该开始接触 Unix/Linux
  17. linux运行mentohust,Linux中用mentohust设置联网环境
  18. 神秘美女接机刘谦 网友见证奇迹时刻:女子像舒淇
  19. boost::stacktrace::detail相关的测试程序
  20. 初学者笔记:Scanf间隔符号的使用

热门文章

  1. python云台控制原理_python伺服云台摄像头图像作为背景
  2. 6.4.3.4 -排除默认网关故障
  3. 达梦数据库工程师培训实战教程(主备集群、读写分离、共享集群)
  4. 解决三星PM981硬盘无法正常安装黑苹果的问题(第四版)
  5. 49个Excel常用技巧
  6. 【路径规划】基于遗传算法求解同时取送货车辆路径问题matlab代码
  7. myeclipse 安装phpeclipse插件
  8. python 英语翻译 excel_Python翻译Excel文件
  9. 【技术分享】孙玄:MongoDB在58同城的应用实践
  10. H3C交换机端口镜像配置