Eclipse WindowBuilder(SWT)插件安裝及初次使用(萌新) 一、插件安裝 (有VPN的掛VPN,伺服器在外網更新下載比較慢) 1.首先更新到最新版本 點擊Help,點擊check for update,右下角顯示查詢進度,查詢完畢會顯示最新版內容。全部更新 2.還是在help內, ...
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 }View Code