關於SWT
- SWT首先要在Eclipse中添加SWT的安裝包:Windowsbuilder Pro。下載路徑:http://www.eclipse.org/windowbuilder/download.php
- 通過Help -> Install New Software...來進行安裝。
- 下面就是添加項目,要添加JFace/SWT項目,然后添加Shell類,這樣才會在Shell的Design頁面中加載合適的Platte,最重要的就是Controls Tab,里面的控件是即拖即用的。
- swt打包成可運行jar
- Windows平台下面需要添加org.eclipse.win32.jar(dll就是從這個文件夾下面獲取)
- Linux下面也需要安裝添加swt.jar,來自於swt-gtk包。但是注意不要部署win32.jar包
- 運行需要通過腳本文件(.sh文件)引導。故需要分配可執行權限(或者使用sh/source指令)。在Linux下面需要為sh文件賦執行權限(chmod +x)
- Eclipse創建的JFace/SWT項目會引用很多無用jar包,因為我們關注的是swt,所以默認引用的equio,ibm-uc等plugin的jar包統統刪掉,只是引用swt的jar包即可;
- SWT里面的多線程,或者對於某些長執行想要在執行過程中改變控件值,需要使用Display.getDefault().asyncExec(new Runnable() {...}的方式來進行異步實現;比如要在當前窗體彈出一個頁面,需要使用模式。
- 設置text自動換行,首先Text本身要制定是可以WRAP的,然后需要創建一個GridData,然后指定其WidthHint,之后,就可以了。
txtTodo = new Text(this, SWT.BORDER | SWT.V_SCROLL | SWT.MULTI | SWT.WRAP); GridData gd_cmdIntro = new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1); gd_cmdIntro.widthHint = 10; // 必須得設置寬度,否則自動換行不好使 txtTodo.setLayoutData(gd_cmdIntro);
- SWT的換行,可以添加keyListener事件,判斷keyCode值為13即可。
txtTodo = new Text(this, SWT.BORDER | SWT.V_SCROLL | SWT.MULTI | SWT.WRAP); txtTodo.addKeyListener(new KeyAdapter() { @Override public void keyReleased(KeyEvent e) { if (e.keyCode == 13) { txtTodo.setSize(txtTodo.getSize().x, txtTodo.getSize().y + 10); } } });
關於安裝包的設計
Java能做的事情,盡量Java做,靠譜,而且具有跨平台性,比如拷貝文件
Java不支持chmod的通配符,這個只能在腳本中來做
注意Windows下面寫的sh文件很可能無法在Linux下面執行,因為windows會在記事本中莫名添加一些符號;所以最好在Linux下面編寫,再回流到Windows上面
有一次和nohup…&相遇,為了讓應用啟動不隨着腳本結束而結束,使用到了它。