Eclipse WindowBuilder(SWT)插件安装及初次使用(萌新)

一、插件安装

(有VPN的挂VPN,服务器在外网更新下载比较慢)

1.首先更新到最新版本

点击Help,点击check for update,右下角显示查询进度,查询完毕会显示最新版内容。全部更新

 

2.还是在help内,点击eclipse marketplacea,搜索windowbuilder插件,安装。这个是图形化界面编程,内置swtswing。我们用swt

二、创建project

  1. 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

虽然主要讲的是awtswing但很多原理是共通的

 

二、自己摸索写了个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, "uFF08u53CCu51FBuFF09u6C42u548C", 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 }
View Code

 

内容来源于网络如有侵权请私信删除
你还没有登录,请先登录注册
  • 还没有人评论,欢迎说说您的想法!

相关课程

3794 178.2元 198元 9折