借助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; ...
随机推荐
- 了解一下Java SPI的原理
了解一下Java SPI的原理 1 为什么写这篇文章? 近期,本人在学习dubbo相关的知识,但是在dubbo官网中有提到Java的 SPI,这个名词之前未接触过,所以就去看了看,感觉还是有很多地方有 ...
- 用 C# 来守护 Python 进程
背景 目前我主要负责的一个项目是一个 C/S 架构的客户端开发,前端主要是通过 WPF 相关技术来实现,后端是通过 Python 来实现,前后端的数据通信则是通过 MQ 的方式来进行处理.由于 Pyt ...
- Axure实现banner功能
1.添加一个动态面板,添加上一张.下一张及当前banner对应的序号圆圈,如图所示: 当添加好元素后,实现自动轮播:点击[轮播图面板]页面:选中动态面板:右边添加事件编辑栏——属性——载入时——添加动 ...
- Ajax async属性
async: 默认是true:异步,false:同步. 其他属性扩展: 1.url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. 2.type: 要求为String类型的参数, ...
- 非对称加密openssl协议在php7实践
据网上资料,RSA加密算法是一种非对称加密算法.在公开密钥加密和电子商务中RSA被广泛使用.RSA是1977年由罗纳德·李维斯特(RON RIVEST).阿迪·萨莫尔(ADI SHAMIR)和伦纳德· ...
- 使用 BeanDefinition 描述 Spring Bean
什么是BeanDefinition 在Java中,一切皆对象.在JDK中使用java.lang.Class来描述类这个对象. 在Spring中,存在bean这样一个概念,那Spring又是怎么抽象be ...
- php基础——语法、变量
一.php语法: 1.php语言需要写在<?php ?>标签里面 2.php语言每行结束需要使用:作为结束符 3.php是一门弱语言,不要求先声明变量 4.可嵌套在HTML和js语言中 ...
- 多线程基础(主要内容转载于https://segmentfault.com/a/1190000014428190)
进程作为资源分配的基本单位 线程作为资源调度的基本单位,是程序的执行单元,执行路径(单线程:一条执行路径,多线程:多条执行路径).是程序使用CPU的最基本单位. 线程有3个基本状态: 执行.就绪.阻塞 ...
- 扛住阿里双十一高并发流量,Sentinel是怎么做到的?
Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景 本文介绍阿里开源限流熔断方案Sentinel功能.原理.架构.快速入门以及相关框架比较 基本介绍 1 名词解释 服务限流 :当系 ...
- 什么是回流(重排 reflow)?什么是重绘(repaint)?如何减少回流、重绘?
什么是回流(重排 reflow)? 回流(重排 reflow):对DOM树进行渲染,只要修改DOM或修改元素的形状大小,就会触发reflow,reflow的时候,浏览器会使已渲染好受到影响的部分失效, ...