借助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; ...
随机推荐
- 安装vue开发环境
每次搜索vue开发环境安装时,总是有很多种版本,虽然都能安装完成,但还是整理下自己觉得比较好的版本吧 1.首先安装nodeJs以及也把git安装好(反正开发也是需要git),安装完成后执行 node ...
- 转载:alpha测试和beta测试的区别;黑盒测试和白盒测试的区别;
alpha测试版,有点相当于内部测试,一般开发人员在场 ,是由用户做测试,但开发人员在场,一般是请用户到开发现场去测试 beta测试版,完全交给用户,由用户做测试,返回测试报告,相当于发行前的一个 ...
- Emacs 笔记二
Emacs 笔记二 Table of Contents 1. 前言 2. emacs基本操作(常用快捷键) 3. emacs模式讲解 4. emacs缓冲区 5. org mode 5.1. 列表 5 ...
- gym102201E_Eat Economically
题意 给\(2n\)个物品,分别有\(a,b\)属性,对于\(i=1...n\),选择\(i\)个\(a\)属性和\(i\)个\(b\)属性,且每个物品只能作为一种属性的贡献,求最小的值. 分析 看了 ...
- 读《深入理解Elasticsearch》点滴-查询分类
1.如何分类,略.个人不接受书中的分类方法,建议采用官网上的分类方法 2.term查询,可以模拟No-SQL数据库
- springboot 启动报错Consider defining a bean of type 'com.example.springbootdruid.mapper.UserMapper' in your configurati
一.问题 springboot项目启动时报错: Field userMapper in com.example.springbootdruid.service.impl.UserServiceImpl ...
- 漫谈 GOF 设计模式在 Spring 框架中的实现
原文地址:梁桂钊的博客 博客地址:http://blog.720ui.com 欢迎关注公众号:「服务端思维」.一群同频者,一起成长,一起精进,打破认知的局限性. 漫谈 GOF 设计模式在 Spring ...
- 防DOS攻击-网络连接法
#!/bin/bash netstat -antup | grep SYN_RECV | awk '{print $5}' |awk -F: '{print $1}'|sort|uniq -c > ...
- Android 横竖屏切换生命周期
默认情况下,屏幕会旋转并且会重新走生命周期. 1. 屏幕不旋转 在AndroidManifest文件中的对应Activity中配置android:screenOrientation=”landsc ...
- ASP.NET Web API 2系列(三):查看WebAPI接口的详细说明及测试接口
引言 前边两篇博客介绍了Web API的基本框架以及路由配置,这篇博客主要解决在前后端分离项目中,为前端人员提供详细接口说明的问题,主要是通过修改WebApi HelpPage相关代码和添加WebAp ...