借助WindowBuilder插件轻松完成JAVA图形用户界面编辑
如果以纯代码的形式进行JAVA的图形用户界面编辑,将是一件非常痛苦的事,博主在学习过程中发现了JAVA GUI编辑神器——WindowBuilder,提供可视化的编辑界面,控件的添加、排版只需使用鼠标进行拖拽即可。
安装
首先进入WindowBuilder网站http://www.eclipse.org/windowbuilder/,接着点击Download
选择对应的Eclipse版本,博主的是4.7(Oxygen),点击link,复制地址栏内的网址
打开Eclipse,点击顶栏Help内的Install New Software,将网址拷贝到Work with中并回车,勾选所有组件,一路点击Next即可进行安装。
安装完成后,点击Eclipse顶栏的File,选择New中的other,在弹出的新建框内若有WindowBuilder选项则证明安装成功。
简单示例
博主接下来为大家实现一个Swing窗体应用程序(网络程序设计实验教程(Java语言)),实现的功能是:1. 将字符序列文本框中的字符串以对应的编码方案进行编码,并存储到字节数组中,最后将字节数组中的字节以十六进制的方式表示;2. 将字符序列文本框中的十六进制方式表示的字节数组以对应的编码方案进行解码,并将解码后得到的字符串显示出来。
新建一个名为TestEncoding的Java项目,在项目中用WindowBuilder创建一个Application Window应用程序,命名为AppMain,再将主窗体重命名为frmMain,窗体标题改为“编码解码示例”。
拖动工具箱中的控件进行排版,(将getContentPane()属性中的layout设置为Absolute layout,可将控件随意拖拽到你指定的位置)设置相应控件属性如下表所示。
| 控件 | 名称 | 属性 | 值 |
|---|---|---|---|
| 按钮JButton | btnGBKEncode | Text | GBK编码结果 |
| 按钮JButton | btnUTF8Encode | Text | UTF-8编码结果 |
| 按钮JButton | btnGBKDncode | Text | GBK解码结果 |
| 按钮JButton | btnUTF8Dncode | Text | UTF-8解码结果 |
| 文本框JTextField | tfChars | ||
| 文本框JTextField | tfBytesGBK | Enabled | False |
| 文本框JTextField | tfBytesUTF8 | Enabled | False |
| 文本框JTextField | tfBytes | ||
| 文本框JTextField | tfCharsGBK | Enabled | False |
文本框JTextField |
tfCharsUTF8 |
Enabled |
False |
编码功能的实现
双击按钮btnGBKEncode,在函数内添加如下代码:
String str = tfChars.getText();
Charset cs = Charset.forName("GBK");
ByteBuffer buffer = cs.encode(str);
String hexStr = "";
while(buffer.remaining()>0) {
hexStr += Integer.toHexString(buffer.get()&0xFF).toUpperCase()+" ";
}
tfBytesGBK.setText(hexStr);
双击按钮btnUTF8Encode,在函数内添加如下代码:
String str = tfChars.getText();
String hexStr = "";
try {
byte[] bytes = str.getBytes("UTF-8");
for(int i=0;i<bytes.length;i++) {
hexStr += Integer.toHexString(bytes[i]&0xFF).toUpperCase()+" ";
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}finally {
tfBytesUTF8.setText(hexStr);
}
解码功能的实现
双击按钮btnGBKDecode,添加如下代码:
String hexStr = tfBytes.getText();
String[] strs = hexStr.split(" ");
byte[] array = new byte[strs.length];
for(int i=0;i<strs.length;i++) {
array[i] = (byte)(Integer.valueOf(strs[i],16).intValue());
}
Charset cs = Charset.forName("GBK");
CharBuffer buffer = cs.decode(ByteBuffer.wrap(array));
tfCharsGBK.setText(buffer.toString());
双击按钮btnUTF8Decode,添加如下代码:
String hexStr = tfBytes.getText();
String[] strs = hexStr.split(" ");
byte[] bytes = new byte[strs.length];
for(int i=0;i<strs.length;i++) {
bytes[i] = (byte)(Integer.valueOf(strs[i],16).intValue());
}
String str = "";
try {
str = new String(bytes,"UTF-8");
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
}finally {
tfCharsUTF8.setText(str);
}
最终效果如下:
由此可见在网络传输过程中解码方式如果错误,得到的结果也就面目全非了。
这篇博客更多是引路用的,更多内容请上官网查看教程。
借助WindowBuilder插件轻松完成JAVA图形用户界面编辑的更多相关文章
- Java图形用户界面编程
1.Java图形用户界面编程概述 JavaAPI中提供了两套组件用于支持编写图形用户界面:AWT(抽象窗口包)和Swing 2. 容器(Container):重量级容器和轻量级容器(一个容器可以放置 ...
- JavaGUI——Java图形用户界面
1.Java GUI 概述 GUI(Graphical User Interface,简称 GUI,图形用户界面)是指采用图形方式显示的计算机操作用户界面,与早期计算机使用的命令行界面相比,图形界面对 ...
- Java学习笔记--Java图形用户界面
AWT:抽象窗口组件工具包 Abstract Windows Toolkit(AWT)是最原始的 Java GUI 工具包.AWT 的主要优点是,它在 Java 技术的每个版本上都成为了一种标准配置, ...
- 201671010127 2016-2017-11 Java图形用户界面设计技术
一.事件处理器 1.什么是事件处理 一个事件要求特定的动作被执行,它被作为消息由外界或系统自身发送给GUI系统.这些事件包括来自计算机设备如鼠标键盘和网络端口的I/O中断,以及GUI系统的逻辑事件触发 ...
- 多线程编程、java图形用户界面编程、Java I / O系统
线程概述 进程:是一种 “自包容”的运行程序 线程是进程当中的一个概念,最小处理单位 THread类.Runnable接口.Object类 创建新执行线程有两种方法:1:一种方法是将类声明为Threa ...
- java图形用户界面BorderLayout布局。冲突
总结:在使用边界布局发现,把所有的按钮组件都放入了panel.但是在中部的按钮组件找不到了.发现自己重复用了组件 1.this.add(bt4,BorderLayout.North); 2.panel ...
- java图形用户界面添加背景颜色不成功的解决方案
总结:背景颜色不成功,那么使用这个方法试试.getContentpane(); package clientFrame; import java.awt.Color; import java.awt. ...
- java图形用户界面练习。j2se
总结:主要是如何布局.还是存在很大问题 package clientFrame; import java.awt.FlowLayout; import javax.swing.JButton; imp ...
- java图形用户界面添加图片的代码
package com.aa; import java.awt.Component; import javax.swing.ImageIcon; import javax.swing.JPanel; ...
随机推荐
- 利用Python进行数据分析:【Pandas】(Series+DataFrame)
一.pandas简单介绍 1.pandas是一个强大的Python数据分析的工具包.2.pandas是基于NumPy构建的.3.pandas的主要功能 --具备对其功能的数据结构DataFrame.S ...
- 平行世界中的你还是你吗?--java中的==是否相等
故事背景 <宇宙追缉令>是黄毅瑜执导的动作科幻类电影,由哥伦比亚三星公司出品,戴尔里·林多.李连杰.杰森·斯坦森领衔主演.影片于2001年11月2日在美国上映.该片讲述了邪恶尤兰,为了成为 ...
- springboot 使用i18n进行国际化
1.i18n介绍 i18n(其来源是英文单词 internationalization的首末字符i和n,18为中间的字符数)是“国际化”的简称.在资讯领域,国际化(i18n)指让产品(出版物,软件,硬 ...
- Centeos7部署Flask+Gunicorn+nginx
一.环境安装 pip3 install flask pip3 install gunicorn pip3 install nginx 二.模块介绍 1.Flask是一个使用 Python 编写的轻量级 ...
- 2019年最新超级有趣好玩的html+css网页布局课程,前端入门基础,html5+css3零基础入门课程-黑马程序员pink老师精心录制
大家好,我是黑马程序员pink老师!! 本次视频是前端零基础入门的课程,pink老师采取有趣好玩讲法,带你快乐的学习枯燥的html+css知识,学完之后让你能快速布局pc端页面.代码也可以讲的好玩有趣 ...
- python 虚拟环境配置
刚学习 python 的同学经常会遇到一个问题: 已经安装了特定的包或者第三库,但是 pycharm 总是提示没有找到.
- vue.js 实战 todo list
vue.js 起源 vue.js 的作者是尤雨溪,是一名中国人,之前在谷歌工作,现在在全职维护 vue 项目. vue.js 是 2014 年推出来的.现在已经更新到 2.x 版本,3.0 版本会在 ...
- .Net Core删除ClientApp目录,重新生成报错解决办法
因为在老的项目上做修改,需要删除单独的spa目录,就把ClientApp删掉了.但是重新生成报错,在VS2017界面上也没找到在什么地方配置.最后发现在csproj上里面可以去掉spa的配置 < ...
- Asp.NetCore源码学习[2-1]:日志
Asp.NetCore源码学习[2-1]:日志 在一个系统中,日志是不可或缺的部分.对于.net而言有许多成熟的日志框架,包括Log4Net.NLog.Serilog 等等.你可以在系统中直接使用这些 ...
- Python调用 Openstack 主要服务(keystone,nova,glance,neutron,heat)
由于Openstack更新很快,现在准备搭建基于Queen版本的Openstack,Queen版本要求keystone版本为V3,所以之前大多数接口都不能用了,百度了一下都没有比较新的实例,官方文档又 ...