锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
]]>
08
騫?2鏈?鏃ワ紝Sun姝e紡鍙戝竷浜咼avaFX1.0銆侸avaFX鍦ㄦ紨榪涜繃紼嬩腑鍙戠敓浜嗗緢澶氱殑鍙樺寲錛屽洜姝わ紝鎴戜互鍓嶅啓鐨凧avaFX鐨勭涓涓?
HelloWorld鐨勪緥瀛愬凡緇忔棤娉曞湪姝e紡鐗堜笅榪愯錛屼簬鏄湪榪欓噷閲嶅啓閭d釜渚嬪瓙銆傝屾柊鐨凙PI鎴戜篃榪樻病鏈夊紑濮嬪涔狅紝鍙ソ澶х暐鍦版祻瑙堜簡涓閬岮PI灝辮崏鑽夊啓灝憋紝
鍥犳錛岃繖涓緥瀛愯櫧鐒跺湪1.0鐗堜笅姝g‘榪愯錛屽嵈鏈繀灝辨槸鏈閫傚悎鐨勫啓娉曪紝浠ュ悗濡傚彂鐜伴棶棰樺啀鏉pdate2鍚э紝鍛靛懙……
姝e紡鐗堜腑寰堝鍖呯殑鍛藉悕鏈変簡澶╃炕
鍦拌鐨勫彉鍖栵紝class鐨勪綅緗拰鍚嶇О寰堝涔熼潰鐩叏闈炪傛瘮濡侴UI榪欏潡灝辯粡鍘嗕簡鐢眏avafx.ui鍙樺寲鎴恓avafx.gui鍐嶅彉鍖栨垚
javafx.scene鍜宩avafx.application鍐嶈繘鍖栨垚javafx.scene鍜宩avafx.stage錛岃岃窡Swing鐩稿叧鐨勭粍
浠朵篃緇熺粺鍔犱笂浜哠wing鍓嶇紑銆傛湁鐨刢lass鎴戝凡緇忔壘涓嶅埌浜嗭紝姣斿浠ュ墠鐨刯avafx.ui.MessageDialog錛屾垜鍦?.0涓病鏈夋壘鍒板搴旂殑
class錛屽彧濂界洿鎺ュ彨鐢╦avax.swing.JOptionPane浜嗐傚ソ浜嗭紝搴熻瘽涓嶈浜嗭紝璐存柊浠g爜濡備笅錛?br />
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.paint.Color;
import javafx.ext.swing.SwingButton;
import javax.swing.JOptionPane;
/**
* @author stevech
*/
Stage {
title: "Application title"
width: 250
height: 80
scene: Scene {
fill: Color.ORANGE
content: SwingButton {
text: "Click"
action: function():Void {
JOptionPane.showMessageDialog(null, "Have Fun!\nThis is your first JavaFX app!")
}
translateX: 90 translateY: 10
}
}
visible: true
}
緇撴灉濡傚浘錛?br />
]]>
]]>
鍓嶄袱澶╅涗功搴楋紝鐪嬪埌涓鏈?font size="-1">綺鵑歂etBeans鈥斺擩ava妗岄潰銆乄eb銆佷紒涓氱駭紼嬪簭寮鍙?/font>銆?錛岄亗鍦ㄤ功搴楅噷绔欎簡涓涓灝忔椂錛堝ソ鍘氬晩錛佷功鍘氳劯鐨篃鍘氾級錛屽熀鏈妸榪欐湰涔︾湅浜嗕竴閬嶏紝鏁翠綋鎰熻澶辨湜錛屽唴瀹瑰畬鍏ㄩ厤涓嶄笂綺鵑歂etBeans榪欎釜鏍囬銆傚熀鏈笂灝辨槸鍦∟etBeans鐜閲屽啓涓浜涘緢綆鍗曠殑JavaSE鍜孞avaEE浠g爜錛岃屼笖浠g爜璐ㄩ噺涔熷緢涓嶉珮銆傚儚Web閮ㄥ垎錛屼負浜嗗浘綆鍗曪紝鍦↗SP欏甸潰涓啓浜嗗ぇ閲忕殑scriptlet錛屽緢涓嶆帹鑽愬紑鍙戜漢鍛樼湅榪欑浠g爜銆傝繖鏈功鍕夊媺寮哄己鍙互璧峰悕鍙?font size="-1">鍒濇秹NetBeans銆嬶紝鐪嬫潵瑕佹兂鏇村ソ鍦版帹浠婲etBeans錛岃繕闇瑕佹洿澶氱殑鎶鏈綔鑰呯殑鍔姏銆備粈涔堟椂鍊橬etBeans鐨勪功鑳借窡Delphi鐨勪功濯茬編浜嗭紝浼拌NetBeans鐨勫ぇ涓氬樊涓嶅灝卞畾浜嗗惂錛屽懙鍛?br>涓嶇鐢ㄤ粈涔圛DE錛屽叧閿槸鐪嬪紑鍙戜漢鍛樻湰浜哄璇█鍜屾鏋剁殑鍔熷姏錛岃繖閲屼篃鎺ㄤ粙涓ゆ湰涔︼紝閮芥槸鑰佷功浜嗭紝浣嗗唴瀹瑰熀鏈笉钀戒紞錛屾彁鍗囧姛鍔涙洿鏄笉閿欍?br>涓鏈槸:Swing錛孧atthew Robinson 鍜?Pavel Vorobiev鍚堝啓鐨勶紝瀛﹀+鎵嬩笂鐨勫緢鑰佷簡錛屼笂涓笘綰湯鐨勮嫳鏂囧師鐗堬紝浣嗘槸鐪熺殑闈炲父闈炲父緇忓吀錛屽浗鍐呭簲璇ユ湁鏇存柊鐨勪腑鏂囩増鐨勶紝鍋歋wing鐨勪竴瀹氳鐪嬶紝寰堜笉閿欍?br>涓
鏈叧浜嶫SP鍜孲ervlet鏂歸潰鐨勶紝瀛﹀+鏄粠TSS涓嬭澆鐨勫厤璐圭數(shù)瀛愮増錛孲ervlets and JavaServer Pages, The
J2EE technology Web Tier錛孞ayson Falkner 涓?Kevin
Jones鍚堣憲錛岋紙鍩轟簬J2EE4錛屾棤JSF鏂歸潰鍐呭錛夛紝鍥藉唴濂藉儚娌℃湁涓枃鐗堢殑銆傝繖涔熸槸涓鏈ソ涔︼紝Java Web鍏ラ棬涓庢彁鍗囧潎搴斿璇繪涔︺?br>榪欎袱鏈功鏈澶х殑鐗圭偣灝辨槸錛屽懙鍛碉紝鐢ㄤ警鎹風殑璇濊錛屽彨娣卞叆嫻呭嚭銆傚湪璁蹭竴涓妧鏈殑鍚屾椂錛屼篃璁叉紜殑緙栫爜鍜岃璁℃柟娉曪紝鏃㈣兘璁╀竴涓柊鎵嬩粠姝i棬鐧誨爞鍏ュ錛屼篃鑳借涓涓湁緇忛獙鐨勫紑鍙戜漢鍛樿幏寰楁彁鍗囷紝浠ユ澶у姏鎺ㄤ粙涔嬨?img src ="http://www.tkk7.com/stevech/aggbug/123268.html" width = "1" height = "1" />
]]>
Eclipse鐨勯樀钀ヤ竴鍚戝己澶э紝鏈榪戝張鍔犲叆浜嗕竴瀹墮噸閲忕駭鐨勫叕鍙革細Google錛岀浉褰箣涓嬶紝NetBeans鐨勯樀钀ユ樉寰楁湁鐐歸偅涔堚滃娍鍗曞姏钖勨濄?br />鎴戞湰浜哄垯鐢變簬瀵筍wing鐨勫枩鐖卞強瀵筍WT鐨勪笉鍠滅埍錛屼竴鐩達紙浠嶯B3.0浠ユ潵錛変嬌鐢∟etBeans銆?br />錛堜互鍓嶇殑NetBeans紜疄涓嶅濂界敤錛屽緩涓狿roject榪樺緱鍏坢ount涓涓嬶紝鍏稿瀷鐨刄nix鎬濈淮錛夊弻鏂硅繖鍑犲勾鐨勫彂灞曪紝浠庢灦鏋勫拰鍔熻兘涓婃潵璇達紝鐜板湪NetBeans鍜孍clipse宸茬粡鏄ぇ鍚屽皬寮傦紝娌℃湁璋佹瘮璋佺墰脳銆傚浜巇evelopers錛岀敤璋佸嚟鍠滃ソ銆?br />鍙?
瀵逛簬鎯抽氳繃榪欎袱涓鉤鍙版潵璧氶挶鐨勪紒涓氭潵璇達紝浜岃呯殑鍖哄埆鍙氨澶ぇ浜嗐傜湅鐪婨clipse鐨勯樀钀ワ紙鍙屾柟鐨勫闀垮氨涓嶆彁浜嗭級錛欱EA, Borland,
Intel, Sybase, Adobe, Oracle, Google,
etc鍏ㄦ槸浜汭T灞奛B鍝勫搫鐨勫ぇ鐗涳紱鍐嶇湅鐪婲etBeans鐨勯儴闃燂細涓闃熺殑鏃犲悕灝忓崚錛屽ぇ鍚嶉紟榧庣殑涔熸湁錛欰mazon錛氬崠涔︾殑錛沞Bay錛氬仛鐢熸剰鐨勶紱HP錛?
鍗朠C鐨勶紱榪樻湁鍗栨墜鏈虹殑錛屽仛寮婧愮殑錛屼笉涓鑰岃凍錛屾劅瑙夋湁鐐規(guī)鐡滆鏋d技鐨勩傛垜灝辯撼闂峰効浜嗭細鍚屾牱閮芥槸鍋欽ava IDE
鐨勶紝鍙楀埌鐨勫緟閬囧尯鍒拫灝辮繖涔堝ぇ鍛紒浣曞喌鍍廈orland榪欐牱鐨勬湰鏉Builder鍜孨etBeans灝卞緢鐩歌繎錛屼負浠涔堣繕寰楃粫涓集鍎垮幓鑸擲WT鐨勫眮鑲★紵
錛堟潕綞繕鍦ㄤ俊蹇冩弧婊$殑璇翠粈涔?span style="font-weight: bold;">Java闁嬬櫦鐜嬭?/span>錛屽弽姝f垜鏄笉淇?img alt="" src="http://blog.csdn.net/Editor/FCKeditor/editor/images/smiley/msn/thumbs_down.gif" />錛?br />浠?
鍎夸釜鎰熻鏈夌偣鎯蟲槑鐧戒簡錛欵clipse鏄惌涓熀鏈灦瀛愶紝鍓╀笅鐨勮繖浜涘叕鍙稿湪涓婇潰鍋氳嚜宸辯殑涓滀笢鐒跺悗灝卞彲浠ユ嬁鍘誨崠閽變簡錛屽儚MyEclipse銆丅orland閮?
鏄繖涔堜釜鎯蟲硶錛涜孨etBeans鍛紝Sun濂藉儚鏄妸瀹冨畾浣嶆垚閫佺粰Developers鐨勭ぜ鐗╋紙閭i噷闈㈣鐨勫綋鐒跺氨浼氭槸Sun鎵棰嗗鐨凧ava鎶鏈紝鑰屼笉浼?
鏄偅涓瑙庤匢BM鐨凧ava鎶鏈級錛孖DE free, Web pack free, mobility pack free,
Enterprise pack free,
絳夌瓑絳夌瓑閫氶歠ree錛屽厤璐瑰ぇ璧犻侊紝鍜變滑寮鍙戣呭綋鐒舵槸楂樺叴浜嗭紝鏃笉瑕侀挶錛屽張鏄渶鏂版妧鏈紝榪樻湁涓猄un鐩栫殑鈥滄緇熲濆ぇ绔犮傚彲瀵逛簬閭d簺鍏徃灝變笉涓鏍蜂簡錛岃佸瓙鍚?
鐨勫氨鏄繖紕楅キ錛屼綘鍏ㄩ佷漢浜嗘垜鍠濊タ鍖楅鍟婏紵榪樻椿涓嶆椿鍟婃垜錛熶綘浠ヤ負鎴戝儚JBoss閭f牱鍌伙紝涓嶅崠浜у搧鍗栨湇鍔★紵JBoss涓嶅氨鏄彂鐜拌繖紕楅キ涓嶅ソ鍚冩墠鎶?
Rickard
Oberg榪欎釜欏藉浐涓嶅寲鐨勫浼欑粰韙瑰嚭闂ㄧ殑鍚椼傛墍浠ヨ繖浜涘叕鍙告墠綰風悍瀵筃etBeans紱葷殑榪滆繙鐨勶紝鍍忚浜嗗浜蹭竴鍚戞墤鍚慐clipse鐨勬鎶眫~
涓嶇鎬庝箞璇達紝鎴戣繕鏄疭wing鐨勫潥瀹氭敮鎸佽咃紝鏀寔Sun錛屾敮鎸丯etBeans錛屾渶鍚庯紝鎰熻阿James Golsing錛屾劅璋roove Coverage錛堟垜鏄竟鍚珿od is A Girl涓杈圭爜瀛楀効鐨勶級錛屾劅璋綘鐨勭溂鐫涗笉杈炶緵鍔沖湴鐪嬪埌榪欓噷錛?img src ="http://www.tkk7.com/stevech/aggbug/88064.html" width = "1" height = "1" />
]]>
聽聽聽 鎴戜滑鐭ラ亾錛屼竴涓猧nt鐨勬渶澶у間負2^31-1鍗?147483647錛?0浣嶏級錛屽鏋滄垜浠妸榪?00涓猧nt鍊間覆璧鋒潵錛屾垜浠氨鑳借〃紺轟竴涓?000浣嶇殑鏁般傝繖閲屾垜浠氨鐢ㄨ繖縐嶆柟寮忔潵璁$畻256鐨勯樁涔橈紙256!錛夈?br />聽聽聽 鎴戜滑鍏堝垎閰?00涓猧nt鐨勬暟緇勶紝鐢變簬鏄痵tatic錛屾墍浠ユ瘡涓猧nt鐨勫垵濮嬪奸兘鏄?銆?br />聽聽聽 鐒跺悗姣忎釜int琛ㄧず6浣嶆暟錛屽嵆鏈澶у間負999999銆傚洜涓烘垜浠鍋氫箻娉曪紝濡傛灉緇檌nt鐨勪綅鏁拌繃澶э紝濡?浣嶏紝閭d箞999999999涔樹笂涓涓暟錛屽100錛屽畠鐨勫煎氨澶т簬浜唅nt鐨刴ax鍊鹼紝閫犳垚婧㈠嚭銆傛墍浠nt琛ㄧず鐨勪綅鏁伴渶瑕佹牴鎹渶瑕佷粩緇嗛夋嫨銆傦紙鐢╨ong鏉ヨ〃紺轟篃鍚屾牱闇瑕佷粩緇嗘潈琛′綅鏁幫級
聽聽聽 鍐嶅畾涔変竴涓猲um鏉ヨ〃紺烘垜浠崰鐢ㄧ殑鏁扮粍鐨刬nt涓暟
聽聽聽 鍦ㄤ箻娉曠殑鏃跺欙紝瀵規(guī)瘡涓崰鐢ㄧ殑int涓殑鏁伴兘瑕佷箻錛岀劧鍚庝竴涓竴涓湴鍒ゆ柇姣忎釜int涓殑鍊兼槸涓嶆槸瓚呭嚭浜?浣嶏細
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 if (data[j]) > 1000000)
聽聽聽 濡傛灉瓚呭嚭浜嗗垯闇瑕佽繘浣嶏細
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 data[k+1] += data[k]/1000000;
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 data[k] %= 1000000;
涓涓釜鍒ゆ柇錛屾渶鍚庯紝濡傛灉鏈楂樹綅錛堝嵆data[num]錛変腑鐨勬暟鍊間篃瓚呰繃浜?浣嶏紝鎴戜滑灝遍渶瑕佸崰鐢ㄤ竴涓柊鐨刬nt錛屽悓鏍峰湴榪涗綅錛屽綋鐒朵篃涓嶈蹇樹簡緇檔um鍔犱竴銆?br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 if (data[num] > 1000000) num++;
聽聽聽 鏈鍚庯紝灝嗘垜浠殑鏁扮粍欏哄簭杈撳嚭鍗沖彲銆傚湪杈撳嚭鐨勬椂鍊欓渶瑕佸皬蹇冪殑鏄紝濡傛灉int涓殑鍊煎皬浜?浣嶏紝濡?5錛屽埆蹇樹簡琛ヤ笂0錛屽嵆000025錛屽惁鍒欎綘浼氬緱鍒伴敊璇殑絳旀鐨勩?br />聽聽聽 瀹屾暣鐨勪唬鐮佸涓嬶細
/**
聽*
聽*聽@author聽Stevech
聽*/
public聽class聽BigNumbers聽{
聽聽聽聽static聽int[]聽data聽=聽new聽int[100];
聽聽聽聽
聽聽聽聽/**聽Creates聽a聽new聽instance聽of聽BigNumers聽*/
聽聽聽聽public聽static聽void聽main(String[]聽args)聽{
聽聽聽聽聽聽聽聽int聽num聽=聽0;聽聽聽聽//聽鍗犵敤鐨勪釜鏁?/span>
聽聽聽聽聽聽聽聽data[0]聽=聽1;聽聽聽聽//聽0鍜?鐨勯樁涔樻槸1
聽聽聽聽聽聽聽聽
聽聽聽聽聽聽聽聽for聽(int聽i聽=聽2;聽i聽<聽257;聽i++)聽{
聽聽聽聽聽聽聽聽聽聽聽聽for聽(int聽j聽=聽0;聽j聽<聽num聽+聽1;聽j++)聽{
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽data[j]聽*=聽i;聽聽聽聽聽聽聽聽//聽瀵規(guī)瘡涓猧nt涓殑鏁伴兘涔樹笂聽i
聽聽聽聽聽聽聽聽聽聽聽聽}
聽聽聽聽聽聽聽聽聽聽聽聽for聽(int聽j聽=聽0;聽j聽<聽num聽+聽1;聽j++)聽{
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽if聽(data[j]聽>聽1000000)聽{
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽for聽(int聽k聽=聽j;聽k聽<聽num聽+聽1;聽k++)聽{
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽if聽(data[num]聽>聽1000000)聽num++;
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽data[k+1]聽+=聽data[k]/1000000;聽聽聽聽//聽榪涗綅
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽data[k]聽%=聽1000000;聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽//聽榪涗綅鍚庣殑浣欐暟
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽}
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽}
聽聽聽聽聽聽聽聽聽聽聽聽}
聽聽聽聽聽聽聽聽}
聽聽聽聽聽聽聽聽System.out.println("鍗犵敤鐨刬nt鏁幫細"聽+聽(num+1)聽+聽"\n鍊鹼細");
聽聽聽聽聽聽聽聽System.out.print(data[num]);
聽聽聽聽聽聽聽聽for聽(int聽i聽=聽num-1;聽i聽>聽-1;聽i--)聽{
聽聽聽聽聽聽聽聽聽聽聽聽System.out.print(new聽java.text.DecimalFormat("000000").format(data[i]));
聽聽聽聽聽聽聽聽}
聽聽聽聽}
}
鍗犵敤鐨刬nt鏁幫細85
鍊鹼細
85781777534284265411908227168123262515778152027948561985965565037726945255314
75893774402913604514084503758853423365843061571968346936964753222892884974260256
79637332563368786442675207626794560187968867971521143307702077526646451464709187
32610083287632570281898077367178145417025052301860849531906813825748107025281755
94594769870346657127381392862052347568082188607012036110831520935019474371091017
26968262861606263662435022840944191408424615936000000000000000000000000000000000
000000000000000000000000000000
]]>
鍒╃敤閿洏鍜岀劍鐐逛簨浠?/span>
榪欐槸鏈鐩磋鐨勬柟寮忋傚埄鐢?/span> KeyListener鏉ラ夋嫨鍏佽鐨勫瓧絎︼紝涓旀坊鍔?/span>FocusListener錛屼嬌寰?/span>
鍐呭涓嶇鍚堣姹傛椂涓嶅厑璁哥劍鐐硅漿縐匯傝繖縐嶆柟寮忓緢綣佺悙錛?/span> Sun鐨勫緩璁槸涓嶆帹鑽愪嬌鐢ㄨ繖縐嶆柟寮忋?/span>
浣跨敤鑷畾涔夌殑 Document
鎴戜滑鐭ラ亾錛?/span> Swing緇勪歡鏄熀浜?/span>MVC瀹炵幇鐨勩?/span>JTextComponent鐨?/span>Model鏄竴涓彨鍋?/span>Document鐨?/span>Interface錛屾垜浠彲浠ラ氳繃闄愬埗Document鐨勫唴瀹規(guī)潵杈懼埌鏈夋晥鎬ч獙璇佺殑鐩殑銆?/span>javax.swing.text鍖呬腑鏈夊涓笉鍚岀殑Document鐨勫疄鐜幫紝JTextField浣跨敤鐨勬槸PlainDocument銆傚鏋滄垜浠笇鏈?/span>JTextField鍙帴鍙楁暟瀛楋紝鍙互瀹炵幇鎴戜滑鐗瑰畾鐨?/span>Document騫朵嬌涔嬫浛鎹㈤粯璁ょ殑Document錛?/span>
package sdn;
import javax.swing.text.*;
public class IntegerDocument extends PlainDocument {
int currentValue = 0;
public int getValue() {
return currentValue;
}
public void insertString(int offset, String string,
AttributeSet attributes) throws BadLocationException {
if (string == null) {
return;
} else {
String newValue;
int length = getLength();
if (length == 0) {
newValue = string;
} else {
String currentContent = getText(0, length);
StringBuffer currentBuffer =
new StringBuffer(currentContent);
currentBuffer.insert(offset, string);
newValue = currentBuffer.toString();
}
currentValue = checkInput(newValue, offset);
super.insertString(offset, string, attributes);
}
}
public void remove(int offset, int length)
throws BadLocationException {
int currentLength = getLength();
String currentContent = getText(0, currentLength);
String before = currentContent.substring(0, offset);
String after = currentContent.substring(length+offset,
currentLength);
String newValue = before + after;
currentValue = checkInput(newValue, offset);
super.remove(offset, length);
}
public int checkInput(String proposedValue, int offset)
throws BadLocationException {
if (proposedValue.length() > 0) {
try {
int newValue = Integer.parseInt(proposedValue);
return newValue;
} catch (NumberFormatException e) {
throw new BadLocationException(proposedValue, offset);
}
} else {
return 0;
}
}
}
鐒跺悗鐢?/span> IntegerDocument鍘繪浛鎹?/span>JTextField榛樿鐨?/span>Document錛?/span>
package sdn;
import javax.swing.*;
import javax.swing.text.*;
import java.awt.*;
import java.awt.event.*;
public class NumericInput {
public static void main(String args[]) {
Runnable runner = new Runnable() {
public void run() {
JFrame frame = new JFrame("Numeric Input");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new GridLayout(2, 2));
frame.add(new JLabel("Number"));
JTextField fieldOne = new JTextField();
Document doc= new IntegerDocument();
fieldOne.setDocument(doc);
frame.add(fieldOne);
frame.add(new JLabel("All"));
JTextField fieldTwo = new JTextField();
frame.add(fieldTwo);
frame.setSize(250, 90);
frame.setVisible(true);
}
};
EventQueue.invokeLater(runner);
}
}
浠g爜寰堢畝鍗曪紝涓鐩簡鐒躲傝繖閲岃鐐歸澶栬瘽錛?/span> Sun寤鴻鐨?/span>Swing Application鐨?/span>main鍑芥暟鍐欐硶濡備笂鎵紺猴細鍏堝緩涓涓?/span>Runnable錛岀劧鍚庢妸榪欎釜Runnable鏀懼埌event-dispatch thread涓幓鎵ц銆傚彟澶栵紝浠ュ墠鏈夌殑Developer錛堟瘮濡傛垜錛夊枩嬈㈢敤SwingUtilities.invokeLater(runner)鏉ュ皢涓涓?/span>thread鏀懼埌event-dispatch thread涓紝鐜板湪Sun涔熷緩璁敤EventQueue.invokeLater(runner)錛屽洜涓?/span>SwingUtilities鏂規(guī)硶鐗堟湰浠呬粎鏄EventQueue鏂規(guī)硶鐗堟湰鐨勪竴涓寘瑁呫?/span>
鐢?/span> InputVerifier鏉ュ疄鐜?/span>
鍦?/span> J2SE 1.3涓姞鍏ヤ簡涓涓悕涓?/span>InputVerifier鐨勬娊璞$被錛屽彲鐢ㄤ簬浠諱綍JComponent銆傚叾涓畾涔変簡boolean verifiy(JComponent input)鏂規(guī)硶銆傚鏋滅粍浠朵腑鐨勬枃鏈槸鏈夋晥鐨勶紝褰撶劍鐐硅漿縐繪椂錛堝鎸変笅Tab鎴?/span>Shift-Tab錛夛紝verify鏂規(guī)硶榪斿洖true錛涘惁鍒欒繑鍥?/span>false錛屼嬌寰楃劍鐐逛粛鍋滅暀鍦ㄥ綋鍓嶇粍浠朵笂銆傛垜浠粛浠ユ暟瀛椾負渚嬶細
package sdn;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class NumericVerifier{
public static void main(String args[]) {
Runnable runner = new Runnable() {
public void run() {
JFrame frame = new JFrame("Numeric Verifier");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel1 = new JPanel(new BorderLayout());
JLabel label1 = new JLabel("Numeric-only");
JTextField textField1 = new JTextField();
panel1.add(label1, BorderLayout.WEST);
panel1.add(textField1, BorderLayout.CENTER);
JPanel panel2 = new JPanel(new BorderLayout());
JLabel label2 = new JLabel("Anything");
JTextField textField2 = new JTextField();
panel2.add(label2, BorderLayout.WEST);
panel2.add(textField2, BorderLayout.CENTER);
JPanel panel3 = new JPanel(new BorderLayout());
JLabel label3 = new JLabel("Numeric-only");
JTextField textField3 = new JTextField();
panel3.add(label3, BorderLayout.WEST);
panel3.add(textField3, BorderLayout.CENTER);
InputVerifier verifier = new InputVerifier() {
public boolean verify(JComponent comp) {
boolean returnValue;
JTextField textField = (JTextField)comp;
try {
Integer.parseInt(textField.getText());
returnValue = true;
} catch (NumberFormatException e) {
Toolkit.getDefaultToolkit().beep();
returnValue = false;
}
return returnValue;
}
};
textField1.setInputVerifier(verifier);
textField3.setInputVerifier(verifier);
frame.add(panel1, BorderLayout.NORTH);
frame.add(panel2, BorderLayout.CENTER);
frame.add(panel3, BorderLayout.SOUTH);
frame.setSize(300, 95);
frame.setVisible(true);
}
};
EventQueue.invokeLater(runner);
}
}
榪欎釜渚嬪瓙鐨勬晥鏋滃拰涓婁竴涓槸涓嶅悓鐨勩傝嚜瀹氫箟 Document鐨?/span>App涓紝鐢ㄦ埛灝嗕細鍙戠幇浠諱綍闈炴暟瀛楃殑瀛楃閮戒笉浼氬湪JTextField涓嚭鐜幫紱鑰屽湪浣跨敤InputVerifier鐨?/span>App涓紝鐢ㄦ埛鍦ㄥ綍鍏ュ瓧絎︽椂涓嶄細鍙戠幇浠諱綍寮傚父錛屼絾鏄綋浠栫‘璁ゅ綍鍏ュ畬鎴愬悗錛屽鏋滃唴瀹逛笉絎﹀悎鏈夋晥鎬э紝鐒︾偣灝嗕笉浼氳漿縐伙紒榪欎袱縐嶆儏鍐甸兘鍙兘璁╀竴涓病鏈夌粡楠岀殑鐢ㄦ埛鑼劧錛屽叿浣撲嬌鐢ㄥ摢涓縐嶆槸涓涓浠佽鏅虹殑闂銆?/span>
浣跨敤 Document Filter
鍦?/span> J2SE 1.4涓紝鍙堝姞鍏ヤ簡涓涓柊鐨勭被錛?/span>DocumentFilter銆備綘鏃犻渶鍐嶅疄鐜頒竴涓柊鐨?/span>Document錛岃屾槸瀵圭幇鏈夌殑Document榪囨護涓閬嶃傚畠鐨勭粨鏋滀笌瀹炵幇鑷畾涔夌殑Document騫舵棤浜屾牱錛屼粎浠呮槸鎬濊礬涓嶅悓鑰屽凡銆?/span>
package snd;
import javax.swing.text.*;
import java.awt.Toolkit;
public class IntegerDocumentFilter extends DocumentFilter {
int currentValue = 0;
public IntegerDocumentFilter() {
}
public void insertString(DocumentFilter.FilterBypass fb,
int offset, String string, AttributeSet attr)
throws BadLocationException {
if (string == null) {
return;
} else {
replace(fb, offset, 0, string, attr);
}
}
public void remove(DocumentFilter.FilterBypass fb,
int offset, int length)
throws BadLocationException {
replace(fb, offset, length, "", null);
}
public void replace(DocumentFilter.FilterBypass fb,
int offset, int length, String text, AttributeSet attrs)
throws BadLocationException {
Document doc = fb.getDocument();
int currentLength = doc.getLength();
String currentContent = doc.getText(0, currentLength);
String before = currentContent.substring(0, offset);
String after = currentContent.substring(
length+offset, currentLength);
String newValue = before +
(text == null ? "" : text) + after;
currentValue = checkInput(newValue, offset);
fb.replace(offset, length, text, attrs);
}
private int checkInput(String proposedValue, int offset)
throws BadLocationException {
int newValue = 0;
if (proposedValue.length() > 0) {
try {
newValue = Integer.parseInt(proposedValue);
} catch (NumberFormatException e) {
throw new BadLocationException(
proposedValue, offset);
}
}
return newValue;
}
}
鍐嶅皢榪欎釜 Filter搴旂敤浜?/span>Document錛?/span>
package sdn;
import javax.swing.*;
import javax.swing.text.*;
import java.awt.*;
public class NumericInputFilter {
public static void main(String args[]) {
Runnable runner = new Runnable() {
public void run() {
JFrame frame = new JFrame("Numeric Input Filter");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new GridLayout(2, 2));
frame.add(new JLabel("Number"));
JTextField textFieldOne = new JTextField();
Document doc= textFieldOne.getDocument();
DocumentFilter filterOne = new IntegerDocumentFilter();
((AbstractDocument)doc).setDocumentFilter(filterOne);
textFieldOne.setDocument(doc);
frame.add(textFieldOne);
frame.add(new JLabel("All"));
JTextField textFieldTwo = new JTextField();
frame.add(textFieldTwo);
frame.setSize(250, 90);
frame.setVisible(true);
}
};
EventQueue.invokeLater(runner);
}
}
DocumentFilter鍙兘鐢ㄤ簬Swing涓殑涓?/span>text鏈夊叧鐨勭粍浠訛紙鑰?/span>InputVerifier鍙敤浜庝換浣曠粍浠訛級銆傞櫎浜嗚繖鍑犵鏂規(guī)硶錛屽湪瀵逛簬TextField鑰岃█錛屾垜浠繕鏈?/span>JFormattedTextField錛屽緢澶氭椂鍊欑敤JFormattedTextField灝嗘槸闈炲父瀹規(guī)槗鍜岀畝鍗曠殑鏂瑰紡銆?/span>
娉細榪欑瘒鏂囩珷鍩烘湰鏍規(guī)嵁SDN鐨凜ore Java Tech Tips鎰忚瘧鑰屾潵錛屼唬鐮佸熀鏈窡鍏朵竴鑷達紝鍙﹀榪樺弬鑰冧簡M. Robinson & P. Vorobiev鐨凷wing, Chapter 11
int
s are equal. But this time the int
s
point to different objects. What you have discovered is that for small
integral values, the objects are cached in a pool much like Strings.
When i
and j
are 2, a single object is referenced from two different locations. When i
and j
are 2000, two separate objects are referenced. Autoboxing is guaranteed
to return the same object for integral values in the range [-128, 127],
but an implementation may, at its discretion, cache values outside of
that range. It would be bad style to rely on this caching in your code.