锘??xml version="1.0" encoding="utf-8" standalone="yes"?> 鍓嶄竴鑺備腑鎴戜滑綆鍗曚粙緇嶄簡涓涓?/SPAN>Action銆傚叾瀹炴墍璋撶殑Action灝辨槸涓涓渶甯哥敤鐨勪簨浠訛紝涓句釜渚嬪瓙鏉ヨ錛屽浜庝竴涓寜閽潵璇村畠鍙互鏈夊涓簨浠訛紝姣斿鎸夐敭錛岀劍鐐癸紝榧犳爣錛岀瓑絳夌瓑絳夊惂錛屼絾鏄疄闄呬笂鍦ㄤ嬌鐢ㄧ▼搴忕殑鏃跺欙紝鎴戜滑鏈鍏沖績鐨勶紝灝辨槸鎸変笅鍘昏繖涓寜閽細鍙戠敓浠涔堬紝榪欎釜鍏跺疄灝辨槸鎵璋撶殑Action銆傚鏋滃ぇ瀹朵互鍓嶅仛榪?/SPAN>swing/awt鍙樻垚鐨勮瘽錛屽簲璇ュAction涓嶄細闄岀敓銆?/SPAN> 鍦?/SPAN>JFace閲岄潰錛屼竴涓?/SPAN>Action鍙互瀵瑰簲澶氫釜GUI瀵硅薄錛岃繖浜涘璞″氨鏄墍璋撶殑Contribution Item銆傛瘮濡傛垜浠湪涓鑸▼搴忛噷闈㈠緢甯歌鐨勨滄枃浠垛濊彍鍗曪紝涓嬮潰閮戒細鏈夆滄柊寤衡濓紝鈥滀繚瀛樷濈瓑絳夈傚悓鏃舵垜浠彲浠ュ湪宸ュ叿鏉′笂鏀劇疆鐩稿簲鐨勬寜閽紝閭d箞榪欎簺閮芥槸鏈夌浉鍚岀殑鍔熻兘錛屽湪JFace閲岄潰鎴戜滑鍙互鍙啓涓涓?/SPAN>Action錛岀劧鍚庢妸瀹冩槧灝勫埌涓嶅悓鐨?/SPAN>ContributionItem鍘伙紝鑰屼笉蹇呬負姣忎釜閮ㄤ歡閮藉啓涓涓插鐞嗕簨浠躲?/SPAN> 鎴戜滑涓嬮潰榪樻槸閫氳繃涓涓畝鍗曠殑渚嬪瓙鏉ヨ鏄庯紝鍦?/SPAN>JFace涓庝箞浣跨敤鑿滃崟鍜屽伐鍏鋒潯榪欎袱縐嶆渶鍩烘湰涔熸槸鏈鏈夌敤鐨?/SPAN>Contribution Item銆?/SPAN> 鎴戜滑榪欎釜紼嬪簭鍐欏緱寰堝偦錛屽氨鏄竴涓厜縐冪鐨勭獥鍙d笂鍋氫簡涓涓彍鍗曞拰宸ュ叿鏉℃寜閽紝鍔熻兘涔熷彧鏈変竴涓紝灝辨槸姣忔鐐逛竴涓嬶紝灝卞脊鍑轟竴涓緭鍏ユ鏉ラ棶浣犲悕瀛楁槸浠涔堬紝鐒跺悗鏄劇ず涓涓?/SPAN>Hello, xxx涔嬬被鐨勩?/SPAN> 棣栧厛鎴戜滑榪樻槸鏉ュ啓涓涓?/SPAN>Action綾伙細 榪欏彧鏄竴涓緢綆鍗曠殑Action綾伙紝娌℃湁澶鍙鐨勩?/SPAN> 鐒跺悗鎴戜滑鍒涘緩涓涓?/SPAN>ApplicationWindow綾伙細 浠g爜孌?/SPAN> 18 澶у鍙兘宸茬粡娉ㄦ剰鍒頒簡錛屽湪榪欓噷闈㈡垜浠噸杞戒簡createMenuManager鍜?/SPAN>createToolBarManager涓や釜鏂規硶錛屽畠浠殑鐢ㄩ斿氨鍜屽悕瀛椾竴鏍鳳紝涓涓槸鐢ㄦ潵鍒涘緩鑿滃崟鐨勶紝涓涓槸鐢ㄦ潵鍒涘緩宸ュ叿鏉$殑銆傞噸杞戒簡榪欎袱涓柟娉曚互鍚庯紝閫氳繃鍦ㄦ瀯閫犲嚱鏁頒腑璋冪敤addMenuBar鍜?/SPAN>addToolBar璁╁伐鍏鋒潯鍜岃彍鍗曟樉紺哄嚭鏉ャ?/SPAN> 榪欓噷鍊煎緱涓鎻愮殑鏄?/SPAN>MenuManager鍜?/SPAN>ToolBarManager綾伙紝濡傛灉澶у緲諱竴涓?/SPAN>API鏂囨。鐨勮瘽浼氬彂鐜板畠浠兘鏄墍璋撶殑contribution manager錛堝疄鐜頒簡IConntributionManager鎺ュ彛錛夛紝浣犲彲浠ラ氳繃榪欎簺contribution manager鏉ュ疄鐜板鐗瑰畾緇勪歡鐨勭鐞嗭紙娣誨姞鍒犻櫎絳夌瓑錛夈?/SPAN> 鍏蜂綋鍒拌彍鍗曠殑鍒涘緩錛岀湅浜嗘垜浠笂闈㈢殑浠g爜灝卞緢鏄庣櫧浜嗭紝灝辯洿鎺ヨ皟鐢ㄧ浉搴?/SPAN>MenuManager鐨?/SPAN>add鏂規硶鎶?/SPAN>action娣誨姞涓婂氨鍙互浜嗐?/SPAN>JFace浼氳嚜鍔ㄦ壘鍒拌繖涓?/SPAN>Action鐨?/SPAN>getText鏂規硶璁劇疆鑿滃崟鐨勬枃瀛椼傚鏋滄槸鏈夊ソ鍑犲眰鑿滃崟錛岄偅涔堝彧瑕佸湪閲嶆柊new涓涓?/SPAN>MenuManager娣誨姞鍒板凡鏈夌殑MenuManager閲岄潰灝卞彲浠ヤ簡銆傚氨璞″墠闈唬鐮佷腑鐨勶細 濡傛灉鑿滃崟鍙槸鏂囧瓧榪樻病鏈変粈涔堬紝濡傛灉浣犵殑宸ュ叿鏉¢兘鏄枃瀛楁槸涓嶆槸浼氭樉寰楀共宸村反鐨勶紵鍏跺疄鍙鎴戜滑涓?/SPAN>Action璁劇疆ImageDescriptor灝卞彲浠ヤ簡錛屾瘮濡備綘鍙互鑷繁鐢諱竴涓浘鏍囦繚瀛樺埌Action鐨勫寘涓嬮潰錛堟垜鐢諱簡涓涓?/SPAN>hi.gif錛夛紝鐒跺悗鎶?/SPAN>Action鐨勬瀯閫犲嚱鏁版敼鍐欐垚榪欐牱錛?BR> 榪欎竴緋誨垪鐨勬枃绔犻檰闄嗙畫緇啓鍒頒粖澶╋紝涔熷氨鍐欏畬浜嗐傚洖澶寸湅涓涓嬶紝铏界劧鍐呭閮藉緢嫻呮樉錛屼笉榪囨垜瑙夊緱鍦?/SPAN>swt鍜?/SPAN>JFace涓枃璧勬枡緙轟箯鐨勪粖澶╋紝鍙兘涔熷彲浠ョ粰澶у甯︽潵涓浜涘惎榪備粖鍚庢垜榪樹細鍐欎竴浜?/SPAN>eclipse騫沖彴寮鍙戠殑鏂囩珷錛屽ぇ瀹跺彲浠ョ櫥闄嗗埌鎴戠殑blog錛?/SPAN>http://blog.csdn.net/jayliu錛夋煡鐪嬨?/SPAN> 鍙﹀澶у涔熷彲浠ョ櫥闄嗗埌鍦ㄤ腑鍥?/SPAN>Eclipse紺懼尯錛?/SPAN>http://www.eclipseworld.org錛夛紝鍦ㄩ偅閲屼綘涔熷彲浠ユ壘鍒板緢澶氱殑甯姪鍜屾敮鎸侊紝褰撶劧錛屼綘涔熷彲浠ュ湪閭i噷鎵懼埌鎴戙?/SPAN> 澶у濂斤紝鍥犱負宸ヤ綔鐨勪簨鎯呮悶浜嗕竴涓鏈堬紝鐜板湪緇堜簬鏆傛椂瀹夊畾涓嬫潵浜嗐傝繖涓緋誨垪鐨勬枃绔犳垜涔熶細緇х畫寰涓嬪啓銆?/SPAN> 鍦ㄨ繖涓鑺備腑錛屾垜浼氬悜澶у浠嬬粛JFace涓殑浜嬩歡妯″紡銆傚叾瀹炴垜鐩鎬俊榪欑瘒鏂囩珷鐨勮鑰呭簲璇ュぇ閮ㄥ垎閮戒細鎺ヨЕeclipse錛岃繖鏍峰彲鑳戒篃浼氭帴瑙﹁繃eclipse鐨勬彃浠跺紑鍙戙傚氨鏄病鏈夋帴瑙﹁繃錛屽ぇ瀹朵篃鍙兘浼氭湁鍦?/SPAN>eclipse閲岄潰鏂板緩宸ョ▼鐨勬椂鍊欏嚭浜庡悇縐嶅師鍥狅紙姣斿濂藉蹇冿級鐐逛簡plug-in project鐨勬椂鍊欏惂銆傚叾瀹炰綔涓轟竴涓▼搴忓憳鏉ヨ錛屼繚鎸佸ソ濂囨槸寰堥噸瑕佺殑銆傚鏋滀綘澶ф鐪嬭繃涓涓?/SPAN>plug-in project鐨勭粨鏋勶紝铏界劧鍙兘涓嶈兘鍏ㄩ儴鐞嗚В錛屼絾鏄垜鐩鎬俊涔熷簲璇ュAction涔嬬被鏈変竴浜涗簡瑙c傛垜浠繖涓鑺備富瑕佸氨鏄洿緇?/SPAN>Action鏉ュ啓鐨勩備負浜嗗鍔犲彲璇繪э紝鎴戜滑棣栧厛浠嬬粛鍑犱釜鍚嶈瘝錛岃繖浜涘悕璇嶉兘鍙互浠?/SPAN>eclipse鐨勬枃妗d腑鎵懼埌銆?/SPAN> JFace涓殑涓涓?/SPAN>Action鍙互綆鍗曞湴鐞嗚В鎴愪竴涓?SPAN style="COLOR: blue">鍛戒護銆傞偅涔堝畠鍜?SPAN style="COLOR: blue">浜嬩歡鏈変粈涔堝叧緋誨憿錛熸瘮濡傝鎴戠偣浜嗕竴涓彍鍗曪紝閭d箞鐐瑰嚮鏈韓灝辨槸涓涓簨浠訛紝浣嗘槸榪欎釜浜嬩歡鐨勫獎鍝嶅氨鏄浉搴旂殑鍛戒護琚墽琛屼簡銆傚ぇ瀹舵棩甯鎬嬌鐢ㄧ殑涓浜涜蔣浠舵瘮濡?/SPAN>Office閮芥槸鏈夎彍鍗曞拰宸ュ叿鏍忕殑錛岃屼竴涓彍鍗曢」鍜屼竴涓伐鍏鋒爮鍙兘鎵ц鐨勬槸鍚屼竴涓懡浠ゃ傛瘮濡?/SPAN>Word閲岄潰瑕佹柊寤轟竴涓枃妗g殑璇濆彲浠ラ氳繃鈥?/SPAN>鏂囦歡鈥?/SPAN>鑿滃崟涓嬬殑鈥?/SPAN>鏂板緩鈥?/SPAN>瀹炵幇錛屼篃鍙互閫氳繃鐐瑰嚮宸ュ叿鏍忎笂鐩稿簲鐨勫浘鏍囧疄鐜般傝繖涓柊寤哄湴鍔熻兘鏈韓鍦?/SPAN>JFace閲岄潰鏄彲浠ヤ嬌鐢?/SPAN>Action鏉ュ疄鐜扮殑銆?/SPAN> 鍦?/SPAN>JFace閲岄潰錛?/SPAN>Action鍙互鍏寵仈鍒拌彍鍗曪紝宸ュ叿鏉★紝浠ュ強鎸夐挳錛堜篃灝辨槸Button錛夈傚綋鐒跺叧浜庡浣曞叧鑱旓紝鎴戜滑浼氬湪鍚庨潰鍚戝ぇ瀹惰緇嗕粙緇嶃?/SPAN> Action鍦?/SPAN>JFace閲岄潰鐨勫畾涔夋槸涓涓帴鍙?/SPAN>org.eclipse.jface.action.IAction銆傚綋鐒跺疄闄呬笂浣犲啓紼嬪簭鐨勬椂鍊欏繀欏昏嚜宸辨潵瀹炵幇榪欎釜鎺ュ彛錛屽啓鍑鴻嚜宸辯殑Action綾繪潵銆?/SPAN> IAction閲岄潰鏈閲嶈鐨勬柟娉曟槸run()錛屽畠涔熸槸浜嬩歡瑙﹀彂浠ュ悗鎵ц鐨勪唬鐮併傚叾浠栫殑鏂規硶閮芥槸涓浜涜緟鍔╂х殑鏂規硶錛屼笉鏄垜浠鍏蟲敞鐨勯噸鐐廣備負浜嗚兘澶熷皢綺懼姏闆嗕腑鍦ㄦ垜浠墍鍏蟲敞鐨勪簨鎯呬笂錛岄氬父鎴戜滑涓嶆槸瀹炵幇IAction鎺ュ彛錛岃屾槸閫氳繃緇ф壙org.eclipse.jface.action.Action榪欎釜鎶借薄綾繪潵瀹炵幇Action銆備笅闈㈡垜浠氳繃涓涓緥瀛愭潵璇存槑Action鐨勭敤娉曘?BR> 棣栧厛鎴戜滑鍏堜笉綆$敤鎴風晫闈紝鍏堝畾涔変竴涓渶綆鍗曠殑Action綾匯?BR> 榪欐浠g爜鍏跺疄搴旇榪樻槸寰堝ソ璇繪噦鐨勩傚甫鍙傜殑鏋勯犲嚱鏁板甫榪涙潵涓涓?/SPAN>Shell瀹炰緥錛岃?/SPAN>run()鏂規硶璇存槑浜嗚繖涓?/SPAN>Action鐨勫姛鑳藉氨鏄樉紺轟竴涓璇濇銆傜5琛屼腑鐨勪唬鐮佽皟鐢ㄤ簡鐖剁被鐨勬瀯閫犲嚱鏁幫紝鍏朵腑絎竴涓弬鏁版槸Action瀵瑰簲鐨勬枃鏈紝鍓嶉潰鐨?/SPAN>&絎﹀彿琛ㄦ槑浜?/SPAN>H鏄儹閿紝鑰岀浜屼釜鍙傛暟鍒欐槸涓涓鏍煎弬鏁般傚鏋滃ぇ瀹剁戶緇悜鍚庣湅鐨勮瘽錛屽氨浼氬彂鐜拌繖涓?/SPAN>Action琚檮鍔犲湪浜嗕竴涓寜閽笂闈紝鑰屾寜閽笂鏄劇ず鐨勬枃鏈氨鏄?/SPAN>Hello錛屽鏋滀綘瀹氫箟鐨勯鏍間笉鏄?/SPAN>AS_PUSH_BUTTON鑰屾槸AS_RADIO_BUTTON鐨勮瘽灝變細鍙戠幇鎸夐挳宸茬粡涓嶆槸涓涓函綺圭殑鎸夐挳浜嗭紝鑰屾槸涓涓崟閫夐挳銆傜浉搴旂殑鍏朵粬椋庢牸鍙互鍙傜収Javadoc銆?BR> 鍜屽墠闈竴鑺傜殑浠g爜鐩告瘮錛屾垜浠彧鏄慨鏀逛簡createContents鏂規硶銆傞鍏堝垱寤轟簡涓涓?/SPAN>HelloAction鐨勫疄渚嬶紝鐒跺悗鍙堝垱寤轟簡涓涓?/SPAN>ActionContributionItem鐨勫疄渚嬶紝鏈鍚庤皟鐢ㄤ簡榪欎釜瀹炰緥鐨?/SPAN>fill鏂規硶灝嗘寜閽坊鍔犲埌紿楀彛涓紝榪欏氨鏄叏閮ㄤ簡銆傛槸涓嶆槸寰堢畝鍗曞憿錛熺▼搴忚繍琛屽嚭鏉ョ殑鏁堟灉濡備笅鍥撅細 鍥?/SPAN> 16 鍙兘鐪嬩簡榪欎釜渚嬪瓙錛屼綘浼氳涓?/SPAN>ActionContributionItem榪欎釜綾昏〃紺虹殑灝辨槸涓涓寜閽簡銆備絾鏄疄闄呬笂騫朵笉鏄殑錛屽畠鍦ㄥ浘褰㈢晫闈笂琛ㄧず鎴愪粈涔堟牱瀛愶紝闅忕潃涓嶅悓鐨?/SPAN>fill璋冪敤鍙堟湁涓嶅悓銆傚湪涓嬩竴鑺備腑錛屾垜浼氬悜澶у娣卞叆浠嬬粛Contribution Item浠ュ強JFace涓殑鑿滃崟錛屽伐鍏鋒潯絳夌殑搴旂敤銆傝繖涓鑺傚氨鍒拌繖閲岀粨鏉熶簡錛屽洜涓哄垰鍒氭崲浜嗗伐浣滅幆澧冿紝鏈夊緢澶氫簨鎯呴渶瑕佸幓鍋氾紝鎵浠ュ啓寰楁瘮杈冪煭錛岃澶у瑙佽皡錛氾級銆?/SPAN> 涓庢硾鍨嬩竴鏍鳳紝鍙橀暱鍙傛暟鏄?/SPAN>C++涓湁鑰?/SPAN>Java涓病鏈夌殑涓縐嶈璦鐗規э紝鍦ㄨ繃鍘誨鏋滄垜浠兂鍚戜竴涓嚱鏁頒紶閫掑彲鍙樻暟閲忕殑鍑芥暟錛屽氨蹇呴』棣栧厛灝嗚繖浜涘弬鏁版斁鍏ヤ竴涓暟緇勪腑錛岀劧鍚庡皢鏁扮粍浼犻掔粰鍑芥暟銆傚氨濡傚悓涓嬮潰鎵浣滅殑涓鏍鳳細
Object[] arguments = { 640, "kb", "anybody", "Bill Gates" }; String result = MessageFormat.format( "{3}:{0,number,integer}{1} ought to be enough for {2} ", arguments);
2 public class SayHiAction extends Action {
3 private Shell shell;
4
5 public SayHiAction(Shell shell) {
6 super();
7 this.shell = shell;
8 this.setText("Say&Hi@Ctrl+H");
9 }
10
11 @Override
12 public void run() {
13 InputDialog input = new InputDialog(shell, "Input your name",
14 "Please input your name here:", null, null);
15 if (input.open() == Window.OK) {
16 MessageDialog.openInformation(shell, "Hello", "Hello, "
17 + input.getValue() + "!");
18 }
19
20 }
21
22 }
23
浠g爜孌?/SPAN> 17
2 public class Hiyou extends ApplicationWindow {
3
4 private SayHiAction hiaction;
5 public Hiyou(Shell parentShell) {
6 super(parentShell);
7 hiaction=new SayHiAction(getShell());
8 addMenuBar();
9 addToolBar(SWT.FLAT | SWT.WRAP);
10 }
11
12 @Override
13 protected ToolBarManager createToolBarManager(int style) {
14 ToolBarManager toolbar=new ToolBarManager();
15 toolbar.add(hiaction);
16 return toolbar;
17 }
18
19 @Override
20 protected MenuManager createMenuManager() {
21 MenuManager menubar=new MenuManager();
22 MenuManager fileMenu=new MenuManager("&File");
23 fileMenu.add(hiaction);
24 menubar.add(fileMenu);
25 return menubar;
26 }
27
28 /**
29 * @param args
30 */
31 public static void main(String[] args) {
32 Hiyou window=new Hiyou(null);
33 window.setBlockOnOpen(true);
34 window.open();
35 Display.getCurrent().dispose();
36 }
37
38 }
39
鑷充簬宸ュ叿鏉″氨鏇寸畝鍗曚簡錛屽垱寤轟竴涓?/SPAN>ToolBarManager鐒跺悗鐩存帴add瀵瑰簲鐨?/SPAN>Action灝卞彲浠ヤ簡銆?/SPAN>娣誨姞鍥炬爣
super();
this.shell = shell;
this.setText("Say&Hi@Ctrl+H");
this.setImageDescriptor(ImageDescriptor.createFromFile(this.getClass(),
"hi.gif"));
}
澶у娉ㄦ剰鏈鍚庝竴鍙ヨ瘽錛屽氨鏄負action璁劇疆鍥炬爣鐨勩傜劧鍚庡啀榪愯涓涓嬪氨浼氬彂鐜拌彍鍗曞拰宸ュ叿鏍忛兘鏈夊浘鏍囦簡銆?/SPAN>緇撴潫璇?o:p>
]]>浠涔堟槸Action
Hello,Action!
2 private Shell shell;
3
4 public HelloAction(Shell shell) {
5 super("&Hello",Action.AS_PUSH_BUTTON);
6 this.shell=shell;
7 }
8
9
10 @Override
11 public void run() {
12 MessageDialog.openInformation(shell, "Hello", "Hello,Action!");
13 }
14
15 }
16
浠g爜孌?/SPAN> 15
2 public class HelloJface extends ApplicationWindow {
3 public HelloJface(Shell shell) {
4 super(shell);
5 }
6 @Override
7 protected Control createContents(Composite parent) {
8 HelloAction action=new HelloAction(parent.getShell());
9 ActionContributionItem aci=new ActionContributionItem(action);
10 aci.fill(parent);
11 return parent;
12 }
13 /**
14 * @param args
15 */
16 public static void main(String[] args) {
17
18 HelloJface demo = new HelloJface(null);
19 demo.setBlockOnOpen(true);
20 demo.open();
21 Display.getCurrent().dispose();
22
23 }
24 }
浠g爜孌?/SPAN> 16
]]>
]]>
鍦?/SPAN>J2SE5.0涓紝鍙傛暟浠嶇劧鏄鏀懼叆涓涓暟緇勪腑浼犵粰瀵瑰簲鐨勬柟娉曪紝浣嗘槸涓嶅悓鐨勬槸錛屼綘涓嶅啀闇瑕佹墜鍔ㄧ殑鍒涘緩鏁扮粍錛岃屾槸鍙渶瑕佸皢閭d簺鍙傛暟緗楀垪鍑烘潵錛屽叾浠栫殑宸ヤ綔鐢辮櫄鎷熸満鏇夸綘瀹屾垚銆傛墍浠ョ幇鍦ㄦ垜浠彲浠ヨ繖鏍峰啓錛?/SPAN>
String result = MessageFormat.format( "{3}:{0,number,integer}{1} ought to be enough for {2} ", 640, "kb", "anybody", "Bill Gates"); |
鎴戜滑閫氳繃涓涓ず渚嬪嚱鏁版潵璇存槑浣跨敤鍙橀暱鍙傛暟鍑芥暟鐨勫畾涔夈傝繖涓嚱鏁版墦鍗板嚭涓涓漢鍏葷殑鍑犳潯鐙楃殑鍚嶅瓧銆?/FONT>
private void printDogNames(String... dogs) { System.out.println("I have " + dogs.length + " dogs:"); for(String dogname:dogs) { System.out.println(dogname); } } |
浜嬪疄涓婂彉闀垮弬鏁?/SPAN>dogs鏄竴涓暟緇勩?/SPAN>
涓涓嚱鏁扮殑鍙傛暟涓彧鑳芥湁涓涓彉闀垮弬鏁幫紝鎵浠ョ被浼間笅闈㈢殑瀹氫箟鏄?SPAN style="COLOR: red">涓嶅悎娉?/SPAN>鐨勶細
private void printDogNames(String... dogs,float... dogage) |
濡傛灉鍐沖畾鎶婂嚱鏁板弬鏁拌緗負鍙彉闀垮害鐨勶紝浣犲繀欏繪兂鍒拌繖鏍蜂竴縐嶆儏鍐碉紝灝辨槸璋冪敤鐨勭▼搴忓緢鍙兘浼氫笉緇欎綘浼犱換浣曠殑鍙傛暟錛岃繖涓椂鍊欎綔涓哄弬鏁扮殑鏁扮粍length涓?/SPAN>0錛岃岃繖鍦ㄨ娉曚笂鏄畬鍏ㄥ悎娉曠殑錛屾墍浠ヤ綘蹇呴』鍦ㄥ嚱鏁板畾涔変腑鑰冭檻鍒拌繖縐嶆儏鍐點?/SPAN>
鍦ㄨ繖涓鑺備腑錛屾垜浠粠鍓嶉潰鎵鍒椾婦鍑烘潵鐨?/SPAN>Hello, world!紼嬪簭寮濮嬪swt榪涜涓浜涘垵姝ョ殑鎺㈢儲銆傛墍璋撶殑鍒濇鏄寚錛屾垜浠細浠嬬粛緙栧啓swt紼嬪簭鐨勫熀鏈濊礬錛屼互鍙婂涓や釜閲嶈鐨勭被:Display鍜?/SPAN>Shell浣滀竴浜涗粙緇嶃?BR>
鍥犱負榪欎竴鑺傚拰鍓嶄竴鑺傛槸鍒嗘垚涓や釜閮ㄥ垎璐村嚭鏉ョ殑錛屾墍浠ユ垜浠嶇劧灝?/SPAN>Hello, world!鐨勪唬鐮佹鍦ㄤ笅闈㈠垪鍑烘潵錛?/SPAN>
浠g爜孌?/EM> 2
榪欐紼嬪簭铏界劧寰堢畝鍗曪紝浣嗘槸瀹冨弽鏄犱簡鎴戜滑涔﹀啓swt紼嬪簭鐨勬楠わ紝榪欎簺姝ラ鏄細
1. 鍒涘緩涓涓?/SPAN>Display瀵硅薄
2. 鍒涘緩涓涓垨鑰呭涓?/SPAN>Shell瀵硅薄錛屼綘鍙互璁や負Shell浠h〃浜嗙▼搴忕殑紿楀彛銆?/SPAN>
3. 鍦?/SPAN>Shell鍐呭垱寤哄悇縐嶉儴浠訛紙widget錛?/SPAN>
4. 瀵瑰悇涓儴浠惰繘琛屽垵濮嬪寲錛堝瑙傦紝鐘舵佺瓑錛夛紝鍚屾椂涓哄悇縐嶉儴浠剁殑浜嬩歡鍒涘緩鐩戝惉鍣紙listener錛?/SPAN>
5. 璋冪敤Shell瀵硅薄鐨?/SPAN>open()鏂規硶浠ユ樉紺虹獥浣?/SPAN>
6. 鍚勭浜嬩歡榪涜鐩戝惉騫跺鐞嗭紝鐩村埌紼嬪簭鍙戝嚭閫鍑烘秷鎭?/SPAN>
7. 璋冪敤Display瀵硅薄鐨?/SPAN>dispose()鏂規硶浠ョ粨鏉熺▼搴忋?/SPAN>
鍦?/SPAN>Hello,world!紼嬪簭涓紝涓轟簡璁╃▼搴忔洿鍔犵畝鍗曪紝鎴戜滑娌℃湁鍒涘緩浜嬩歡鐩戝惉鍣紝鍦ㄤ互鍚庣殑鍐呭涓細榪涜涓撻棬浠嬬粛銆?/SPAN>
鐜板湪璁╂垜浠◢寰繁鍏ヤ竴浜涳紝鐪嬩竴涓嬭繖浜?/SPAN>Display,Shell鏈変粈涔堜綔鐢ㄤ互鑷充簬鎴戜滑姣忎釜紼嬪簭閮藉繀欏繪湁瀹冧滑瀛樺湪銆?/SPAN>
鎴戜滑鍦ㄥ墠闈㈣榪囷紝姣忎釜swt紼嬪簭鍦ㄦ渶寮濮嬮兘蹇呴』鍒涘緩涓涓?/SPAN>Display瀵硅薄銆?/SPAN>Display瀵硅薄璧蜂粈涔堜綔鐢ㄥ憿錛熷畠鏄?/SPAN>swt涓庢搷浣滅郴緇熸矡閫氱殑涓搴фˉ姊併傚畠璐熻矗swt鍜屾搷浣滅郴緇熶箣闂寸殑閫氫俊銆傚畠灝?/SPAN>swt/JFace鐨勫悇縐嶈皟鐢ㄨ漿鍖栦負緋葷粺鐨勫簳灞傝皟鐢紝鎺у埗鎿嶄綔緋葷粺涓?/SPAN>swt鍒嗛厤鐨勮祫婧愩傚悓鏃舵垜浠篃鍙互閫氳繃Display瀵硅薄寰楀埌鎿嶄綔緋葷粺鐨勪竴浜涗俊鎭?/SPAN>
Display鏄竴涓?/SPAN>鈥?/SPAN>騫曞悗宸ヤ綔鑰?/SPAN>鈥?/SPAN>錛屽畠涓?/SPAN>swt/JFace鎻愪緵鏀寔錛屼絾鏄綘騫朵笉鑳藉浠庢煇涓敤鎴風晫闈腑鐪嬪埌瀹冪殑褰卞瓙銆?/SPAN>
鍦ㄥ墠闈㈢殑Hello,world!紼嬪簭涓紝鎴戜滑鍙互鐪嬪埌鏋勫緩涓涓?/SPAN>Display瀵硅薄鏄拰鏅氱殑Java瀵硅薄涓鏍烽氳繃鏋勯犲嚱鏁板疄鐜扮殑銆傚畠涓哄疄鐜板浘褰㈢晫闈㈠噯澶囦簡鏈鍩烘湰鐨勬潯浠躲傝屽湪紼嬪簭緇撴潫鏃舵垜浠繀欏繪樉寮忓湴璋冪敤dispose() 鏂規硶鏉ラ噴鏀劇▼搴忚繍琛屼腑鎵鑾峰緱鐨勮祫婧愩備竴鑸潵璇達紝涓涓▼搴忓彧闇瑕佷竴涓?/SPAN>Display瀵硅薄錛屽綋鐒舵病鏈変漢紱佹浣犲垱寤哄涓?/SPAN>Display瀵硅薄銆備絾鏄湪swt鐨?/SPAN>javadoc涓紝鎴戜滑鍙互鐪嬪埌鍏充簬榪欎釜闂涓浜涙弿榪幫細
鈥淎pplications which are built with SWT will almost always require only a single display. In particular, some platforms which SWT supports will not allow more than one active display. In other words, some platforms do not support creating a new display if one already exists that has not been sent the dispose() message.鈥?o:p>
Display鏈夌潃浼楀鐨勬柟娉曪紝鎴戜滑涓嶅彲鑳戒竴涓浠嬬粛銆傚湪榪欓噷鍙寫閫夊嚑涓彲鑳戒細姣旇緝甯哥敤鐨勪綔涓浜涚畝鍗曚粙緇嶃?/SPAN>
l setData()鍜?/SPAN>getData()錛氳繖涓瀵瑰嚱鏁板厑璁告垜浠負Display瀵硅薄璁懼畾涓浜涙暟鎹紝setData()鐨勫弬鏁頒腑key鍜?/SPAN>value綾諱技浜庢垜浠湪浣跨敤Map瀵硅薄涓?/SPAN>key鍜?/SPAN>value鐨勫惈涔夈?/SPAN>
l getShells()寰楀埌鍏寵仈鍒拌Display瀵硅薄鐨勬墍鏈夋病鏈?/SPAN>dispose鐨?/SPAN>Shell瀵硅薄
l getCurrent()寰楀埌涓庣敤鎴蜂氦浜掔殑褰撳墠綰跨▼
l readAndDispatch()寰楀埌浜嬩歡騫朵笖璋冪敤瀵瑰簲鐨勭洃鍚櫒榪涜澶勭悊
l sleep()絳夊緟浜嬩歡鍙戠敓
涓涓?/SPAN>Shell瀵硅薄灝辨槸涓涓獥鍙c備綘鍙互鍦ㄤ笂闈㈡斁緗悇縐嶉儴浠跺垱寤轟赴瀵岀殑鍥懼艦鐣岄潰銆?/SPAN>
鎴戜滑閮界煡閬撶獥鍙f湁寰堝縐嶏紝姣斿紿楀彛鏈夊彲浠ヨ皟鏁村ぇ灝忕殑錛屾湁涓嶅彲浠ョ殑錛屾湁鐨勬病鏈夋渶澶у寲鏈灝忓寲鎸夐挳銆傝繖浜涚獥浣撶殑鐗瑰緛鍦?/SPAN>swt涓鎴愪負椋庢牸錛?/SPAN>style錛夈備竴涓獥浣撶殑椋庢牸鍙互鐢ㄤ竴涓暣鏁拌繘琛屽畾涔夈傝繖浜涢鏍肩殑瀹氫箟鍦?/SPAN>org.eclipse.swt.SWT涓?/SPAN>
Shell瀵硅薄鍙敤鐨勯鏍煎寘鎷細BORDER, CLOSE, MIN, MAX, NO_TRIM, RESIZE, TITLE , PLICATION_MODAL, MODELESS, PRIMARY_MODAL,
榪欎簺椋庢牸鎴戜滑涓嶄綔涓涓浠嬬粛錛屼綘鍙互浠庝粬浠瓧闈㈡剰涔夌湅鍑轟竴浜涘惈涔夋潵錛屽綋鐒朵篃鍙互鍙傝冨搴旂殑javadoc銆?/SPAN>
鎴戜滑鍙互鍦ㄤ竴涓?/SPAN>Shell鐨勬瀯閫犲嚱鏁頒腑瀹氫箟瀹冪殑椋庢牸錛屾瘮濡傚湪鍓嶉潰鐨?/SPAN>Hello,world!紼嬪簭涓紝鎴戜滑鍙互榪欐牱瀹氫箟Shell銆?/SPAN>
鏈鍚庡緱鍒扮殑紿椾綋娌℃湁鏈澶у寲鍜屾渶灝忓寲鎸夐挳錛屽茍涓斿ぇ灝忔槸鍥哄畾涓嶅彉鐨勩?/SPAN>
鍥犱負swt榪愯浜庡悇縐嶅鉤鍙頒箣涓婏紝鑰岃繖浜涘鉤鍙頒笂鐨勭獥鍙g鐞嗗櫒鍗冨樊涓囧埆錛屾墍浠ユ墍鏈夎繖浜涢鏍奸兘涓嶆槸鑲畾鍙互瀹炵幇鐨勩傚湪swt鐨?/SPAN>javadoc涓紝榪欒縐頒負鏆楃ず錛?/SPAN>hints錛夈?/SPAN>
Shell瀵硅薄鐨勬柟娉曞ぇ閮藉拰GUI鏈夊叧錛屾瘮濡?/SPAN>setEnabled()璁懼畾浜嗙獥浣撴槸鍚﹁兘澶熷拰鐢ㄦ埛榪涜浜や簰錛?/SPAN>setVisble()璁懼畾浜嗙獥浣撴槸鍚﹀彲瑙侊紝setActive()灝嗙獥浣撹涓哄綋鍓嶇殑媧誨姩紿楀彛銆?/SPAN>
鎴戜滑鍙互鐢?/SPAN>open()鏂規硶鎵撳紑涓涓獥浣擄紝close()鏂規硶鍏抽棴涓涓獥浣撱?/SPAN>
鏈妭璁ㄨ浜?/SPAN>Display鍜?/SPAN>Shell鐨勪竴浜涙蹇碉紝榪欐槸鎴戜滑浠ュ悗榪涗竴姝ヤ簡瑙?/SPAN>swt鐨勫熀紜銆傚湪涓嬩竴鑺備腑錛屾垜灝嗕粙緇嶅悇縐嶉儴浠訛紙widget錛夌殑鐢ㄦ硶錛屾墍璋撻儴浠訛紝鏄寚鏂囨湰妗嗭紝鏍囩絳?/SPAN>UI瀹炰綋銆?/SPAN>
2. 鍚勭enterprise bean鐨勫畾涔夐兘鍙渶瑕佸畾涔変竴浜?/SPAN>POJO鍜?/SPAN>POJI閰嶅悎鍏冩暟鎹嵆鍙畬鎴?/SPAN>
3. 鍥炶皟鏈哄埗錛?/SPAN>callback錛変篃鏄敤鏅氱殑鏂規硶鍔犱互涓瀹氱殑娉ㄩ噴錛屼唬鏇夸簡鍘熸湁鐨?/SPAN>ejbCreate涔嬬被鐨勬柟娉?/SPAN>
4. AOP姒傚康鐨勫紩鍏ワ細鍏佽鍦ㄧ被瀹氫箟涓拰鍏朵粬綾諱腑瀵規柟娉曡繘琛屾嫤鎴?/FONT>
5. 渚濊禆娉ㄥ叆錛氬厑璁擱氳繃娣誨姞鐗瑰畾娉ㄩ噴鍚戝睘鎬ф敞鍏ユ墍渚濊禆鐨勫璞?BR>
鎬葷殑鏉ヨ錛宔jb3.0鐩稿浜巈jb2.0鏉ヨ瀹炵幇鏇村姞綆鍗曚簡錛岀敋鑷蟲垜璁や負姣旂洰鍓嶇殑涓浜涜交閲忕駭瑙e喅鏂規錛堟瘮濡俿pring framework涔嬬被錛夎繕瑕佺畝鍗曘?/FONT>
涔嬪墠綾諱技榪欐牱鐨勮鍙ワ細
void cancelAll(Collection c) { for (Iterator i = c.iterator(); i.hasNext(); ) { TimerTask tt = (TimerTask) i.next(); tt.cancel(); } } |
浠ュ悗鍙互榪欐牱鍐欙細
void cancelAll(Collection c) { for (Object o : c) ((TimerTask)o).cancel(); } |
鏈夋椂鍊欐垜浠彲鑳藉啓鍑鴻繖鏍風殑浠g爜錛?/SPAN>
List suits = ...; List ranks = ...; List sortedDeck = new ArrayList(); for (Iterator i = suits.iterator(); i.hasNext(); ) for (Iterator j = ranks.iterator(); j.hasNext(); ) sortedDeck.add(new Card(i.next(), j.next())); |
榪欐浠g爜涓嶄細鎸夌収鎴戜滑璁炬兂鐨勯偅涔堝伐浣滐紝鍥犱負姣忔絎簩涓?/SPAN>for璇彞鐨勬墽琛岄兘浼氬紩鍙?/SPAN>i.next()鐨勬墽琛岋紝瀹為檯涓婃垜浠病鏈夎揪鍒板i榪涜閬嶅巻鐨勭洰鐨勶紝鑰屼笖鍙兘浼氬紩璧蜂竴涓?/SPAN>NoSuchElementException寮傚父銆?/SPAN>
瑙e喅鐨勪竴涓姙娉曟槸鏀瑰啓鎴愬涓嬩唬鐮侊細
for (Iterator i = suits.iterator(); i.hasNext(); ) { Suit suit = (Suit) i.next(); for (Iterator j = ranks.iterator(); j.hasNext(); ) sortedDeck.add(new Card(suit, j.next())); } |
鍒╃敤java璇█鐨勬柊鐗規э紝鎴戜滑鍙互榪欐牱鍐欙細
for (Suit suit : suits) for (Rank rank : ranks) sortedDeck.add(new Card(suit, rank)); |
榪欐浠g爜鏄笉鏄緢婕備寒錛?/SPAN>
鎴戜滑鐭ラ亾錛屽湪Java涓紝int,long絳夊師鐢熺被鍨嬩笉鏄竴涓戶鎵胯嚜Object鐨勭被錛屾墍浠ョ浉搴旂殑錛屾湁寰堝鎿嶄綔鎴戜滑閮戒笉鑳藉埄鐢ㄥ師鐢熺被鍨嬫搷浣滐紝姣斿鎯寵鎶婁竴涓暣鏁版斁鍏ュ埌涓涓泦鍚堜腑錛屾垜浠繀欏婚鍏堝垱寤轟竴涓?/SPAN>Integer瀵硅薄錛岀劧鍚庡啀灝嗚繖涓璞℃斁鍏ュ埌闆嗗悎涓傚綋鎴戜滑浠庨泦鍚堜腑鍙栨暟鐨勬椂鍊欙紝鍙栧嚭鏉ョ殑鏄竴涓?/SPAN>Integer瀵硅薄錛屽洜姝や笉鑳界洿鎺ュ瀹冧嬌鐢ㄥ姞鍑忎箻闄ょ瓑榪愮畻絎︼紝鑰屾槸蹇呴』鐢?/SPAN>Integer.intValue()鍙栧埌鐩稿簲鐨勫兼墠鍙互錛岃繖鏍風殑榪囩▼縐頒箣涓?/SPAN>boxing鍜?/SPAN>unboxing銆?/SPAN>
J2SE5.0鏀寔autoboxing鍜?/SPAN>auto-unboxing錛屼篃灝辨槸璇存垜浠互鍚庝笉闇瑕佸啀鎵嬪姩鍦板仛榪欎簺boxing鍜?/SPAN>unboxing鎿嶄綔浜嗭紝java璇█浼氭浛鎴戜滑瀹屾垚銆傚叿浣撳彲浠ュ弬鐓т笅闈㈢殑紺轟緥錛?/SPAN>
List<Integer> intList=new ArrayList<Integer>(); intList.add(2); intList.add(new Integer(5)); int i=3+intList.get(0);//i=5 int j=3+intList.get(1); //j=8 |
浠庤繖涓孌電▼搴忎腑鎴戜滑鍙互鐪嬪埌錛?/SPAN>autoboxing鍜?/SPAN>auto-unboxing涓烘垜浠渷鎺変簡寰堝涓嶅繀瑕佺殑宸ヤ綔銆?/SPAN>
鍦ㄨ繃鍘伙紝鎴戜滑蹇呴』鐢ㄦ暣鍨嬪父鏁頒唬鏇挎灇涓撅紝闅忕潃J2SE 5.0鐨勫彂甯冿紝榪欐牱鐨勬柟娉曠粓浜庝竴鍘諱笉澶嶈繑浜嗐?/SPAN>
涓涓畝鍗曠殑鏋氫婦綾誨瀷瀹氫箟濡備笅錛?/SPAN>
public enum Weather { SUNNY,RAINY,CLOUDY } |
鏋氫婦鍙互鐢ㄥ湪switch璇彞涓細
Weather weather=Weather.CLOUDY; switch(weather) { case SUNNY: System.out.println("It's sunny"); break; case CLOUDY: System.out.println("It's cloudy"); break; case RAINY: System.out.println("It's rainy"); break; } |
鏋氫婦綾誨瀷鍙互鏈夎嚜宸辯殑鏋勯犳柟娉曪紝涓嶈繃蹇呴』鏄鏈夌殑錛屼篃鍙互鏈夊叾浠栨柟娉曠殑瀹氫箟錛屽涓嬮潰鐨勪唬鐮侊細
public enum Weather { SUNNY("It is sunny"), RAINY("It is rainy"), CLOUDY("It is cloudy"); private String description; private Weather(String description) { this.description=description; } public String description() { return this.description; } } |
涓嬮潰涓孌典唬鐮佹槸瀵硅繖涓灇涓劇殑涓涓嬌鐢細
for(Weather w:Weather.values()) { System.out.printf( "Description of %s is \"%s\".\n",w,w.description()); } Weather weather=Weather.SUNNY; System.out.println(weather.description() + " today"); |
濡傛灉鎴戜滑鏈変竴涓灇涓劇被鍨嬶紝琛ㄧず鍥涘垯榪愮畻錛屾垜浠笇鏈涘湪鍏朵腑瀹氫箟涓涓柟娉曪紝閽堝涓嶅悓鐨勫煎仛涓嶅悓鐨勮繍綆楋紝閭d箞鎴戜滑鍙互榪欐牱瀹氫箟錛?/SPAN>
public enum Operation { PLUS, MINUS, TIMES, DIVIDE; // Do arithmetic op represented by this constant double eval(double x, double y){ switch(this) { case PLUS: return x + y; case MINUS: return x - y; case TIMES: return x * y; case DIVIDE: return x / y; } throw new AssertionError("Unknown op: " + this); } } |
榪欐牱鍐欑殑闂鏄綘濡傛灉娌℃湁鏈鍚庝竴琛屾姏鍑哄紓甯哥殑璇彞錛岀紪璇戝氨鏃犳硶閫氳繃銆傝屼笖濡傛灉鎴戜滑鎯寵娣誨姞涓涓柊鐨勮繍綆楋紝灝卞繀欏繪椂鍒昏鐫瑕佸湪eval涓坊鍔犲搴旂殑鎿嶄綔錛屼竾涓蹇樿鐨勮瘽灝變細鎶涘嚭寮傚父銆?/SPAN>
J2SE 5.0鎻愪緵浜嗚В鍐寵繖涓棶棰樼殑鍔炴硶錛屽氨鏄綘鍙互鎶?/SPAN>eval鍑芥暟澹版槑涓?/SPAN>abstract錛岀劧鍚庝負姣忎釜鍊煎啓涓嶅悓鐨勫疄鐜幫紝濡備笅鎵紺猴細
public enum Operation { PLUS { double eval(double x, double y) { return x + y; } }, MINUS { double eval(double x, double y) { return x - y; } }, TIMES { double eval(double x, double y) { return x * y; } }, DIVIDE { double eval(double x, double y) { return x / y; } }; abstract double eval(double x, double y); } |
榪欐牱灝遍伩鍏嶄簡涓婇潰鎵璇寸殑涓や釜闂錛屼笉榪囦唬鐮侀噺澧炲姞浜嗕竴浜涳紝浣嗘槸闅忕潃浠婂悗鍚勭Java寮鍙?/SPAN> IDE鐨勬敼榪涳紝浠g爜閲忕殑闂搴旇浼氳娣″寲銆?/SPAN>
鍦ㄨ繃鍘繪垜浠浣跨敤鍏朵粬鍖呬腑鏌愮被鐨勯潤鎬佸彉閲忥紝涓鑸兘瑕佸湪鍓嶉潰鍔犱笂瀵瑰簲鐨勭被鍚嶏細
double r = Math.cos(Math.PI * theta); |
浣跨敤闈欐佸紩鍏ワ紝鎴戜滑鍙互鎶婂墠闈㈢殑綾誨悕鍘繪帀錛岄潤鎬佸紩鍏ョ殑璇彞鏄繖鏍風殑錛?/SPAN>
import static java.lang.Math.PI; |
蹇呴』娉ㄦ剰鍒拌繖閲屾渶鍚庝笉鏄埌綾?/SPAN>Math,鑰屾槸鐩存帴鍒頒簡瀹氫箟鐨勫彉閲?/SPAN>PI銆?/SPAN>
闈欐佸紩鍏ヤ笉鍙闈欐佸彉閲忥紝涔熷彲浠ラ拡瀵歸潤鎬佹柟娉曘傛澶栬繕鍙互浣跨敤*錛屽涓嬮潰鎵紺猴細
import static java.lang.Math.*; |
闄ら潪鎴戜滑瀵規煇涓潤鎬佸父閲忥紙鎴栬呮柟娉曪級璁塊棶棰戝害寰堝ぇ錛屽惁鍒欏簲璇ュ敖閲忛伩鍏嶄嬌鐢ㄩ潤鎬佸紩鍏ャ?/FONT>