Eclipse WindowBuilder(SWT)插件安装及初次使用记录(萌新)
Eclipse WindowBuilder(SWT)插件安装及初次使用(萌新)
一、插件安装
(有VPN的挂VPN,服务器在外网更新下载比较慢)
1.首先更新到最新版本
点击Help,点击check for update,右下角显示查询进度,查询完毕会显示最新版内容。全部更新
2.还是在help内,点击eclipse marketplacea,搜索windowbuilder插件,安装。这个是图形化界面编程,内置swt和swing。我们用swt

二、创建project
- 在project explorer新建“other project”,快捷键ctrl+N,找到SWT/JFace java Project
![]()
点开,右键src,新建other


依次点击WindowsBuilder—SWT Designer—SWT—Application Window
空Project:

底部Source是源码,Design是图形化编程。Design里拖动组件,在源码中会同时显现代码。一般来说,在design中拖动组件(如按钮、文本框)等,然后添加监听(如点击等),运行的功能在source中给出代码

(更多用处还不清楚,今天第一天下载)
这边建议可以先看狂神的gui编程:
https://www.bilibili.com/video/BV1DJ411B75F?spm_id_from=333.337.search-card.all.click
虽然主要讲的是awt和swing但很多原理是共通的
二、自己摸索写了个gui计算a+b

很简单,三个label三个文本框,一个按钮。全都是可以拖动的
背景图片我没有找到在design中直接添加的办法,用代码添加。(随便挑了个图过来)

这个shell就是窗口数值代码
2.按钮监听

右键按钮组件,按上图添加监听。我随便选了个双击。
选完之后,返回source查看源代码,会发现多出一些代码:
中间就是要写当你双击时执行的代码
我写的是双击后执行A+B,同时不允许输入空格。
由于文本框输入都是String所以计算时多次强制转换。我认为应该还有更好的方式完成a+b这个简单的操作。哎
3.初次之外,还写了个文本框监听,让你无法输入英文和符号
下图为第一个文本框的监听,第二个相同,改一下文本框名字就行

4.自动换行
数字一长就会超出文本框显示,所以加了个自动换行的style

最终效果:
总结流程:design设计界面,并添加监听,执行代码得自己去source里写。
四、小结
有点gui基础会很轻松,不过后面老师应该也会交所以不急
网上关于swt下载安装教程太少了,(不过swt内实现一些功能的操作教学还是有不少的,可以ctrlcv了)文字版很多有问题。视频几乎没有。本文主要写一下下载方式和我第一天玩玩的基础操作。东西特别多,得慢慢学。
代码:
1 package testSWT;
2
3 import org.eclipse.swt.widgets.Display;
4 import org.eclipse.swt.widgets.Shell;
5 import org.eclipse.swt.widgets.Label;
6 import org.eclipse.jface.window.Window;
7 import org.eclipse.swt.SWT;
8 import org.eclipse.swt.widgets.Text;
9 import org.eclipse.swt.layout.GridLayout;
10 import org.eclipse.swt.custom.StackLayout;
11 import org.eclipse.swt.layout.FormLayout;
12 import org.eclipse.ui.forms.widgets.FormToolkit;
13 import org.eclipse.swt.widgets.Button;
14 import org.eclipse.swt.events.MouseAdapter;
15 import org.eclipse.swt.events.MouseEvent;
16 import org.eclipse.swt.widgets.Composite;
17 import org.eclipse.wb.swt.SWTResourceManager;
18 import org.eclipse.ui.forms.widgets.ImageHyperlink;
19 import org.eclipse.swt.widgets.Menu;
20 import org.eclipse.swt.widgets.MenuItem;
21 import org.eclipse.swt.events.MouseWheelListener;
22 import org.eclipse.swt.events.SelectionAdapter;
23 import org.eclipse.swt.events.SelectionEvent;
24 import org.eclipse.swt.events.VerifyListener;
25 import org.eclipse.swt.events.VerifyEvent;
26
27 public class testSWTAPP {
28
29 protected Shell shell;
30 private final FormToolkit formToolkit = new FormToolkit(Display.getDefault());
31 private Text txtNewText;
32 private Text txtNewText_1;
33 private Text txtNewText_2;
34
35 /**
36 * Launch the application.
37 * @param args
38 */
39 public static void main(String[] args) {
40 try {
41 testSWTAPP window = new testSWTAPP();
42 window.open();
43 } catch (Exception e) {
44 e.printStackTrace();
45 }
46 }
47
48 /**
49 * Open the window.
50 */
51 public void open() {
52 Display display = Display.getDefault();
53 createContents();
54 shell.open();
55 shell.layout();
56 while (!shell.isDisposed()) {
57 if (!display.readAndDispatch()) {
58 display.sleep();
59 }
60 }
61 }
62
63 /**
64 * Create contents of the window.
65 */
66 protected void createContents() {
67 shell = new Shell(SWT.CLOSE|SWT.MIN);
68 shell.setImage(SWTResourceManager.getImage("C:\\Users\\wenwen\\Desktop\\CXTKZ026UV(LIF7]]YFG)CW.png"));
69 shell.setSize(466, 539);
70 shell.setText("Testing SWT...");
71 shell.setLayout(null);
72 shell.setBackgroundImage(SWTResourceManager.getImage("C:\\Users\\wenwen\\Desktop\\CXTKZ026UV(LIF7]]YFG)CW.png"));
73
74 Button button = formToolkit.createButton(shell, "\uFF08\u53CC\u51FB\uFF09\u6C42\u548C", SWT.NONE);
75
76
77 button.setForeground(SWTResourceManager.getColor(SWT.COLOR_LINK_FOREGROUND));
78 button.addMouseListener(new MouseAdapter() {
79 @Override
80 public void mouseDoubleClick(MouseEvent e) {
81 int flag = 0;
82 String A = txtNewText.getText();
83 if(A.contains(" "))flag=1;
84 String B= txtNewText_1.getText();
85 if(B.contains(" "))flag=1;
86
87 if(flag==1) {
88 txtNewText_2.setText("error,别tm输入空格啊小崽子");
89 }
90 else {
91 double a =Double.parseDouble(txtNewText.getText());
92 double b =Double.parseDouble(txtNewText_1.getText());
93 double c=a+b;String C=Double.toString(c);
94 txtNewText_2.setText(C);
95 }
96 }
97 });
98
99 button.setBounds(147, 372, 167, 34);
100
101 txtNewText = formToolkit.createText(shell,"", SWT.WRAP | SWT.MULTI);
102 txtNewText.addVerifyListener(new VerifyListener() {
103 public void verifyText(VerifyEvent e) {
104
105 try {
106 // 以Text中已经输入的内容创建StringBuffer对象
107 StringBuffer buffer = new StringBuffer(txtNewText.getText());
108 // 删除e.start, e.end指定范围的内容
109 // 并将要插入的内容e.text插入指定的位置,模拟输入e.text后Text对象中的内容
110 // 末尾添一个0,以保证buffer中只有一个字符为且为+-.时,不会触发NumberFormatException
111 buffer.delete(e.start, e.end).insert(e.start, e.text).append('0');
112 // 尝试将buffer中的内容转换成Float,如果不抛出异常说明输入内容有效
113 Double.valueOf(buffer.toString());
114 } catch (NumberFormatException ex) {
115 e.doit=false;
116 }
117 }
118 });
119 txtNewText.setBounds(259, 90, 151, 30);
120
121
122
123
124
125
126 txtNewText_1 = formToolkit.createText(shell, "", SWT.WRAP | SWT.MULTI);
127 txtNewText_1.addVerifyListener(new VerifyListener() {
128 public void verifyText(VerifyEvent e) {
129
130 try {
131 // 以Text中已经输入的内容创建StringBuffer对象
132 StringBuffer buffer = new StringBuffer(txtNewText_1.getText());
133 // 删除e.start, e.end指定范围的内容
134 // 并将要插入的内容e.text插入指定的位置,模拟输入e.text后Text对象中的内容
135 // 末尾添一个0,以保证buffer中只有一个字符为且为+-.时,不会触发NumberFormatException
136 buffer.delete(e.start, e.end).insert(e.start, e.text).append('0');
137 // 尝试将buffer中的内容转换成Float,如果不抛出异常说明输入内容有效
138 Double.valueOf(buffer.toString());
139 } catch (NumberFormatException ex) {
140 e.doit=false;
141 }
142 }
143 });
144 txtNewText_1.setBounds(259, 189, 151, 30);
145
146
147 txtNewText_2 = formToolkit.createText(shell, "", SWT.WRAP | SWT.MULTI);
148 txtNewText_2.setText("");
149 txtNewText_2.setBounds(259, 254, 151, 83);
150
151 Label lblA = formToolkit.createLabel(shell, "a:", SWT.CENTER);
152 lblA.setBackground(SWTResourceManager.getColor(SWT.COLOR_YELLOW));
153 lblA.setBounds(107, 93, 90, 24);
154
155 Label lblB = formToolkit.createLabel(shell, "b:", SWT.CENTER);
156 lblB.setBackground(SWTResourceManager.getColor(SWT.COLOR_YELLOW));
157 lblB.setBounds(107, 192, 90, 24);
158
159 Label lblA_1_1 = formToolkit.createLabel(shell, "a+b:", SWT.CENTER);
160 lblA_1_1.setBackground(SWTResourceManager.getColor(SWT.COLOR_YELLOW));
161 lblA_1_1.setBounds(107, 290, 90, 24);
162
163 }
164 }
Eclipse WindowBuilder(SWT)插件安装及初次使用记录(萌新)的更多相关文章
- eclipse maven plugin 插件 安装 和 配置
离线插件 点击下载离线安装包:eclipse-maven-plugin.zip ( for eclipse helios or higher ) .解压缩到任意目录(如这里的plugins目录): ...
- 最详细eclipse汉化插件安装教程
最详细eclipse汉化插件安装教程(转) 转自:http://blog.csdn.net/dai_zhenliang/article/details/8588576#t4 教程作者:戴振良 本文与& ...
- eclipse中jetty插件安装
注:本文来源于:<eclipse中jetty插件安装> 一.eclipse中jetty插件安装: 打开eclipse,依次点击菜单Help->Eclipse Marketplace, ...
- Eclipse MyBatis Generator插件安装
目录 Eclipse MyBatis Generator插件安装 Eclipse MyBatis Generator插件安装 1.进入Eclipse Marketplace [Help] -> ...
- 笔记:eclipse的findbugs插件安装成功却不显示
关键字:findbugs eclipse的findbugs插件安装成功却不显示的原因有: 1.插件版本太高,低版本的eclipse不兼容 2.也有可能是JDK版本低 findbugs安装方法: 1.在 ...
- Ubuntu系统---C++之Eclipse编译器 CDT插件安装
Ubuntu系统---Ecli ...
- Eclipse常用的插件安装
嫌公司用的eclipse不爽,准备自己弄一个,diy的,没想到装插得烦死人. 诱惑人的“常用插件”: (1) AmaterasUML 介绍:Eclipse的UML插件,支持UML活 ...
- Eclipse的SVN插件安装
两种方法: 首先下载安装到eclipse的svn插件包,包里会有“plugins”和“features”两个文件夹,安装时要用到. 1.然后找到eclipse目录下的同名文件夹“plugins”和“f ...
- eclipse的svn插件安装方式
eclipse的插件安装一般有3种方式: 1)通过eclipse的Help/ Install New Software...中, 点击Add, 添加一个在线更新地址,如:http://subclips ...
- Java开发环境配置(3)--eclipse汉化插件安装、卸载 中遇到的问题
eclipse汉化中遇到的问题 网上汉化的帖子很多 如: Eclipse超级完美汉化教程_百度经验http://jingyan.baidu.com/article/e75057f28401a8ebc9 ...
随机推荐
- python tkinker答题工具简易实现
分享一个简单的python tkinker实现的答题工具,效果参见https://www.bilibili.com/video/BV13e4y1E71d/ 点击查看代码 import tkinter ...
- 🎀GitHub Pages静态文件发布
简介 GitHub Pages是GitHub提供的一项服务,允许用户和组织从存储库中的静态文件创建和托管网站.这些静态文件可以是HTML.CSS.JavaScript文件或任何其他可以在浏览器中直接渲 ...
- 国产的 Java Solon v3.2.0 发布(央企信创的优选)
Solon 框架! Solon 是新一代,Java 企业级应用开发框架.从零开始构建(No Java-EE),有灵活的接口规范与开放生态.采用商用友好的 Apache 2.0 开源协议,是" ...
- 使用xxxbase应付CRUD后端任务
很多的后端CRUD开发任务都是毫无意义的, 如果使用firebase/supabase/pocketbase这些工具快速应付这些任务才是重要的. 如果是一位研究生, 在面对导师的垃圾横向的时候, 这种 ...
- Asp.net core 少走弯路系列教程(五)HTTP 协议学习
前言 新人学习成本很高,网络上太多的名词和框架,全部学习会浪费大量的时间和精力. 新手缺乏学习内容的辨别能力,本系列文章为新手过滤掉不适合的学习内容(比如多线程等等),让新手少走弯路直通罗马. 作者认 ...
- centos安装npm和 nodejs
NPM安装 00X01:创建目录 mkdir /usr/local/node/ cd /usr/local/node/ 00x02:下载安装包 wget https://npm.taobao.org/ ...
- 7.9K star!免费解锁Cursor Pro功能,这个开源神器太强了!
嗨,大家好,我是小华同学,关注我们获得"最新.最全.最优质"开源项目和高效工作学习方法 "无需付费即可畅享AI编程神器Cursor的Pro功能,支持Windows/mac ...
- K8s新手系列之ConfigMap资源
概述 在 Kubernetes(K8s)中,ConfigMap 是一种 API 对象,用于将非机密性的数据保存到键值对中.Pod 可以将其用作环境变量.命令行参数或者存储卷中的配置文件. Config ...
- 定制Django的Tag和Filter(一)
1.在 app 目录下创建 templatetags 目录(目录名只能是 templatetags). 如: app/ __init__.py models.py templatetags/ __in ...
- x86游戏逆向之实战游戏线程发包与普通发包的逆向
网游找Call的过程中难免会遇到不方便通过数据来找的或者仅仅查找数据根本找不到的东西,但是网游中一般的工程肯定要发给服务器,比如你打怪,如果都是在本地处理的话就特别容易产生变态功能,而且不方便与其他玩 ...
