鍦ㄨ繖閲岋紝鎴戞兂瑕佽鐨勬槸涓涓壒鍒叿鏈夆滀腑鍥界壒鑹測濈殑闅愬柣錛氭垜縐頒箣涓烘渚犻殣鍠匯?/p>
姣嬪焊鎴戝鍋氳В閲婏紝鍙兘寰堝紼嬪簭鍛樼湅鍒拌繖涓瘝灝辮凍浠ュ嬀璧蜂赴瀵岀殑鎯寵薄銆傛垜浠腑鐨勫緢澶氫漢鍠滄鎶婅嚜宸辨墍宕囨暚
鍜屼僵鏈嶇殑銆佽蔣浠剁晫鏈夊獎鍝嶅姏鐨勪漢縐頒箣涓哄ぇ渚狅紝騫跺夠鎯寵嚜宸辨湁鏈濅竴鏃ヨ兘澶熻揪鍒頒粬浠殑澧冪晫銆傦紙璺戦涓涓嬶紝
榪欎釜縐拌皳鐜板湪浼間箮鏈変簡涓涓瘮杈冭崏鏍圭殑銆佹垨鑰呰姣旇緝Web2.0鐨勭増鏈斺斿彨鍋氱墰浜猴級涓婁釜涓栫邯閭d釜涓漢
鑻遍泟涓諱箟鐨勫勾浠o紝鏇劇粡娑岀幇鍑轟竴澶ф壒榪欐牱鐨勪漢鐗╋紝鐜板湪寰堝浜轟粛鐒朵範鎯О浠栦滑涓衡滃ぇ渚犫濃斺旇繖鍏?br />涓寘鎷眰浼悰銆佺帇蹇椾笢銆侀矋宀蟲ˉ銆佹湵宕囧悰...
闄ゆ涔嬪錛屾垜浠繕鍠滄灝嗛噸閲忕駭鐨勫嚭鐗堢墿縐頒箣涓烘鏋楃綾?鎶婅蔣浠跺紑鍙戠殑緇勭粐鍥綋姣斾綔姹熸箹甯淳錛?br />瑕佸艦瀹硅蔣浠跺紑鍙戠殑鐞嗘兂澧冪晫錛屼篃甯鎬細鎼嚭鈥滈鑺辨憳鍙朵勘鍙激浜衡濇垨鈥滄棤鍓戣儨鏈夊墤鈥濊繖鏍風殑鍙ュ瓙銆傛墍鏈夎繖浜?br />閮芥垨澶氭垨灝戠殑琛ㄦ槑錛氭渚犳繁娣卞獎鍝嶄簡澶ч噺鐨勭▼搴忓憳錛屼粬浠潪甯稿枩嬈㈢敤姝︿緺涓殑鐞嗗康鏉ユ瘮鍠昏蔣浠跺紑鍙戣繃紼嬩腑
鐨勭幇璞°傛垨璁革紝涔熸槸鍥犱負紼嬪簭鍛?鍜?鐨勭敓媧誨お榪囨灟鐕ワ紝闇瑕佹枃鍖栨潵鍔犱竴鐐瑰懗閬擄紝鑰屼粬浠嚜瑙変笉鑷鐨?br />閫夋嫨浜嗘渚犮傝繖灝辨槸鎵璋撶殑涓浗鐗硅壊鍚с?/p>
鎴戝繀欏昏佸疄鐨勬壙璁わ細鎴戣嚜宸卞氨鏇劇粡娣卞彈姝︿緺鐨勫獎鍝嶏紝榪囧幓涔熶竴鐩存病鏈夋劅鍒版湁浠涔堜笉濡ャ備絾鏄紝
鍦ㄥ墠鍑犲ぉ鐪嬭繃緗戜笂鐨勬煇浜涘洖甯栦腑涓浜涘厖婊℃渚犻殣鍠誨懗閬撶殑鏂囧瓧錛岀獊鐒惰寰楁湁浜涗笉鏄粙鍛熾?br />鎴戝紑濮嬫濊冿細瀵逛簬杞歡寮鍙戞潵璇達紝姝︿緺鏄笉鏄竴涓ソ鐨勯殣鍠伙紵緇撹錛氫笉鏄笉濂斤紝鑰屾槸闈炲父鐨?br />緋熴傛渚犲拰杞歡寮鍙戞牴鏈病鏈変粈涔堝叡鍚岀偣錛岀敋鑷沖彲浠ヨ鏄按鐏笉瀹圭殑銆?/p>
涓轟粈涔堣姝︿緺鍜岃蔣浠跺紑鍙戞病鏈夊叡鍚岀偣錛熸渚犺鐨勬槸鐮村潖鐨勮壓鏈傚お鍙插叕璇粹滀緺浠ユ鐘鈥濄?br />姝︿緺鐨勬剰涔夛紝鍦ㄦ渶濂界殑鎯呭喌涓嬶紝涔熶粎浠呮槸鏉瀵屾祹璐侀櫎鏆村畨鑹紝鏄鏃ф湁縐╁簭鐨勭牬鍧忋?br />闂鍦ㄤ簬錛氱牬鍧忔槸鐥涘揩鎯剰鐨勶紝浣嗙牬鑰屼笉绔嬪氨鏄函綺圭殑鐮村潖錛屾病鏈変換浣曠Н鏋佹剰涔夈?br />鐮村潖浠ュ悗鏂扮殑縐╁簭濡備綍寤虹珛鍛紵娌℃湁鍝竴涓渚犳晠浜嬩負姝ゅ仛鍑虹瓟妗堬紝
涔熸病鏈変竴涓緺瀹㈡搷蹇冭繖縐嶄簨銆備粬浠湪涔庣殑鏄滃崄姝ユ潃涓浜猴紝鍗冮噷涓嶇暀褰⑩濈殑楂樻墜褰㈣薄錛?br />鑷充簬璧頒簡浠ュ悗鐑傛憡瀛愯皝鏉ユ敹鎷撅紵閭f湰澶т緺鍙氨綆′笉鐫浜嗐?/p>
杞歡寮鍙戞槸寤鴻錛岃屼笉鏄?br />鐮村潖銆傚嵆浣挎棫鐨勭郴緇熼潪甯哥碂緋曪紝鎴戜滑涔熸病鏈夌悊鐢卞皢鍏朵粯涔嬩竴鐐斺旇繖灝辨槸涓轟粈涔堢幇浠g殑鏁忔嵎
寮鍙戣呴潪甯稿己璋冮噸鏋勭殑鍘熷洜銆傛瀯閫犳柊鐨勪唬鐮佸浐鐒舵槸鏋佸叿鍒涢犲揩鎰熺殑宸ヤ綔錛屼絾鏄蔣浠跺紑鍙戣繃
紼嬩腑榪樻湁鎴愭墦鐨勨滆偖鑴忊濆伐浣滐細闇姹傚垎鏋愶紝璁捐錛屾枃妗o紝璋冭瘯錛岀淮鎶?.....榪欎簺宸ヤ綔綣佸啑
鑰岀悙紕庯紝浣嗗嵈鏄暣涓紑鍙戣繃紼嬩腑蹇呬笉鍙皯鐨勭粍鎴愰儴鍒嗐傛兂娼囨磼涓涓嬪氨鎷嶆媿灞佽偂璧頒漢鐨?br />紼嬪簭鍛樻病鏈変粈涔堣亴涓氱礌璐ㄥ彲璦銆?/p>
姝︿緺涓殑楂樻墜鏄粈涔堝艦璞★紵澶╅┈琛岀┖錛岀嫭寰鐙潵錛岀鍑洪娌°傝繖鏍風殑浜虹湅璧鋒潵寰堟湁鎬ф牸錛?br />浣嗗湪鐜頒唬浼佷笟涓伆鎭版槸鏈蹇岃鐨勩傝屾姝g粡緇忔彁鍊eam Work鐨勫洟闃熷弽鍊掑湪姝︿緺涓父甯告垚涓?br />璁ュ埡鐨勫璞♀斺斾綘涓嶅Θ鐪嬬湅灝戞灄鎴栧叏鐪熻繖鏍風殑澶у瀷鍥㈤槦鍦ㄩ噾搴稿皬璇翠腑琚笐鍖栨垚浜嗕粈涔堝湴姝ャ?/p>
姝︿緺鎵鎻忕粯鐨勬槸鍐滀笟紺句細鐨勫吀鍨嬫儏鍐點備竴浣嶉珮鎵嬮氬父鍙細鎶婅嚜宸辯殑鎶鑹轟紶鎺堢粰鑷充翰鍜屽皯鏁板嚑涓?br />淇″緱榪囩殑寮熷瓙錛涘紵瀛愪害鐒躲傝繖縐嶇粨鏋勯潪甯歌剢寮憋細涓鏃﹀嚭鐜頒換浣曢棶棰橈紝榪欓棬鎶鑹哄緢瀹規槗灝卞け浼犱簡銆?/p>
姝︿緺涓殑縐樼睄鏄繖鏍蜂竴縐嶄笢瑗匡細浣犲緱鍒板畠浠ュ悗錛屾渶濂借棌涔嬪悕灞憋紝鍋峰伔淇偧銆備竴鏃︽硠婕忥紝鍙細緇欎綘
甯︽潵鏉韜箣紲搞傚拰甯堝緬鎺堝彈鐨勯棶棰樼浉鍚岋紝榪欐牱鍙細璁╂渶濂界殑鎶鑹哄湪鍘嗗彶闀挎渤涓笎娓愭鞏鐏傜幇浠gぞ浼氬拰寮鏀?br />婧愪唬鐮佽繍鍔ㄥ垯鏄劇ず浜嗙浉鍙嶇殑鎯呭喌錛氱煡璇嗗彲浠ョ敱浠諱綍浜鴻幏鍙栦笌瀛︿範錛岃屼笉鍒嗛棬媧捐吹璐便備笌鍒漢鍒嗕韓
鐭ヨ瘑涔熶笉浼氱粰浣犲甫鏉ヤ換浣曞潖澶勩?/p>
姝︿緺鎴愪負闅愬柣甯︽潵鐨勬伓鏋滃氨鏄紝紼嬪簭鍛樹互鎴愪負鈥滈珮鎵嬧濅負鑽o紝浠ョ偒鑰鎶宸т負涔愶紱鏃犺椋庨櫓
澶ч噺閲囩敤涓浜涚湅涓婂幓姣旇緝鐐殑鏂版妧鏈紱鎰や笘瀚変織浠ヤ負澶╀笅鍙湁鑷繁鎬鎵嶆湭閬囷紱涓嶄細涓庝漢
娌熼氾紝緗旈【瀹㈡埛闇姹傦紝鎶婁笉鎳傛妧鏈殑鐢ㄦ埛褰撶櫧鐥達紱涓嶄細寮璇氬竷鍏紝鎬繪槸鑷繁鍋峰伔鐣欎竴鎵嬶紱
鍑℃縐嶇錛屼笉鑳借閮芥槸鍥犱負姝︿緺嫻佹瘨銆備絾鏄湪紼嬪簭鍛樹腑閫犳垚浜嗕笉濂界殑椋庢皵錛屾渚犵殑褰卞搷
鏄笉鍙拷瑙嗙殑銆?/p>
姝︿緺鏄垚騫翠漢鐨勭璇濓紝浣嗚蔣浠跺紑鍙戜笉鏄璇濄傝蔣浠跺紑鍙戣鐨勬槸鑴氳笍瀹炲湴錛岃屼笉鏄揩鎰忔仼浠囥?br />榪樺湪鍋氫緺瀹㈡ⅵ鐨勭▼搴忓憳錛屾効浣犱滑鏃╃偣閱掓潵銆?/p>
聽
鍊煎緱璇存槑鐨勬槸錛屽鏋滆緗瓹ombo涓篛wnerDraw Variable椋庢牸錛屽垯蹇呴』閲嶈澆wmMeasureChild鏂規硶鏉ユ寚瀹氭瘡涓欏圭殑楂樺害銆傚鏋滀嬌鐢∣wnerDraw Fixed椋庢牸錛屽垯鍙渶瑕佸湪鏋勯犵殑鏃跺欏彂閫佷竴鏉B_SETITEMHEIGHT娑堟伅灝辮浜嗐?br />
聽鍙﹀涓縐嶅煎緱鑰冭檻鐨勯夋嫨鏄皢Win32鐨凜omboBoxEx鎺т歡鍖呰鎴怱WT Widget銆備笉榪囷紝榪欓渶瑕佽漿鎹㈣嫢騫茬粨鏋勫茍鎻愪緵鎺ュ彛錛學in32鐨処mageList綆$悊鏈哄埗鍜孲WT鐨処mage鍖呰鏂規硶宸埆姣旇緝澶э紝浣垮緱榪欑鏂規硶瀹炵幇璧鋒潵楹葷儲鐨勫銆?br />
鏃㈢劧姝よ礬涓嶉氾紝閭d箞C#鏄浣曞疄鐜癲elegate鐨勫憿錛熻繃鍘諱篃鏇懼惉闂昏繃涓浜涘唴騫曪紝涓嶈繃榪欐琚兼墠鐪熺殑涓嬪喅蹇冭鐪熷幓鐪嬭繖鏂歸潰鐨勪笢瑗褲傚師鏉$浣跨敤鐨勬槸浠g爜鐢熸垚鐨勬妧鏈細瀵逛簬姣忎釜delegate錛孋#閮戒細涓哄畠鐢熸垚涓涓淳鐢熶簬MulticaseDelegate鐨勫璞★紝鍏朵腑瀹炵幇浜嗕竴涓拰delegate絳懼悕鐩稿悓鐨勬柟娉曘傚悓鏃訛紝瀵筪elegate鐨勬搷浣滅+=鍜?=涔熶細琚紪璇戝櫒澶勭悊鎴愬MulticaseDelegate鏂規硶鐨勮皟鐢ㄣ?/p>
鐭ラ亾浜嗚繖涓鐐癸紝鎺ヤ笅鏉ュ氨闇瑕佺湅鐪婮ava涓湁娌℃湁綾諱技鐨勪唬鐮佺敓鎴愭妧鏈簡銆傛湁鎰忔濈殑鏄紝鏌ユ壘鐨勬椂鍊欏彂鐜版湁娑堟伅璇達紝Java 6.0錛圡utang錛変腑灝嗕細鎻愪緵鍔ㄦ佷唬鐮佺敓鎴愮殑鍔熻兘銆傝繖鐨勭‘寰堝惛寮曚漢錛屼笉榪嘕ava6榪樺湪Beta闃舵錛岀溂涓嬭繕鎸囨湜涓嶄笂銆傚叾浠栨瘮杈冨嚭鍚嶇殑鏂規硶灝辨槸Apache becl鍜孫bjectweb ASM浜嗐傝繖涓や釜搴撻兘姣旇緝搴曞眰錛屼笉榪囪繕鏈変竴涓紑婧愮殑欏圭洰鈥斺攃glib鈥斺斿畠鍦ㄥ唴閮ㄤ嬌鐢ㄤ簡asm錛屼笉榪囨彁渚涗簡杈冨鐨勫疄鐢ㄥ姛鑳姐傛嵁璇碒ibernate鍜孲pring閮界敤鍒頒簡榪欎釜涓滆タ銆傜爺絀惰繖涓簱鐨勬椂鍊欙紝鎴戜竴鐪肩湅鍒頒簡MethodDelegate綾燴斺斿緢鏄庢樉榪欏氨鏄垜瑕佹壘鐨勪笢瑗夸簡銆?/p>
MethodDelegate鐨勮璁℃濇兂寰堢被浼間簬C#鐨刣elegate鈥斺斿皢鎺ュ彛璋冪敤杞彂緇欑被鐨勪竴涓垚鍛樺嚱鏁般備笉榪囬槄璇繪枃妗g殑鏃跺欐垜鍙戠幇涓涓棶棰樸侻ethodDelegate瑕佹眰鍏舵墍瀹炵幇鐨勬帴鍙e繀欏誨彧鏈変竴涓叕鍏辨柟娉曪紝浣嗘槸SWT涓殑璁稿浜嬩歡鎺ュ彛閮芥湁涓嶆涓涓柟娉曪紱姣斿錛孲electionListener灝辨湁widgetSelected鍜宨dgetDefaultSelected涓や釜鏂規硶銆傚洜姝よ鍦⊿WT涓嬌鐢∕ethodDelegate錛岃繕
蹇呴』鍐嶅瀹炵幇鍙﹀涓灞傝漿鍙戙?/p>
浜嗚В鎵嬫錛屾帴涓嬫潵鐨勪簨鎯呭氨涓嶉毦浜嗐傛葷粨璧鋒潵錛岄渶瑕佺殑姝ラ澶ц嚧濡備笅錛?br />1銆佷負姣忕闇瑕佸疄鐜扮殑浜嬩歡澹版槑涓涓帴鍙c傝繖鏄疢ethodDelegate鐨勮姹傘?br />2銆佺敤涓涓被瀹炵幇SWT鐨勪簨浠舵帴鍙o紝騫跺皢鐗瑰畾鐨勬帴鍙h皟鐢ㄨ漿鍙戝埌絎竴姝ユ墍瀹炵幇
鐨勬帴鍙c?br />3銆佺敤MethodDelegate鎻愪緵鐨勬柟娉曪紝澹版槑浜嬩歡澶勭悊瀵硅薄錛圗vent Handler
Target錛岄氬父涓轟富紿椾綋鎴栦富閮ㄤ歡錛夎瀹炵幇涓婅堪鐨勪簨浠舵帴鍙c備笅闈㈠氨鏉ュ疄鐜頒竴涓嬨備負浜嗙畝鍗曡搗瑙侊紝灝嗛渶瑕佸疄鐜扮殑鎺ュ彛澹版槑涓轟簨浠惰漿鍙戠被鐨勫唴閮ㄦ帴鍙o紝浠ラ伩鍏嶇淮鎶ゅお澶氭帴鍙f枃浠訛紙鍥犱負璇ユ帴鍙e彧闇瑕佸0鏄庝竴涓柟娉曪紝鎵浠ヤ笉浼氭妸澶栭儴綾繪悶寰楀お榪囧鏉傘傦級渚嬪錛屽鐞嗛儴浠墮夋嫨浜嬩歡錛坵idgetSelected錛夌殑綾誨彲浠ュ涓嬪疄鐜幫細
package org.yuhao.swt.events;
import net.sf.cglib.reflect.MethodDelegate;
import org.eclipse.swt.events.*;
public class WidgetSelectedHandler implements SelectionListener
{
聽public WidgetSelectedHandler( Object target, String
methodName )
聽{
聽聽delegate = (IWidgetSelectedDelegate)
MethodDelegate.create( target,
聽聽聽聽methodName,
IWidgetSelectedDelegate.class );
聽}
聽public void widgetDefaultSelected( SelectionEvent e )
聽{
聽}
聽public void widgetSelected( SelectionEvent e )
聽{
聽聽delegate.invoke( e );
聽}
聽public void invoke( SelectionEvent e )
聽{
聽}
聽public interface IWidgetSelectedDelegate
聽{
聽聽void invoke( SelectionEvent e );
聽}
聽private IWidgetSelectedDelegate delegate;
}
榪欎釜鎺ュ彛铏界劧鍙湁澶栭儴綾葷敤鍒幫紝浣嗘槸蹇呴』澹版槑涓簆ublic鐨勶紝鍚﹀垯榪愯浼氬嚭閿欙紙鎴戞兂澶ф鏄洜涓轟唬鐮佺敓鎴愪互鍚庤繕鏄閮ㄧ被錛岄渶瑕佸叕寮璁塊棶鏉冮檺錛夈備負浜嗙畝鍖栬皟鐢紝鍐嶅0鏄庝竴涓鐞嗕簨浠剁殑杈呭姪綾籈ventHandler錛屼笓闂ㄧ鐞嗗皢鍚勭浜嬩歡杞彂鍒扮浉搴旂殑Handler鐨勫伐浣滐細
public class EventHandler
{
聽public EventHandler( Object target )
聽{
聽聽this.target = target;
聽}
聽public void handleSelected( Button btn, String methodName )
聽{
聽聽btn.addSelectionListener( new
WidgetSelectedHandler( target, methodName ) );
聽}
聽private Object target;
}
榪欐牱錛屽湪紿楀彛涓氨鍙互綆鍗曠殑濡備笅澶勭悊浜嬩歡錛?br />public MainShell extends Shell()
{
聽聽public MainShell( Display display )
聽{
聽聽......
聽聽handler = new EventHandler( this );
聽聽handler.handleSelected( btn, "btn_clicked" );
聽}
聽public void btn_clicked( SelectionEvent e )
聽{
聽聽...
聽}
}
榪欓噷榪橀渶瑕佹敞鎰忥細1銆佷換浣曚簨浠跺鐞嗘柟娉曞繀欏誨0鏄庝負public鐨勩傝繖鏍蜂技涔庢湁榪濋潰鍚戝璞$殑灝佽鍘熷垯錛屼笉榪囧疄闄呬笂騫朵笉浼氶犳垚浠涔堝ぇ闂銆?銆佷簨浠舵柟娉曠殑絳懼悕蹇呴』鍜屽搴旂殑浜嬩歡鏂規硶鐩稿悓銆備緥濡傦紝widgetSelected鏂規硶鏈変竴涓猄electionEvent鍙傛暟錛岄偅涔堝鐞嗚浜嬩歡鐨刡tn_clicked鏂規硶涔熷繀欏繪湁涓斿彧鏈夎繖涓涓弬鏁般傚鏋滃啓閿欎簡錛岄偅涔堣繍琛岀殑鏃跺欎細鎶涘嚭寮傚父錛岃鎵句笉鍒版寚瀹氱殑鏂規硶銆傝繖榪樻槸闇瑕佺▼搴忓憳鐨勭粏蹇冩潵淇濊瘉銆傝繕綆楀垢榪愮殑鏄嚭閿欑殑鎻愮ず闈炲父鏄庢樉錛屼笉蹇呮媴蹇冧嬌鐢ㄤ簡榪囧害澶嶆潅鐨勬妧鏈屾壘涓嶅埌鐪熸鐨勫嚭閿欑偣銆?br />