From 33073508c8a1fcb5c85ff408a4014693b8675386 Mon Sep 17 00:00:00 2001 From: jj <1585739602@qq.com> Date: Mon, 9 May 2022 20:12:55 +0800 Subject: [PATCH 01/20] commit_first --- .classpath | 2 +- .settings/org.eclipse.jdt.core.prefs | 6 +++--- src/java2022spring/Test.java | 1 + 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/.classpath b/.classpath index ac9ce57..c0faa25 100644 --- a/.classpath +++ b/.classpath @@ -1,6 +1,6 @@ - + diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs index dbc27c5..ae7f7b3 100644 --- a/.settings/org.eclipse.jdt.core.prefs +++ b/.settings/org.eclipse.jdt.core.prefs @@ -1,8 +1,8 @@ eclipse.preferences.version=1 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=17 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=16 org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=17 +org.eclipse.jdt.core.compiler.compliance=16 org.eclipse.jdt.core.compiler.debug.lineNumber=generate org.eclipse.jdt.core.compiler.debug.localVariable=generate org.eclipse.jdt.core.compiler.debug.sourceFile=generate @@ -11,4 +11,4 @@ org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled org.eclipse.jdt.core.compiler.problem.enumIdentifier=error org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning org.eclipse.jdt.core.compiler.release=enabled -org.eclipse.jdt.core.compiler.source=17 +org.eclipse.jdt.core.compiler.source=16 diff --git a/src/java2022spring/Test.java b/src/java2022spring/Test.java index 24deb29..b027ca4 100644 --- a/src/java2022spring/Test.java +++ b/src/java2022spring/Test.java @@ -3,5 +3,6 @@ package java2022spring; public class Test { public static void main(String[] args) { System.out.println("Hello world!"); + System.out.println("Hello ljh"); } } -- Gitee From 8d4b944f4b0e8d7c096712cc7ef8b38a217ad8c8 Mon Sep 17 00:00:00 2001 From: ljh <1585739602@qq.com> Date: Mon, 9 May 2022 20:21:35 +0800 Subject: [PATCH 02/20] commit_second --- src/java2022spring/Test.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/java2022spring/Test.java b/src/java2022spring/Test.java index b027ca4..cf9c298 100644 --- a/src/java2022spring/Test.java +++ b/src/java2022spring/Test.java @@ -4,5 +4,6 @@ public class Test { public static void main(String[] args) { System.out.println("Hello world!"); System.out.println("Hello ljh"); + System.out.println("Hello teacher,my name is lijinhao."); } } -- Gitee From 4bfedfdb37cdbeaf63a3d7ebba2b5822515013c4 Mon Sep 17 00:00:00 2001 From: ljh <1585739602@qq.com> Date: Wed, 11 May 2022 09:31:38 +0800 Subject: [PATCH 03/20] commit_test --- src/java2022spring/Test.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/java2022spring/Test.java b/src/java2022spring/Test.java index cf9c298..f00a68f 100644 --- a/src/java2022spring/Test.java +++ b/src/java2022spring/Test.java @@ -2,7 +2,7 @@ package java2022spring; public class Test { public static void main(String[] args) { - System.out.println("Hello world!"); + System.out.println("Hello world"); System.out.println("Hello ljh"); System.out.println("Hello teacher,my name is lijinhao."); } -- Gitee From 383c597cc9e177e47368bd60a0f6292272789c0e Mon Sep 17 00:00:00 2001 From: ljh <1585739602@qq.com> Date: Fri, 13 May 2022 20:45:41 +0800 Subject: [PATCH 04/20] =?UTF-8?q?=E7=AC=AC=E4=B8=80=E6=AC=A1=E6=8F=90?= =?UTF-8?q?=E4=BA=A4=EF=BC=8C=E6=A8=A1=E4=BB=BFNotepad3=EF=BC=8C=E5=88=9D?= =?UTF-8?q?=E6=AD=A5=E5=AE=9E=E7=8E=B0=E4=BA=86=E7=95=8C=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- img/copy.jpg | Bin 0 -> 22252 bytes img/cut.jpg | Bin 0 -> 27406 bytes img/exit.jpg | Bin 0 -> 23422 bytes img/find.jpg | Bin 0 -> 25901 bytes img/new.jpg | Bin 0 -> 9490 bytes img/notepad.jpg | Bin 0 -> 33164 bytes img/open.jpg | Bin 0 -> 7660 bytes img/paste.jpg | Bin 0 -> 19516 bytes img/redo.jpg | Bin 0 -> 21284 bytes img/replace.jpg | Bin 0 -> 17270 bytes img/save.jpg | Bin 0 -> 18322 bytes img/undo.jpg | Bin 0 -> 21346 bytes src/myNotepad/window.java | 282 ++++++++++++++++++++++++++++++++++++++ 13 files changed, 282 insertions(+) create mode 100644 img/copy.jpg create mode 100644 img/cut.jpg create mode 100644 img/exit.jpg create mode 100644 img/find.jpg create mode 100644 img/new.jpg create mode 100644 img/notepad.jpg create mode 100644 img/open.jpg create mode 100644 img/paste.jpg create mode 100644 img/redo.jpg create mode 100644 img/replace.jpg create mode 100644 img/save.jpg create mode 100644 img/undo.jpg create mode 100644 src/myNotepad/window.java diff --git a/img/copy.jpg b/img/copy.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5c1a867e09777d327b8c57da0f56ae47dab84be6 GIT binary patch literal 22252 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 literal 0 HcmV?d00001 diff --git a/img/cut.jpg b/img/cut.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a40f63228f86cb882775ac12bd8e307d2ccab87b GIT binary patch literal 27406 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 literal 0 HcmV?d00001 diff --git a/img/exit.jpg b/img/exit.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e8a6894660d3179fc88adaa30ea7f2b5a4422def GIT binary patch literal 23422 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 nH*=y#zX3bie%vyVYbblH+rlqc_4v>)n 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 literal 0 HcmV?d00001 diff --git a/img/notepad.jpg b/img/notepad.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3fdfc615aa9057174dc0001440baaf59456a41ad GIT binary patch literal 33164 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 aFw(Xn4ES;fG5!1(z~901{vQZ`=l&n;p7I(1 literal 0 HcmV?d00001 diff --git a/img/open.jpg b/img/open.jpg new file mode 100644 index 0000000000000000000000000000000000000000..de83673d1cfdc19ad08db5ab3d2a7972c15b07d7 GIT binary patch literal 7660 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 G*?$2!0i-to literal 0 HcmV?d00001 diff --git a/img/paste.jpg b/img/paste.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0743527eb4e332b76adb0dcad4ffdab4c089f055 GIT binary patch literal 19516 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 I!~D1Z5Bvq|kN^Mx literal 0 HcmV?d00001 diff --git a/img/redo.jpg b/img/redo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c2a89be7b7795aa49f84b4a4af0dc9dd4cfb1760 GIT binary patch literal 21284 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 literal 0 HcmV?d00001 diff --git a/img/replace.jpg b/img/replace.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f171f15c902dabb4386d9b603408d143cbff09d3 GIT binary patch literal 17270 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 literal 0 HcmV?d00001 diff --git a/img/save.jpg b/img/save.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f0c4ff56dfdfde8e5af11fdd74f98ca669729c16 GIT binary patch literal 18322 zcmeHu2|QHo-}f0ygD@#7>)b_AlADwz8ZFiqX+e~!s7SJuCE|!m_hbnnN+U~@n1oc8 zA!SO*nmxP7I%6H?%$fI^y6^j6-Tu$#|19tGKJW9nhr^s}=3M9c?cd+;`W;RarxRLa zYG`5zVK5k|1pGjpR%koKgTZire}D1v^KxGc`1pAFu?w(R?jaz!P*6ZXNC1l!5)l$w zC=6a$K~bEDuqgLEcM|U9+^fK^umDzo`;C9!i&FxL31B)goxGTp5RVv!R}8~>1>qqG z!w*)=UGVQO3=c0K{{pZip@rZJd5ggEd3kxjV)^;_z_uld)U}$7)V!Hpp zK?_T(L)LcoCr+Mna6EnPyoaZk_XVGz%U7-jU;B*|8Fe!{CiYfbd{S~s>ix9z2M?d* z$J~~zRKFx3zAfTjcB!EJhJAF2 zL`5=jaA<51*z#(_dQ zWD2EOdfo@~#$>$Tm7!uaAHAeAZT9W-W{f;@_o3@4-(}~*j$=5qoScIV@n7v7e=^*Z zo^buh&HY!O$ENIkFnommeB@3eV}#{_c96xWo%hI6Q>s!IjT^F5vsTC5Hmf`M)M|hp z6@7L23uwWD(KJat2j02FD0JZ$mTa?W&0EG$>62XhtjXv&o3>+aBs?n0!wwVRK#`0t z)k+TZk{VXD{mg!m)ID8yai*72Dy9>0!>7=d72chNE?qBdtJ?M4XWe%jtfrJP@ouk@bHN^phYzp%l zc3O)AB{8}P++~ITbWROBGU)=A=Jdm2{$ASOTtoiTx^{yDm6i~)OY!5jx{9+@rX{1Y zH~^`}POESrG02~WpFD!B;XvUW=!%I82jZV#hmVdXTlsJC-m>X9q<%zqEspvwKyQLb zBiu&E`uC8WpFGeD^VYzy>o3Z)6LsZT+nD?GoJ#$bt91{i7^~-7?;dP>b*@Umov=vx zp-4QsmIEE7FqM|QA~F^8%QH8ZlSMt!>PA<@iJ%DzaXAe~u`0q}YMuyUs(y(eHZ2=I z!rJTYJ6+3;*Hvb0E?b-%Z$=unn37k%`t$~4-R?1&+fj`HK6|kb%nih$c@E5MG6%xi zJLOAhB8%~sSC_u>i6v>=Qnd9ye<*)sZZW|cwfO9!5hp#SMz{j+$J0H>dr(2V8waxU zjN?G}Hp1)d8O&;4hol5y6<3z|q1#zd;({7OH3LZ8e4bhWJ?Y9K_7CU&bkrzBW9=|Ho5iv@Q_`1sI95Gw{5Z&d*tnKRD~A3y%q*X@t(&*Hy^keU;Qf_XaamPXhA4Q!@{9_N6iW)~wmj zEWU}EjRHJ!3uo3l)7YUcMD+4Ugd#@{g%1$uUW!Q4rXI9>M3n<=JB?c2PV3PZ$%HWq z?%s8#hb%NhDJz7t3ZiMZp7VKOYo93Fl#s`@9pR~2EE-}Bp;fwq9Ek4?JE66-W%F)2 zq3hxkleE?x-Mey^;(q(hL{a`hW;oN6Fx2MUCHO={p_S!duT zV{+qOP9@?*IZ&`2`hhsP4V8eqHUsT^Rl|WqY3w`Hfh!2mtCyY~9OyTS>x5-P_(nem z-ZBo<)x?2vV%dwRSBT6#tsID<0heWSpi`=ID_|iiJt3b1bvw1`ew<3KBw9ms4)oW> z;OWC~^E>n!@g)UO1j}K@&)~r9;3fgO1XMPhr483CWFF)|mq(}^Xo(TB89(g~R=td# z!GQ!@VRUs-8JHa0BN2!DD+$$b=Pj_t7((yQGz6{f$%Np|9Ek3X9d4vgO#9?BR~Pfr z30DxQ7eS|CN2x6dvWaBJ>t{y-PDv6H{8xUaULM1X|$Z^x*>Zp2IBJ{ z#C#(C6bBlvp^r@mJ!ZDF>vHEl#*S}s$U__JdR~n4N^0`AiEg+=PW4}TDV{yZfr8eq zau`PSFwMD9%+Z^Bu|tz&`mT=Vk7mdX>J`O&y=L~3iYNki1Q-o9vC>GInv^g4 za(E!>3U&fKa2ZhsqITzsIvJIXX6bOC8bPKd;C~;N|F&Jvi(u3L_t!icTLxUMI?%QA z^sA3+5E14P@$1K257w1E9elH6cc5syz!W9X3($55RgH)(ohzMu{ERRwn9j@G&*+Uv zBTX6X2-C~Y3Ak2p(CAhZ>%_%PrAzLM`kqsYB`7QZXz&t3=yYApMyp3 zw)TkafoH|0s#w^=fF1V}ab0FK#VzU|sY9d3Kp@StYoLWud)>kLILu!DFs)2_khxx*`pt{)0bbm#0r$;|&lBFDpS`#{Tp@p! zFnqR_15K``^j#<(>mh!`A+kW6N}(WDWETJdRmW4KKeMQz(5AdX;GgAVVu3>4fCpYb zif^DRB4O4cw2Ab^|K(AFu6YmL%ExKL0Imr zLge0}$(^dK7Rtm`Dld7=axDDkp}jowQN|q`7@A2&g);!Zh~e-NMGmw*hRWYVX%A9qDC{d z;|M^GW^ifh?r^5Um3R(R-}MNG_^gH4T7RTR-~UfF>z>=k6`B(7gyQ_BM16>7ZjM6D zrQNt71c(NJ5ar4lSPF9f(WDM-%fAwgi>DiG}H55yUvXuyFUd*q`e>zb(a zM`M2#;9dY{enKF6N{N$+xKc7xFN$qcLY&DX_KWyq3GI{){Le#)eBTrF-Fr;UU#!W0 zA&ppsr=K7qK8Ww!7s8xOE{4_CaghVv{Y;V`BTux|=<|!4|9G7AZtD3{Iu;2hm>uX2 zzjJ75BVlgMSNB*`6#|6Cx&`+dKJsZ|Gy;vyXZxE0jg`tCz)XW+!oag$QXf#68u_TX z3W#xbcXN<#N?#c7Z*}Z0V*LyvWl=!wjNAm``TnrSFk>K{ce49uwc(ye6Rv+TF(tnS z%z00qUo2=k+&OACyW>0Xr1=SPz~ucX9s7p-ON3r`V3?}3xCH3wp6gsabzzI=B`ccii+so6uL*bJWKvLV0AT^#Ic+wD$H46$;X50d zG91W)M_gGNAXqjj&Pu!ZUProz;s6!B*_{$L%mb8uZizuuuBxV zMmNUPNI!)Nt~dz~y8eF^x%S)NFnq4jU*Ta%%c{$t_yU~L?fS6fi9{W8Pl(?Uqp3vx z#K~j;?W>I8v2G3&y5fX9+nzAPfXjh7Qs+0vEk~IPuUgFJ*@ob}o#@(OyP;J-ySv}d zMZ>5*gw6^obBZ}LRSQpQJJD@**aKY1O`F5ha>i27(C^U6=GMMQxfFamh0<_4kJ_I? zn3*D!2gn)-Tn@9vv*xHhd&W6XYcPsZxY=v6W0l>ccCzE-KLX=V!UsXoUlRlmJU}sz zJ*rUBX$TcZJh2u1D~Ix#c(&yCLm& zg~$eol`krXICm%S5(wr7`uMbYvu7^!G(CW-rb7Mz?3K2W$FH@9v!rvWY{86KTbBZ6 zq$ zBF5^}b)hMxD?2rt@9mR1v*|#=mbRb(Zwes2vy0N=vY#Cd-bGWz@-juohjunhb-8r4 zZho_%S)~{-u`t58_ty~hpjKVWartxSQ?1sVY-@feXTwOu)rwf6q9yDnpX=?t3r}=5 ztvDklBe(d8S{m;!F55nxt0z}H%tvJHSSO9ofrPX13azg61;9Jfl*-S3R2rFJuJcc&)Kx)}~a>|cmXo&4$d#94CT`U@kSl|VB? zK|K{D`K=q!;3{E|*-L^PlkpJg_@MMjAD^-v6{WCq)PTCqTs309jRy>ndhm$QIYe$< z`C(i;g+aaSvUtx!t-t#szo8 z_VA`J>;2!C+9}-KBfnN1z`~JHK&v?Kv)@6{f3eFx^@Gb+T%uZUIYj_@Q8Zv_sr)dg z2Dmm5CY1mjYM&1{{Lg?x$&7`g4)<~M68^rIJ7 zKx%}OjyEpHY`(?g695zVj+1gcoceYRu^VW+ye5Gj2IS{Kn@Bf=Ng-4JaKH0$_m8nl zl@iBmOFlWXyA9KHpL)}(z516=YGBq!AKR4dA+w3`R-^W@Rq~GYwb{B#=I<7}LSymh zOSm(L@MJ+MO9BW|O&8lm6|*UNT9m$3@!CcuZJvgmq+?lGd1_4 zA{{Ow28oD2b0j%`I`U0^F^-nxAEo!AQd-p5oAk!V~>`=iqCkddq zX*Be&);8w}82^1)u@~Zy6riB|>|E94!|}3rb`H)(CcN_1{rUMmQQ}v4MK8=%W4nwH z8IYJSn4ooUpj`A}iX?4!IsavPY$LsWDPVOdnsx+$cF@K~ZUFjysqys;@P4&}!nJdi8(gYzJOr_56 za?Af>S9%oqY13waclsWY8-R`i8V^&=iS+;^NbLhs;0w?Bvly3%tMmDxuysGUW5)li zTLVCB=g`f}($0=6ONkB)m+QKkUB3RX@58~zhthZz7Z@I9eBi&3*^h|FPJ89V8=qiy z(ev!_UUIAQJmd$Z0`xLGgxbid-d>1q^0X%?I}g!84MRv7M%RWjFPs`4lLXtJ-^MnB zv4Ab0o*eY73OTL*eNlfD-N*)rzqF>~Y1&JCD3HWX$y~w$WG`KjH1$^3JZ)FJe^kb6 z57#%3Uf(_r98T|D<=Myb3%{Z+P#@|`g&TVbT-5bc7o*_HY&3~IvP`RJX3vRlbddljeSW+_L&a_!#kk(rMMe*7%mKIhw7a5M7 z2HXt3?f(IU^Np=tMEumRpa{h{fEg9H3pO(NiWBoeEk9#_88yGZBz$@H z5!D`}ml+L~V#9JuIic6(0v6m@LOu;mRje(JNN;g^Vei$j%p$fyT{yM!QIf-9U!BOb zi40yR8SL9~S3R(`odC8Z@^+VtK=L9llVVK7jA9jURBXpC7P})>E=bcONX5sgkMfQu z;>vJLEf-Xz)kWOesRO@-&q3Yhefau&J$M1DR-SR_+^UhACLc+oUcdQF$%?>)NF!D` zZ??SF5V8Hb(PR0uEj4elo*hrUrd@uaGhplVMkc6*V@2T77l5P)qpXYGOu@v|LXz}e z1~F*(#sYWk$kCc*AwBDAD7MD3>AbUSdGUkSZ%GMC9y)Z$#DY&OP)mM6Mnup*w_NBX z>2B@P7=wcr&aae86eC@A_VU=+To`?5b2^8=ZR^YaFI9b&{wT0pJlzG4tf=;edm3q# zvaeYcvF(fKp~HB_u&c23m2Nz-ND8o3_s#i;L^P zKEl-w4n#`Coq0r+26`Nx1vlyRgEHsF3rpbA-GoyI3FC)R5K+4ffCj#{umou1J~`(d z6K`$huX#}=-l8sRn_==YLSsA3@=RdIe2;>+GGbqGAReaWA)>^f`dhn)gAD7oB(-g!+1FOtWPj1eKkmvGvZgl6m*># zrG3WJBU-X*h9WyHQC%F_nKOodFRHO71}j_z z`|p)bZ@Kv#&;X@n4K-|$s-bKYF`aJQlU+B`Tkzufvztb;kJJL~qnqxmP3MdBIZnmE zomm9BM|)8>e$nZ69(EjML3r1#ch-l!yN%x#)msT~u-?&DCaJfIpgpK|5KZ9Gu1|qm{TM6tkS@u`*+?ylka;!E{ahR7%--kIG#OHg3V8bJm97N zTHXacUZm9@3y*alae6Ivvo|+ZDxs&%m^MgjYg|3v&$Jv*e_JUI6%<`rp$!V75d!8z zVfr6P>)EA>qGxuxs7Zx<_kFhvdQoi9Xxgl=Pb`mrvKMi;s zn0V2JeHAftN=G!Aq1~#u6!)vo>e}gTj*X;5=R+!=Rit?gagrs=Y1Sx-+DXFGUE#|h zCroWQLcUaZ!sR|wvuD?eNWD#hLQUSG^7_NmXE~6&zUGE)hpx34YaPXo-;Un+oX(=P zRF#=6ceL&g_Sjju%%*0vcDfv`Jty3dv!>z&^$fiKPBnJMLncn^Q-SQBmqj_%6I->l zQ97S5i8+G`fPyl=tQm8S*RWb5^TYV(Pl#K}v)YT6LeTZ;Hzjh%6In_2uWo&bY@$3~ z39EUX7kR_`crp>oEyokyU#~Qre(C&7D`vyZH?uZDH+D> zMcHdHCo;a6*TF^hmG4-gO_#L2&^YE@yY=c{U-|Wix*PWyx+~A3@vE;IT3GO#$b_8l zrWP5kHc37k`O<5Je4yIIdLQ91ZOTiq38-a>iZq13c0Wy)+rsZ~Rrzz^?w#cz{XJ6o zi_BZU6U*^xhd&#~t_oHTiic2tHv=nQ6Z!CS@~Z*Fk_k(uKkPkP{nrgpiH(^VX3rkx z@JlL)CZuDgJ#EjcYvZnz@cSdgT#FS13o6Zu&0WqCmGZAQ58|_a$>oc ze=<{R|CBZp&Mz+?UTClx6#*V2$jgqN@HB{}f6=F=ciCc^+`TSUtnD`YUuSj>yiCvR-Lm{Nh!BLbbTQxhZgxS~lc6r;Ys7Pa(s74O-u{E(fp%2d6bFvM# zR>DYllB_`yI%FK{sl{7gLzD;Hbs}^ogEWV`wRkMkx7<^m2D1LAximxiBhgDiL}Nmu zdQ@PxEPIJfsj{gkt9U)I>!EPM5x=hi61oYaka`zWHCt%Rw27u)84 z@~p{Oll!v)luyKpc(&v7MC^uh)qADy*0(6}>^Mr$@w%nQfz}3VC3`@-KjYwvzzSdg zXi-p=;46q_QB$S4e+*uP)aHFAgbbWLeuF0~tWXEwfc_gLb|e({=+tI)#L$lu}z$M&9$2Np56QW#~-S;$lE5L zY3tHY#L+sKO2M>QP#b_-gSuy431+QIK+L-<4ab+>I47HS_pOth-(tQ{quRn%C0Jx) zpY#_g6Un%^RPB?Bk*62CJN(&y_wyD(s(F;jw!03z(>bW{OJ<+jJ^y;Vc(F{SLS-5= zs_bpXwiI-<-RT14s5W@8q^Fje^s+$mS?dS4FC)ZvV~CWPJlH_u-{)bmHphGWJ|ld) zWEeGFQ~L}D@{NZ~xiD6|D?KTIH@_j~K;;|1doLpHx(Yy)>YmgUU-rq}{N@N20tiE; z-`JXY(U&QmLX+)}X$dDGD^AGimR#_CXCQ0k;mv&0YX|l%2op_ayy|bI%PWje9J{(t z2V|#Xrmlx~NgRwhaptPz@-rul(J@(NdOj+;l51#x;`uXAzsO%~~H$ z$;7FisXp~t)>e01TT*usuD>_L+(PlG!=dQtqPa z$@z8fL(Rn|C6G^~o4%lvL*t$dsoap>wGTrgxq~3r;6UKMK5*x!H;CraD8@uj%vI`{ z@y5OM;LBrmuKDtxcNRQ*GkdG2FN85+Kgp8_zI_3FyT0ap<-(qRnlpb&ah%1(%e#x7 zhdXW4$?R)+zWn51L{FGtX*cz}O3#^5mqLB$yin2A&0-@oQwWYN65n95x+Yp7JlaG- zRmQDuJT*)uIN4)tpHY2X`k!K_^zTG*+RQPJO#hE~VSicLs#l&{WazBHy47Q!cB;I; ztZY}mR;(%$HpoMY;nMaUOKBcO|EeP=Bo;?_z-+Y5!$l z-ZFrs&%XDWqFyWBf?#Vbj_letgZ@gt5C1quus>c}~2^XaGYtGX-#6<};{$Rt+rh8inTxHhzQ=>bLetgT9Bd~%}CN{c+8S;9zH+aBV!kG;I?$#RBD)B+U))TOnSP94L#wH=6z1mlBS4Iq zifob;JP}Dv_eMwH^*{t(R3z069^PBWf$jjsvjrQLmxs1b-P5V&HM3UIbC|z0mU0Nx zbQ{xuFEjm7Ap80Mr3Mlfv;hF^{8?AfBXDPp>a1xC+?1Nmfix(CYyaAq7d9&K;>y8T zl>(8V(02oVMMZFC>U7t1znR9k1n2PViPM@XRdIfNO%*>E>|=v zf6N;GXlPq#q8{V$$PobSx3d8%b0&zld0(gD1`QAc9^L3j;NODC^#DnD8U-tCL%R+aNED7(9`x`$qbsH8i^U$$6!spn=tn9*Vm zNZikkg$MfJQy~A+k^+C_5^+9Bh09R6G!{^+nhNfHnZz$-#3!8TLmmbhj*&78l;gW# zFvB1;^H8}I?iz%jjIm`X!`vuz1&sp@OhA!?AE583lkU_U4ume7`@cT*#R)C+<^}R_ zBiOzx12vfw9dp{mX6}j>vO!b{2gKsOBUW{?3f0q>o4jzQc8mj^EL`$0Q=H`G`C6ir zN}nP$d!b>LTy}yiU>DeRu7~Hl@m_3^x$VMv?rwzWnN0)RN{(iefpDpH1m@INQT>mZ z+j4vcBup3J3X3T86`L^omRM~$&!S;%D*b#u0ONeX<V928Vp!) zSjbsx4QQk)zOue5?Xwc*p}J!$KmQi;Om)iFNfR-RJh%5O913R*>>CEx1&A$h^c31w ze2aUDv`szSaRAbKz3I-fM*K|mw-u~hZ?L}9*s=}`B!9b$Sh>h5E!8Z-*u9SVZ7oq9@}&~Op#m85m(=i%!uJHrvlLV&&k zBbhnqtLs#@tOUF(+q6BistEGdL^exLyMW^R26`H>(@kXLpe|gxfp9W+h;G?s1Gn)2 z&_km5w0E?-e7NV+!@Ga zC}{t_$Jz+us06qDJ5bsTU0c-X3tyn>Xy(t{o=C)jZGm71|4Jj&;VVM{cMia1AYz`R z%&nw?zVxjCe!RAPG3GL+*>55CNQW!G&AAZF2_8@g9&Q8=C|Gt8Q2}QH z^Wn^q5%y=hWa z$Dh0h0O{9BRluZ#t`>X_ku65N0y9?tl+vB?$%{)y@>hx=`cpvSNwl(fzd9nuJYFVi zSr#*l?G{y@?FP_^;=hndn1@p1y{!6{ z^RQ0<;V|6!VGp4*b<5frxC89ZzcD6(RKlgbgz-oiNV+KsSVr8o{R@WSuFwq~<$ET9%XRsqM zy=rpxt|I`vl`Avp6*bY|X~v!C$|Y!GlAusNE|FO&Mqyj#~s?PXz!_9DcP8&bDOB;J=%E z7Tn7MYD?W1<7?b=LPamIvrs9tm6&f7jF{8&%dLr_x`b0*JDt|3t}CqHack!ad*zi6 z-tfsBr*7nh97kLadUwtw3iKYy+?{x5o_6!^n$`Z%*6>~1z<SkQmThl+2;JC+8UT4az3tf;aGFobOn>rxs!G1 zOfNm3NY`-VpV1W2y7@=}>mI|8nmoyPrB0gfI1ur|t5tx4&lp%pi`zt`GNJ@ z6LIZh*E$xS$A#SGZ_wS)ov^y@FdZ#&REbHoJGVSi`HlUytPtF}gyuo%G*i?CYzSt- zbf?BwF3kn6tQ$j%7kruUp6GfK8f^cA) zH>!a_&doZ1F?^}aS_Y6A4@#p>Zo7!*K>n?WBMw=#WLl3f@yCDzFY`;YVFmh{+EoH) zkFgh#xf25rBt`gn077*<&7V-SU6`);VNgigp;*d+W=5#x;Xe<6WhdM`Lm9R~Ww0zc zfE)$sFq`GVNdD;@?Bb`LkXB|b1TQ~o+CL~ztz&uxG*}lF( zCAV^Y#e{kNdb0hd>Boh2rtPF_3)QB1sE==(F@H%Lh8^9*s1PEi7;`Q!(^kL3yg*_E z<^fe>v&(RfsXFMqIMRg^pcviWQ+xbUPwy$dpbz@}EdhkPV@w4_L~6E&1GVgbZEY5^ zMcb;wds$b3#0#li8GTMV6}Ve#LXZYV{_e`FdRJg$vT(7S13>`6CNWQyS?k>ozBjPR x&C06TI?>qqUa058wbPLB-QGwu>w(p`Wsvu;?0nS}I1u^t(Zh?uv*(=V{{y+E>K6b2 literal 0 HcmV?d00001 diff --git a/img/undo.jpg b/img/undo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..782451b0ec1f281a4dd7a931c1a5c0bbe2bc9132 GIT binary patch literal 21346 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 ZHDWogF^khKcRybIj||ekBnp0S<{y+L=0^Yk literal 0 HcmV?d00001 diff --git a/src/myNotepad/window.java b/src/myNotepad/window.java new file mode 100644 index 0000000..8ab8b6c --- /dev/null +++ b/src/myNotepad/window.java @@ -0,0 +1,282 @@ +package myNotepad; + +import java.awt.BorderLayout; +import java.awt.Dimension; +import java.awt.EventQueue; +import java.awt.Image; + +import javax.swing.JFrame; +import javax.swing.JPanel; +import javax.swing.border.EmptyBorder; +import javax.swing.JMenuBar; +import javax.swing.JLabel; +import javax.swing.JTextArea; +import javax.swing.ImageIcon; +import javax.swing.JButton; +import javax.swing.JRadioButton; +import javax.swing.JMenu; +import javax.swing.JMenuItem; +import javax.swing.JCheckBox; +import javax.swing.SwingConstants; +import javax.swing.JScrollPane; +import javax.swing.JScrollBar; +import javax.swing.JToolBar; +import javax.swing.JSeparator; + +public class window extends JFrame { + + private JPanel contentPane; + + /** + * Launch the application. + */ + public static void main(String[] args) { + EventQueue.invokeLater(new Runnable() { + public void run() { + try { + window frame = new window(); + frame.setVisible(true); + } catch (Exception e) { + e.printStackTrace(); + } + } + }); + } + + /** + * Create the frame. + */ + public window() { + setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + setBounds(100, 100, 750, 500); + contentPane = new JPanel(); + contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); + setContentPane(contentPane); + contentPane.setLayout(new BorderLayout(0, 0)); + + this.setIconImage(new ImageIcon("img\\notepad.jpg").getImage()); + this.setTitle(" Notepad"); + + JMenuBar menuBar1 = new JMenuBar(); + contentPane.add(menuBar1, BorderLayout.NORTH); + + JMenu wenjian = new JMenu("\u6587\u4EF6(F)"); + menuBar1.add(wenjian); + + JMenuItem xinjian1 = new JMenuItem("\u65B0\u5EFA(N)"); + wenjian.add(xinjian1); + + JMenuItem dakai1 = new JMenuItem("\u6253\u5F00(O)"); + wenjian.add(dakai1); + + JMenuItem baocun1 = new JMenuItem("\u4FDD\u5B58(S)"); + wenjian.add(baocun1); + + JMenuItem lingwai1 = new JMenuItem("\u53E6\u5B58\u4E3A(A)"); + wenjian.add(lingwai1); + + wenjian.addSeparator(); + + JMenuItem tuichu1 = new JMenuItem("\u9000\u51FA(X)"); + wenjian.add(tuichu1); + + JMenu bianji = new JMenu("\u7F16\u8F91(E)"); + menuBar1.add(bianji); + + JMenuItem chexiao1 = new JMenuItem("\u64A4\u9500(U)"); + bianji.add(chexiao1); + + JMenuItem chongzuo1 = new JMenuItem("\u91CD\u505A(R)"); + bianji.add(chongzuo1); + + bianji.addSeparator(); + + JMenuItem jianqie1 = new JMenuItem("\u526A\u5207(T)"); + bianji.add(jianqie1); + + JMenuItem fuzhi1 = new JMenuItem("\u590D\u5236(C)"); + bianji.add(fuzhi1); + + JMenuItem quanbufuzhi1 = new JMenuItem("\u5168\u90E8\u590D\u5236(Y)"); + bianji.add(quanbufuzhi1); + + JMenuItem zhantie1 = new JMenuItem("\u7C98\u8D34(P)"); + bianji.add(zhantie1); + + JMenuItem yujianqiebanjiaohuan = new JMenuItem("\u4E0E\u526A\u5207\u677F\u4EA4\u6362(W)"); + bianji.add(yujianqiebanjiaohuan); + + JMenuItem shanchu1 = new JMenuItem("\u5220\u9664(D)"); + bianji.add(shanchu1); + + JMenuItem qingkongjiantieban1 = new JMenuItem("\u6E05\u7A7A\u526A\u5207\u677F(E)"); + bianji.add(qingkongjiantieban1); + + JMenuItem quanxuan1 = new JMenuItem("\u5168\u9009(A)"); + bianji.add(quanxuan1); + + JMenuItem tianjiashijian1 = new JMenuItem("\u6DFB\u52A0\u65F6\u95F4(M)"); + bianji.add(tianjiashijian1); + + bianji.addSeparator(); + + JMenu chazhao0 = new JMenu("\u67E5\u627E"); + bianji.add(chazhao0); + + JMenuItem chazhao1 = new JMenuItem("\u67E5\u627E(F)"); + chazhao0.add(chazhao1); + + JMenuItem tihuan1 = new JMenuItem("\u66FF\u6362(R)"); + chazhao0.add(tihuan1); + + JMenuItem tiaozhuandao1 = new JMenuItem("\u8DF3\u8F6C\u5230(G)"); + chazhao0.add(tiaozhuandao1); + + JMenu geshi = new JMenu("\u683C\u5F0F(O)"); + menuBar1.add(geshi); + + JCheckBox zidonghuanhang1 = new JCheckBox("\u81EA\u52A8\u6362\u884C"); + geshi.add(zidonghuanhang1); + + JMenuItem ziti1 = new JMenuItem("\u5B57\u4F53(F)"); + geshi.add(ziti1); + + JMenuItem huanpifu1 = new JMenuItem("\u6362\u76AE\u80A4(C)"); + geshi.add(huanpifu1); + + JMenu chakan = new JMenu("\u67E5\u770B(V)"); + menuBar1.add(chakan); + + JCheckBox xianshizhuangtailan1 = new JCheckBox("\u663E\u793A\u72B6\u6001\u680F"); + chakan.add(xianshizhuangtailan1); + + JCheckBox xianshihanghao1 = new JCheckBox("\u663E\u793A\u884C\u53F7"); + chakan.add(xianshihanghao1); + + JMenu bangzhu = new JMenu("\u5E2E\u52A9(H)"); + menuBar1.add(bangzhu); + + JMenuItem chakanbangzhu1 = new JMenuItem("\u67E5\u770B\u5E2E\u52A9(H)"); + bangzhu.add(chakanbangzhu1); + + bangzhu.addSeparator(); + + JMenuItem guanyujishiben1 = new JMenuItem("\u5173\u4E8E\u8BB0\u4E8B\u672C(A)"); + bangzhu.add(guanyujishiben1); + + JPanel panel = new JPanel(); + contentPane.add(panel, BorderLayout.CENTER); + panel.setLayout(new BorderLayout(0, 0)); + + + JLabel lblNewLabel = new JLabel("\u72B6\u6001\u680F"); + panel.add(lblNewLabel, BorderLayout.SOUTH); + lblNewLabel.setHorizontalAlignment(SwingConstants.RIGHT); + + JScrollPane scrollPane = new JScrollPane(); + panel.add(scrollPane, BorderLayout.CENTER); + + JTextArea textArea = new JTextArea(); + scrollPane.setViewportView(textArea); + + JToolBar toolBar = new JToolBar(); + panel.add(toolBar, BorderLayout.NORTH); + + JButton xjian2 = new JButton(""); + xjian2.setToolTipText("\u65B0\u5EFA"); + toolBar.add(xjian2); + ImageIcon tubiao= new ImageIcon("img\\new.jpg"); + Image temp = tubiao.getImage().getScaledInstance(15,15,Image.SCALE_DEFAULT); + tubiao = new ImageIcon(temp); + xjian2.setIcon(tubiao); + + JButton dakai2 = new JButton(""); + dakai2.setToolTipText("\u6253\u5F00"); + toolBar.add(dakai2); + tubiao= new ImageIcon("img\\open.jpg"); + temp = tubiao.getImage().getScaledInstance(15,15,Image.SCALE_DEFAULT); + tubiao = new ImageIcon(temp); + dakai2.setIcon(tubiao); + + JButton baocun2 = new JButton(""); + baocun2.setToolTipText("\u4FDD\u5B58"); + toolBar.add(baocun2); + tubiao= new ImageIcon("img\\save.jpg"); + temp = tubiao.getImage().getScaledInstance(15,15,Image.SCALE_DEFAULT); + tubiao = new ImageIcon(temp); + baocun2.setIcon(tubiao); + + toolBar.addSeparator(); + + JButton chexiao2 = new JButton(""); + chexiao2.setToolTipText("\u64A4\u9500"); + toolBar.add(chexiao2); + tubiao= new ImageIcon("img\\undo.jpg"); + temp = tubiao.getImage().getScaledInstance(15,15,Image.SCALE_DEFAULT); + tubiao = new ImageIcon(temp); + chexiao2.setIcon(tubiao); + + JButton chongzuo2 = new JButton(""); + chongzuo2.setToolTipText("\u91CD\u505A"); + toolBar.add(chongzuo2); + tubiao= new ImageIcon("img\\redo.jpg"); + temp = tubiao.getImage().getScaledInstance(15,15,Image.SCALE_DEFAULT); + tubiao = new ImageIcon(temp); + chongzuo2.setIcon(tubiao); + + toolBar.addSeparator(); + + JButton jianqie2 = new JButton(""); + jianqie2.setToolTipText("\u526A\u5207"); + toolBar.add(jianqie2); + tubiao= new ImageIcon("img\\cut.jpg"); + temp = tubiao.getImage().getScaledInstance(15,15,Image.SCALE_DEFAULT); + tubiao = new ImageIcon(temp); + jianqie2.setIcon(tubiao); + + JButton fuzhi2 = new JButton(""); + fuzhi2.setToolTipText("\u590D\u5236"); + toolBar.add(fuzhi2); + tubiao= new ImageIcon("img\\copy.jpg"); + temp = tubiao.getImage().getScaledInstance(15,15,Image.SCALE_DEFAULT); + tubiao = new ImageIcon(temp); + fuzhi2.setIcon(tubiao); + + JButton zhantie2 = new JButton(""); + zhantie2.setToolTipText("\u7C98\u8D34"); + toolBar.add(zhantie2); + tubiao= new ImageIcon("img\\paste.jpg"); + temp = tubiao.getImage().getScaledInstance(15,15,Image.SCALE_DEFAULT); + tubiao = new ImageIcon(temp); + zhantie2.setIcon(tubiao); + + toolBar.addSeparator(); + + JButton chazhao2 = new JButton(""); + chazhao2.setToolTipText("\u67E5\u627E"); + toolBar.add(chazhao2); + tubiao= new ImageIcon("img\\find.jpg"); + temp = tubiao.getImage().getScaledInstance(15,15,Image.SCALE_DEFAULT); + tubiao = new ImageIcon(temp); + chazhao2.setIcon(tubiao); + + JButton tihuan2 = new JButton(""); + tihuan2.setToolTipText("\u66FF\u6362"); + toolBar.add(tihuan2); + tubiao= new ImageIcon("img\\replace.jpg"); + temp = tubiao.getImage().getScaledInstance(15,15,Image.SCALE_DEFAULT); + tubiao = new ImageIcon(temp); + tihuan2.setIcon(tubiao); + + toolBar.addSeparator(); + + JButton tuichu2 = new JButton(""); + tuichu2.setToolTipText("\u9000\u51FA"); + toolBar.add(tuichu2); + tubiao= new ImageIcon("img\\exit.jpg"); + temp = tubiao.getImage().getScaledInstance(15,15,Image.SCALE_DEFAULT); + tubiao = new ImageIcon(temp); + tuichu2.setIcon(tubiao); + } + +} -- Gitee From 798ef418b502058b90883cad9f365b30cbbb655d Mon Sep 17 00:00:00 2001 From: ljh <1585739602@qq.com> Date: Sat, 14 May 2022 11:25:32 +0800 Subject: [PATCH 05/20] =?UTF-8?q?=E7=AC=AC2=E6=AC=A1=E6=8F=90=E4=BA=A4?= =?UTF-8?q?=EF=BC=9A=E5=AE=8C=E5=96=84=E4=BA=86=E7=95=8C=E9=9D=A2=EF=BC=8C?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BA=86=E5=8F=B3=E5=87=BB=E9=BC=A0=E6=A0=87?= =?UTF-8?q?=E5=87=BA=E7=8E=B0=E8=8F=9C=E5=8D=95=E6=A0=8F=EF=BC=8C=E5=AE=9E?= =?UTF-8?q?=E7=8E=B0=E4=BA=86=E2=80=9C=E5=85=B3=E4=BA=8E=E8=AE=B0=E4=BA=8B?= =?UTF-8?q?=E6=9C=AC=E2=80=9D=E5=92=8C=E2=80=9C=E6=9F=A5=E7=9C=8B=E5=B8=AE?= =?UTF-8?q?=E5=8A=A9=E2=80=9D=EF=BC=8C=E5=AE=9E=E7=8E=B0=E4=BA=86=E6=98=BE?= =?UTF-8?q?=E7=A4=BA=E8=A1=8C=E5=8F=B7=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/myNotepad/window.java | 116 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 112 insertions(+), 4 deletions(-) diff --git a/src/myNotepad/window.java b/src/myNotepad/window.java index 8ab8b6c..4b3d000 100644 --- a/src/myNotepad/window.java +++ b/src/myNotepad/window.java @@ -1,13 +1,19 @@ package myNotepad; import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Component; import java.awt.Dimension; import java.awt.EventQueue; import java.awt.Image; import javax.swing.JFrame; import javax.swing.JPanel; +import javax.swing.JPopupMenu; import javax.swing.border.EmptyBorder; +import javax.swing.event.DocumentEvent; +import javax.swing.event.DocumentListener; +import javax.swing.text.Element; import javax.swing.JMenuBar; import javax.swing.JLabel; import javax.swing.JTextArea; @@ -16,12 +22,17 @@ import javax.swing.JButton; import javax.swing.JRadioButton; import javax.swing.JMenu; import javax.swing.JMenuItem; +import javax.swing.JOptionPane; import javax.swing.JCheckBox; import javax.swing.SwingConstants; import javax.swing.JScrollPane; import javax.swing.JScrollBar; import javax.swing.JToolBar; import javax.swing.JSeparator; +import java.awt.event.ActionListener; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.awt.event.ActionEvent; public class window extends JFrame { @@ -141,8 +152,8 @@ public class window extends JFrame { JMenuItem ziti1 = new JMenuItem("\u5B57\u4F53(F)"); geshi.add(ziti1); - JMenuItem huanpifu1 = new JMenuItem("\u6362\u76AE\u80A4(C)"); - geshi.add(huanpifu1); + JCheckBox shensemoshi1 = new JCheckBox("\u6DF1\u8272\u6A21\u5F0F"); + geshi.add(shensemoshi1); JMenu chakan = new JMenu("\u67E5\u770B(V)"); menuBar1.add(chakan); @@ -157,18 +168,31 @@ public class window extends JFrame { menuBar1.add(bangzhu); JMenuItem chakanbangzhu1 = new JMenuItem("\u67E5\u770B\u5E2E\u52A9(H)"); + chakanbangzhu1.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + JOptionPane.showInternalMessageDialog(null, + "1.ӵиֿݼѸӦʾ\n2.ͨģʽɫģʽʱл\n" + + "3.״̬кſѡǷʾ\n4.ĬԶУѡ\n" + + "5.϶һ״̬ʾ˵\n6.һıʾ˵", "", JOptionPane.PLAIN_MESSAGE); + } + }); //鿴ϢԻ bangzhu.add(chakanbangzhu1); bangzhu.addSeparator(); JMenuItem guanyujishiben1 = new JMenuItem("\u5173\u4E8E\u8BB0\u4E8B\u672C(A)"); - bangzhu.add(guanyujishiben1); + guanyujishiben1.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + JOptionPane.showInternalMessageDialog(null, + "ӭʹã\n Made in\n Email1585739602@qq.com\n", "ڼ±", JOptionPane.PLAIN_MESSAGE); + } + }); + bangzhu.add(guanyujishiben1); //ڼ±ϢԻ JPanel panel = new JPanel(); contentPane.add(panel, BorderLayout.CENTER); panel.setLayout(new BorderLayout(0, 0)); - JLabel lblNewLabel = new JLabel("\u72B6\u6001\u680F"); panel.add(lblNewLabel, BorderLayout.SOUTH); lblNewLabel.setHorizontalAlignment(SwingConstants.RIGHT); @@ -178,6 +202,65 @@ public class window extends JFrame { JTextArea textArea = new JTextArea(); scrollPane.setViewportView(textArea); + JTextArea textArea0 = new JTextArea(); //ʾкŵʵ + textArea0.setEditable(false); + textArea0.setBackground(Color.LIGHT_GRAY); + scrollPane.setRowHeaderView(textArea0); + + textArea.getDocument().addDocumentListener(new DocumentListener() { + public String getText() { + int caretPosition = textArea.getDocument().getLength(); + Element root = textArea.getDocument().getDefaultRootElement(); + String text ="1" + System.getProperty("line.separator"); + for(int i = 2; i < root.getElementIndex(caretPosition) + 2; i++) { + text += i + System.getProperty("line.separator"); + } + return text; + } + @Override + public void changedUpdate(DocumentEvent de) { + textArea0.setText(getText()); + } + @Override + public void insertUpdate(DocumentEvent de) { + textArea0.setText(getText()); + } + @Override + public void removeUpdate(DocumentEvent de) { + textArea0.setText(getText()); + } + }); + + + JPopupMenu popupMenu = new JPopupMenu(); + addPopup(textArea, popupMenu); + + JMenuItem chexiao3 = new JMenuItem("\u64A4\u9500"); + popupMenu.add(chexiao3); + + JMenuItem chongzuo3 = new JMenuItem("\u91CD\u505A"); + popupMenu.add(chongzuo3); + + JSeparator separator = new JSeparator(); + popupMenu.add(separator); + + JMenuItem jianqie3 = new JMenuItem("\u526A\u5207"); + popupMenu.add(jianqie3); + + JMenuItem fuzhi3 = new JMenuItem("\u590D\u5236"); + popupMenu.add(fuzhi3); + + JMenuItem zhantie3 = new JMenuItem("\u7C98\u8D34"); + popupMenu.add(zhantie3); + + JMenuItem shanchu3 = new JMenuItem("\u5220\u9664"); + popupMenu.add(shanchu3); + + JSeparator separator_1 = new JSeparator(); + popupMenu.add(separator_1); + + JMenuItem quanxuan3 = new JMenuItem("\u5168\u9009"); + popupMenu.add(quanxuan3); JToolBar toolBar = new JToolBar(); panel.add(toolBar, BorderLayout.NORTH); @@ -277,6 +360,31 @@ public class window extends JFrame { temp = tubiao.getImage().getScaledInstance(15,15,Image.SCALE_DEFAULT); tubiao = new ImageIcon(temp); tuichu2.setIcon(tubiao); + + JPopupMenu popupMenu_1 = new JPopupMenu(); + addPopup(toolBar, popupMenu_1); + + JCheckBox xianshicaidanlan1 = new JCheckBox("\u663E\u793A\u83DC\u5355\u680F"); + popupMenu_1.add(xianshicaidanlan1); + } + + + private static void addPopup(Component component, final JPopupMenu popup) { + component.addMouseListener(new MouseAdapter() { + public void mousePressed(MouseEvent e) { + if (e.isPopupTrigger()) { + showMenu(e); + } + } + public void mouseReleased(MouseEvent e) { + if (e.isPopupTrigger()) { + showMenu(e); + } + } + private void showMenu(MouseEvent e) { + popup.show(e.getComponent(), e.getX(), e.getY()); + } + }); } } -- Gitee From 45577922418b1459ad0de60373f1f0835d72b07f Mon Sep 17 00:00:00 2001 From: ljh <1585739602@qq.com> Date: Sat, 14 May 2022 23:28:22 +0800 Subject: [PATCH 06/20] =?UTF-8?q?=E7=AC=AC3=E6=AC=A1=EF=BC=9A=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=E4=BA=86=E6=89=80=E6=9C=89=E5=BF=AB=E6=8D=B7=E9=94=AE?= =?UTF-8?q?=EF=BC=8C=E7=8A=B6=E6=80=81=E6=A0=8F=E6=98=BE=E7=A4=BA=E8=A1=8C?= =?UTF-8?q?=E5=88=97=E5=8F=B7=E5=92=8C=E5=AD=97=E6=95=B0=E5=92=8C=E5=AD=97?= =?UTF-8?q?=E7=AC=A6=E6=95=B0=E3=80=82=E5=AE=9E=E7=8E=B0=E4=BA=86=E2=80=9C?= =?UTF-8?q?=E7=BC=96=E8=BE=91=E2=80=9C=E9=87=8C=E7=9A=84=E9=83=A8=E5=88=86?= =?UTF-8?q?=E7=AE=80=E5=8D=95=E5=8A=9F=E8=83=BD=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/myNotepad/window.java | 198 +++++++++++++++++++++++++++++++++++--- 1 file changed, 186 insertions(+), 12 deletions(-) diff --git a/src/myNotepad/window.java b/src/myNotepad/window.java index 4b3d000..05d99c9 100644 --- a/src/myNotepad/window.java +++ b/src/myNotepad/window.java @@ -33,6 +33,13 @@ import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.ActionEvent; +import javax.swing.KeyStroke; +import java.awt.event.KeyEvent; +import java.awt.event.InputEvent; +import javax.swing.event.CaretListener; +import javax.swing.event.CaretEvent; +import java.awt.event.ItemListener; +import java.awt.event.ItemEvent; public class window extends JFrame { @@ -72,102 +79,158 @@ public class window extends JFrame { contentPane.add(menuBar1, BorderLayout.NORTH); JMenu wenjian = new JMenu("\u6587\u4EF6(F)"); + wenjian.setMnemonic('F'); menuBar1.add(wenjian); JMenuItem xinjian1 = new JMenuItem("\u65B0\u5EFA(N)"); + xinjian1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, InputEvent.CTRL_DOWN_MASK)); + xinjian1.setMnemonic(KeyEvent.VK_N); wenjian.add(xinjian1); JMenuItem dakai1 = new JMenuItem("\u6253\u5F00(O)"); + dakai1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, InputEvent.CTRL_DOWN_MASK)); + dakai1.setMnemonic(KeyEvent.VK_O); wenjian.add(dakai1); JMenuItem baocun1 = new JMenuItem("\u4FDD\u5B58(S)"); + baocun1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, InputEvent.CTRL_DOWN_MASK)); + baocun1.setMnemonic(KeyEvent.VK_S); wenjian.add(baocun1); - JMenuItem lingwai1 = new JMenuItem("\u53E6\u5B58\u4E3A(A)"); - wenjian.add(lingwai1); + JMenuItem lingcunwei1 = new JMenuItem("\u53E6\u5B58\u4E3A(A)"); + lingcunwei1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F6, InputEvent.CTRL_DOWN_MASK)); + lingcunwei1.setMnemonic(KeyEvent.VK_A); + wenjian.add(lingcunwei1); wenjian.addSeparator(); JMenuItem tuichu1 = new JMenuItem("\u9000\u51FA(X)"); + tuichu1.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + System.exit(0); + } + }); + tuichu1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F4, InputEvent.ALT_DOWN_MASK)); + tuichu1.setMnemonic(KeyEvent.VK_X); wenjian.add(tuichu1); JMenu bianji = new JMenu("\u7F16\u8F91(E)"); + bianji.setMnemonic('E'); menuBar1.add(bianji); JMenuItem chexiao1 = new JMenuItem("\u64A4\u9500(U)"); + chexiao1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z, InputEvent.CTRL_DOWN_MASK)); + chexiao1.setMnemonic(KeyEvent.VK_U); bianji.add(chexiao1); JMenuItem chongzuo1 = new JMenuItem("\u91CD\u505A(R)"); + chongzuo1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Y, InputEvent.CTRL_DOWN_MASK)); + chongzuo1.setMnemonic(KeyEvent.VK_R); bianji.add(chongzuo1); bianji.addSeparator(); JMenuItem jianqie1 = new JMenuItem("\u526A\u5207(T)"); + jianqie1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, InputEvent.CTRL_DOWN_MASK)); + jianqie1.setMnemonic(KeyEvent.VK_T); bianji.add(jianqie1); JMenuItem fuzhi1 = new JMenuItem("\u590D\u5236(C)"); + fuzhi1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, InputEvent.CTRL_DOWN_MASK)); + fuzhi1.setMnemonic(KeyEvent.VK_C); bianji.add(fuzhi1); - JMenuItem quanbufuzhi1 = new JMenuItem("\u5168\u90E8\u590D\u5236(Y)"); + JMenuItem quanbufuzhi1 = new JMenuItem("\u5168\u90E8\u590D\u5236(L)"); + quanbufuzhi1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, InputEvent.ALT_DOWN_MASK)); + quanbufuzhi1.setMnemonic(KeyEvent.VK_L); bianji.add(quanbufuzhi1); JMenuItem zhantie1 = new JMenuItem("\u7C98\u8D34(P)"); + zhantie1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V, InputEvent.CTRL_DOWN_MASK)); + zhantie1.setMnemonic(KeyEvent.VK_P); bianji.add(zhantie1); - JMenuItem yujianqiebanjiaohuan = new JMenuItem("\u4E0E\u526A\u5207\u677F\u4EA4\u6362(W)"); - bianji.add(yujianqiebanjiaohuan); + JMenuItem yujianqiebanjiaohuan1 = new JMenuItem("\u4E0E\u526A\u5207\u677F\u4EA4\u6362(W)"); + yujianqiebanjiaohuan1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_K, InputEvent.CTRL_DOWN_MASK)); + yujianqiebanjiaohuan1.setMnemonic(KeyEvent.VK_W); + bianji.add(yujianqiebanjiaohuan1); JMenuItem shanchu1 = new JMenuItem("\u5220\u9664(D)"); + shanchu1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_D, InputEvent.CTRL_DOWN_MASK)); + shanchu1.setMnemonic(KeyEvent.VK_D); bianji.add(shanchu1); JMenuItem qingkongjiantieban1 = new JMenuItem("\u6E05\u7A7A\u526A\u5207\u677F(E)"); + qingkongjiantieban1.setMnemonic(KeyEvent.VK_E); bianji.add(qingkongjiantieban1); JMenuItem quanxuan1 = new JMenuItem("\u5168\u9009(A)"); + quanxuan1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A, InputEvent.CTRL_DOWN_MASK)); + quanxuan1.setMnemonic(KeyEvent.VK_A); bianji.add(quanxuan1); JMenuItem tianjiashijian1 = new JMenuItem("\u6DFB\u52A0\u65F6\u95F4(M)"); + tianjiashijian1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_M, InputEvent.CTRL_DOWN_MASK)); + tianjiashijian1.setMnemonic(KeyEvent.VK_M); bianji.add(tianjiashijian1); bianji.addSeparator(); - JMenu chazhao0 = new JMenu("\u67E5\u627E"); + JMenu chazhao0 = new JMenu("\u67E5\u627E(R)"); + chazhao0.setMnemonic(KeyEvent.VK_R); bianji.add(chazhao0); JMenuItem chazhao1 = new JMenuItem("\u67E5\u627E(F)"); + chazhao1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F, InputEvent.CTRL_DOWN_MASK)); + chazhao1.setMnemonic(KeyEvent.VK_F); chazhao0.add(chazhao1); JMenuItem tihuan1 = new JMenuItem("\u66FF\u6362(R)"); + tihuan1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_R, InputEvent.CTRL_DOWN_MASK)); + tihuan1.setMnemonic(KeyEvent.VK_R); chazhao0.add(tihuan1); JMenuItem tiaozhuandao1 = new JMenuItem("\u8DF3\u8F6C\u5230(G)"); + tiaozhuandao1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_G, InputEvent.CTRL_DOWN_MASK)); + tiaozhuandao1.setMnemonic(KeyEvent.VK_G); chazhao0.add(tiaozhuandao1); JMenu geshi = new JMenu("\u683C\u5F0F(O)"); + geshi.setMnemonic('O'); menuBar1.add(geshi); JCheckBox zidonghuanhang1 = new JCheckBox("\u81EA\u52A8\u6362\u884C"); + zidonghuanhang1.setSelected(true); + geshi.add(zidonghuanhang1); JMenuItem ziti1 = new JMenuItem("\u5B57\u4F53(F)"); + ziti1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F, InputEvent.SHIFT_DOWN_MASK)); + ziti1.setMnemonic(KeyEvent.VK_F); geshi.add(ziti1); JCheckBox shensemoshi1 = new JCheckBox("\u6DF1\u8272\u6A21\u5F0F"); geshi.add(shensemoshi1); JMenu chakan = new JMenu("\u67E5\u770B(V)"); + chakan.setMnemonic('V'); menuBar1.add(chakan); JCheckBox xianshizhuangtailan1 = new JCheckBox("\u663E\u793A\u72B6\u6001\u680F"); + xianshizhuangtailan1.setSelected(true); chakan.add(xianshizhuangtailan1); JCheckBox xianshihanghao1 = new JCheckBox("\u663E\u793A\u884C\u53F7"); + xianshihanghao1.setSelected(true); chakan.add(xianshihanghao1); JMenu bangzhu = new JMenu("\u5E2E\u52A9(H)"); + bangzhu.setMnemonic('H'); menuBar1.add(bangzhu); JMenuItem chakanbangzhu1 = new JMenuItem("\u67E5\u770B\u5E2E\u52A9(H)"); + chakanbangzhu1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_H, InputEvent.SHIFT_DOWN_MASK)); + chakanbangzhu1.setMnemonic(KeyEvent.VK_H); chakanbangzhu1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { JOptionPane.showInternalMessageDialog(null, @@ -181,6 +244,8 @@ public class window extends JFrame { bangzhu.addSeparator(); JMenuItem guanyujishiben1 = new JMenuItem("\u5173\u4E8E\u8BB0\u4E8B\u672C(A)"); + guanyujishiben1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F1, InputEvent.SHIFT_DOWN_MASK)); + guanyujishiben1.setMnemonic(KeyEvent.VK_A); guanyujishiben1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { JOptionPane.showInternalMessageDialog(null, @@ -193,27 +258,136 @@ public class window extends JFrame { contentPane.add(panel, BorderLayout.CENTER); panel.setLayout(new BorderLayout(0, 0)); - JLabel lblNewLabel = new JLabel("\u72B6\u6001\u680F"); + JLabel lblNewLabel = new JLabel("\u72B6\u6001\u680F "); panel.add(lblNewLabel, BorderLayout.SOUTH); - lblNewLabel.setHorizontalAlignment(SwingConstants.RIGHT); + lblNewLabel.setHorizontalAlignment(SwingConstants.LEFT); + xianshizhuangtailan1.addItemListener(new ItemListener() { + public void itemStateChanged(ItemEvent e) { + if(xianshizhuangtailan1.isSelected()) { //Ƿѡ״̬¼ + lblNewLabel.setVisible(true); + } + else { + lblNewLabel.setVisible(false); + } + + } + }); JScrollPane scrollPane = new JScrollPane(); panel.add(scrollPane, BorderLayout.CENTER); JTextArea textArea = new JTextArea(); + textArea.setLineWrap(true); + + zidonghuanhang1.addItemListener(new ItemListener() { + public void itemStateChanged(ItemEvent e) { + if(zidonghuanhang1.isSelected()) { //ǷԶ + textArea.setLineWrap(true); + } + else { + textArea.setLineWrap(false); + } + } + }); + + jianqie1.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + textArea.cut(); //й + } + }); + + fuzhi1.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + textArea.copy(); //ƹ + } + }); + + zhantie1.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + textArea.paste(); //ճ + } + }); + + quanxuan1.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + textArea.selectAll(); //ȫѡ + } + }); + + shanchu1.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + textArea.replaceRange("",textArea.getSelectionStart(),textArea.getSelectionEnd()); //ɾ + } + }); + + quanbufuzhi1.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + textArea.selectAll(); //ȫƹ + textArea.copy(); + } + }); + + JTextArea text1= new JTextArea(); //Ϊмý + JTextArea text2= new JTextArea(); //Ϊмý + yujianqiebanjiaohuan1.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) {//滻ܾͬԪؽҪе䵱֮ý + text1.setCaretPosition(0); + text1.paste(); + textArea.copy(); + text2.setCaretPosition(0); + text2.paste(); + text1.selectAll(); + text1.copy(); //а彻 + textArea.paste(); + text2.selectAll(); + text2.copy(); + text1.setText(""); + text2.setText(""); + } + }); + + + textArea.addCaretListener(new CaretListener() { + public void caretUpdate(CaretEvent e) { + try { + int offset = e.getDot() ; //òλá + int row = textArea.getLineOfOffset(offset); //getLineOfOffsetJTextAreaеķ,ƫתΪıΪкš + int column = offset - textArea.getLineStartOffset(row); //getLineStartOffset(int line) ȷпʼƫ + String content = textArea.getText().replaceAll("\\s+", ""); //ʽ"\\s"ʾոַ + int factnum=content.length(); + lblNewLabel.setText(" У"+(row + 1)+" / "+textArea.getLineCount() + +" У"+(column+1)+" / "+(textArea.getLineEndOffset(row)-textArea.getLineStartOffset(row)) + +" "+factnum+" ַ"+textArea.getLineEndOffset(textArea.getLineCount()-1)); + // ״̬ʾǰкšк + } + catch (Exception ex) {} + } + }); + scrollPane.setViewportView(textArea); - JTextArea textArea0 = new JTextArea(); //ʾкŵʵ + JTextArea textArea0 = new JTextArea(); //ʾкŵʵ֡ο textArea0.setEditable(false); + xianshihanghao1.addItemListener(new ItemListener() { + public void itemStateChanged(ItemEvent e) { + if(xianshihanghao1.isSelected()) { + textArea.setText(""); + textArea0.setVisible(true); //Ϊʲô˲ɼȻΪɼ + } + else { + textArea0.setVisible(false); + } + } + }); textArea0.setBackground(Color.LIGHT_GRAY); scrollPane.setRowHeaderView(textArea0); textArea.getDocument().addDocumentListener(new DocumentListener() { public String getText() { int caretPosition = textArea.getDocument().getLength(); - Element root = textArea.getDocument().getDefaultRootElement(); + Element root = textArea.getDocument().getDefaultRootElement(); // String text ="1" + System.getProperty("line.separator"); for(int i = 2; i < root.getElementIndex(caretPosition) + 2; i++) { - text += i + System.getProperty("line.separator"); + text += i + System.getProperty("line.separator"); //line.separator } return text; } @@ -265,7 +439,7 @@ public class window extends JFrame { JToolBar toolBar = new JToolBar(); panel.add(toolBar, BorderLayout.NORTH); - JButton xjian2 = new JButton(""); + JButton xjian2 = new JButton(""); //Ϊͼİť xjian2.setToolTipText("\u65B0\u5EFA"); toolBar.add(xjian2); ImageIcon tubiao= new ImageIcon("img\\new.jpg"); -- Gitee From 39db46496f358dbd0a07dd97eb3d37cb4e75a8b3 Mon Sep 17 00:00:00 2001 From: ljh <1585739602@qq.com> Date: Sun, 15 May 2022 10:15:39 +0800 Subject: [PATCH 07/20] =?UTF-8?q?=E7=AC=AC4=E6=AC=A1=E6=8F=90=E4=BA=A4?= =?UTF-8?q?=EF=BC=9A=E5=AE=9E=E7=8E=B0=E4=BA=86=E7=BC=96=E8=BE=91=E6=A0=8F?= =?UTF-8?q?=E9=87=8C=E9=99=A4=E2=80=9C=E6=9F=A5=E6=89=BE=E2=80=9D=E4=B9=8B?= =?UTF-8?q?=E5=A4=96=E7=9A=84=E6=89=80=E6=9C=89=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/myNotepad/window.java | 59 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 56 insertions(+), 3 deletions(-) diff --git a/src/myNotepad/window.java b/src/myNotepad/window.java index 05d99c9..567040c 100644 --- a/src/myNotepad/window.java +++ b/src/myNotepad/window.java @@ -14,6 +14,7 @@ import javax.swing.border.EmptyBorder; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; import javax.swing.text.Element; +import javax.swing.undo.UndoManager; import javax.swing.JMenuBar; import javax.swing.JLabel; import javax.swing.JTextArea; @@ -32,6 +33,7 @@ import javax.swing.JSeparator; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; +import java.util.Date; import java.awt.event.ActionEvent; import javax.swing.KeyStroke; import java.awt.event.KeyEvent; @@ -40,6 +42,12 @@ import javax.swing.event.CaretListener; import javax.swing.event.CaretEvent; import java.awt.event.ItemListener; import java.awt.event.ItemEvent; +import java.awt.datatransfer.Clipboard; +import java.awt.Toolkit; +import java.awt.datatransfer.*; + + + public class window extends JFrame { @@ -160,7 +168,7 @@ public class window extends JFrame { shanchu1.setMnemonic(KeyEvent.VK_D); bianji.add(shanchu1); - JMenuItem qingkongjiantieban1 = new JMenuItem("\u6E05\u7A7A\u526A\u5207\u677F(E)"); + JMenuItem qingkongjiantieban1 = new JMenuItem("\u6E05\u7A7A\u526A\u8D34\u677F(E)"); qingkongjiantieban1.setMnemonic(KeyEvent.VK_E); bianji.add(qingkongjiantieban1); @@ -249,7 +257,7 @@ public class window extends JFrame { guanyujishiben1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { JOptionPane.showInternalMessageDialog(null, - "ӭʹã\n Made in\n Email1585739602@qq.com\n", "ڼ±", JOptionPane.PLAIN_MESSAGE); + "ӭʹã\n Made by\n Email1585739602@qq.com\n", "ڼ±", JOptionPane.PLAIN_MESSAGE); } }); bangzhu.add(guanyujishiben1); //ڼ±ϢԻ @@ -290,6 +298,25 @@ public class window extends JFrame { } }); + + UndoManager undo = new UndoManager(); + textArea.getDocument().addUndoableEditListener(undo); + chexiao1.addActionListener(new ActionListener(){ + public void actionPerformed(ActionEvent e) { // + if(undo.canUndo()) + undo.undo(); + } + }); + + + chongzuo1.addActionListener(new ActionListener(){ + public void actionPerformed(ActionEvent e) { // + if(undo.canRedo()) + undo.redo(); + } + }); + + jianqie1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { textArea.cut(); //й @@ -346,6 +373,21 @@ public class window extends JFrame { } }); + qingkongjiantieban1.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + Clipboard sysc = Toolkit.getDefaultToolkit().getSystemClipboard(); //Clipboard getSystemClipboard() + //ȡ뱾ƽ̨ṩļ幤߽ӿڵϵͳĵʵ + Transferable tText = new StringSelection(""); //ռ幦 + sysc.setContents(tText,null); + } + }); + + tianjiashijian1.addActionListener(new ActionListener(){ + public void actionPerformed(ActionEvent e){ + textArea.append(new Date().toString()); //ʱ书 + } + }); + textArea.addCaretListener(new CaretListener() { public void caretUpdate(CaretEvent e) { @@ -358,7 +400,7 @@ public class window extends JFrame { lblNewLabel.setText(" У"+(row + 1)+" / "+textArea.getLineCount() +" У"+(column+1)+" / "+(textArea.getLineEndOffset(row)-textArea.getLineStartOffset(row)) +" "+factnum+" ַ"+textArea.getLineEndOffset(textArea.getLineCount()-1)); - // ״̬ʾǰкšк + // ״̬ʾǰкšк } catch (Exception ex) {} } @@ -539,6 +581,17 @@ public class window extends JFrame { addPopup(toolBar, popupMenu_1); JCheckBox xianshicaidanlan1 = new JCheckBox("\u663E\u793A\u83DC\u5355\u680F"); + xianshicaidanlan1.addItemListener(new ItemListener() { + public void itemStateChanged(ItemEvent e) { + if(xianshicaidanlan1.isSelected()) { + menuBar1.setVisible(true); + } //һѡǷʾ˵ + else { + menuBar1.setVisible(false); + } + } + }); + xianshicaidanlan1.setSelected(true); popupMenu_1.add(xianshicaidanlan1); } -- Gitee From e38cd869609f99c90d3940fe9757a09281b69a5d Mon Sep 17 00:00:00 2001 From: ljh <1585739602@qq.com> Date: Sun, 15 May 2022 17:02:12 +0800 Subject: [PATCH 08/20] =?UTF-8?q?=E7=AC=AC5=E6=AC=A1=E6=8F=90=E4=BA=A4?= =?UTF-8?q?=EF=BC=9A=E5=AE=8C=E6=95=B4=E5=AE=9E=E7=8E=B0=E4=BA=86=E6=A0=BC?= =?UTF-8?q?=E5=BC=8F=E6=A0=8F=E9=87=8C=E7=9A=84=E5=AD=97=E4=BD=93=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=EF=BC=8C=E5=8F=AF=E6=94=B9=E5=8F=98=E6=96=87=E6=9C=AC?= =?UTF-8?q?=E5=8C=BA=E5=AD=97=E4=BD=93=E7=9A=84=E5=A4=A7=E5=B0=8F=EF=BC=8C?= =?UTF-8?q?=E9=A2=9C=E8=89=B2=EF=BC=8C=E6=A0=B7=E5=BC=8F=E7=AD=89=EF=BC=8C?= =?UTF-8?q?=E5=B9=B6=E4=B8=94=E8=A1=8C=E5=8F=B7=E6=98=BE=E7=A4=BA=E6=A0=8F?= =?UTF-8?q?=E4=B9=9F=E9=9A=8F=E4=B9=8B=E5=8F=98=E5=8C=96=EF=BC=8C=E4=B8=8D?= =?UTF-8?q?=E4=BC=9A=E4=BA=A7=E7=94=9F=E2=80=9C=E9=94=99=E4=BD=8D=E2=80=9D?= =?UTF-8?q?=E7=8E=B0=E8=B1=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/myNotepad/FontSet.java | 180 +++++++++++++++++++++++++++++++++++++ src/myNotepad/window.java | 130 +++++++++++++++++---------- 2 files changed, 264 insertions(+), 46 deletions(-) create mode 100644 src/myNotepad/FontSet.java diff --git a/src/myNotepad/FontSet.java b/src/myNotepad/FontSet.java new file mode 100644 index 0000000..849e9b9 --- /dev/null +++ b/src/myNotepad/FontSet.java @@ -0,0 +1,180 @@ +package myNotepad; + +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.FlowLayout; +import javax.swing.JButton; +import javax.swing.JColorChooser; +import javax.swing.JDialog; +import javax.swing.JFrame; +import javax.swing.JPanel; +import javax.swing.JTextArea; +import javax.swing.border.EmptyBorder; +import java.awt.Label; +import javax.swing.JLabel; +import java.awt.Font; +import java.awt.GraphicsEnvironment; + +import javax.swing.JComboBox; +import javax.swing.SwingConstants; +import javax.swing.WindowConstants; + +import java.awt.event.ActionListener; +import java.awt.event.ActionEvent; +import java.awt.event.ItemListener; +import java.awt.event.ItemEvent; + +public class FontSet { + + public FontSet(JTextArea text1,JTextArea text2) { + JDialog jd= new JDialog(); + jd.setVisible(true); + jd.setBounds(100, 100, 490, 350); + jd.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); + + JPanel contentPanel = new JPanel(); + JPanel buttonPane = new JPanel(); + buttonPane.setLayout(new FlowLayout(FlowLayout.RIGHT)); + contentPanel.setLayout(null); + jd.getContentPane().add(buttonPane, BorderLayout.SOUTH); + jd.getContentPane().add(contentPanel, BorderLayout.CENTER); + + + JLabel lblNewLabel = new JLabel("\u5B57\u4F53\uFF1A"); + lblNewLabel.setFont(new Font("", Font.PLAIN, 15)); + lblNewLabel.setBounds(16, 10, 76, 26); + contentPanel.add(lblNewLabel); + + + JLabel lblNewLabel_1 = new JLabel("\u6837\u5F0F\uFF1A"); + lblNewLabel_1.setFont(new Font("", Font.PLAIN, 15)); + lblNewLabel_1.setBounds(270, 10, 76, 26); + contentPanel.add(lblNewLabel_1); + + + JLabel lblNewLabel_2 = new JLabel("\u5927\u5C0F\uFF1A"); + lblNewLabel_2.setFont(new Font("", Font.PLAIN, 15)); + lblNewLabel_2.setBounds(400, 10, 76, 26); + contentPanel.add(lblNewLabel_2); + + + GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); + String[] type = ge.getAvailableFontFamilyNames(); + String[] style=new String[]{"","б","","ƫб"}; + Integer[] size=new Integer[68]; + for (int i = 0,n=5; i < size.length; i++) { + size[i]=n++; + } + + JComboBox comboBox = new JComboBox(type); + comboBox.setSelectedIndex(235); + comboBox.setBounds(16, 30, 210, 26); + contentPanel.add(comboBox); + + JComboBox comboBox_1 = new JComboBox(style); + comboBox_1.setBounds(270, 30, 90, 26); + contentPanel.add(comboBox_1); + + JComboBox comboBox_2 = new JComboBox(size); + comboBox_2.setSelectedIndex(8); + comboBox_2.setBounds(400, 30, 60, 26); + contentPanel.add(comboBox_2); + + JLabel jlb = new JLabel("AaBbCc"); + jlb.setFont(new Font("΢ź", Font.PLAIN, 13)); + jlb.setBounds(58, 122, 400, 150); + contentPanel.add(jlb); + + + comboBox.addItemListener(new ItemListener() { + public void itemStateChanged(ItemEvent e) { + if (e.getStateChange() == ItemEvent.SELECTED) { //ѡ״̬ + jlb.setFont(new Font((String) comboBox.getSelectedItem(), //ÿ + jlb.getFont().getStyle(), jlb.getFont().getSize())); + } + } + }); + + + + comboBox_1.addItemListener(new ItemListener() { + public void itemStateChanged(ItemEvent e) { + if(e.getStateChange()==ItemEvent.SELECTED) { + if(comboBox_1.getSelectedItem().equals("")) { + jlb.setFont(new Font(jlb.getFont().getName(), Font.PLAIN, + jlb.getFont().getSize())); + } + else if(comboBox_1.getSelectedItem().equals("")){ + jlb.setFont(new Font(jlb.getFont().getName(), Font.BOLD, + jlb.getFont().getSize())); + } //б + else if(comboBox_1.getSelectedItem().equals("б")){ + jlb.setFont(new Font(jlb.getFont().getName(), Font.ITALIC, + jlb.getFont().getSize())); + } + else if(comboBox_1.getSelectedItem().equals("ƫб")) { + jlb.setFont(new Font(jlb.getFont().getName(), Font.BOLD+ Font.ITALIC, + jlb.getFont().getSize())); + } + } + } + }); + + + comboBox_2.addItemListener(new ItemListener() { + public void itemStateChanged(ItemEvent e) { + if(e.getStateChange()==ItemEvent.SELECTED) { //ôС + jlb.setFont(new Font(jlb.getFont().getName(), jlb.getFont().getStyle(), + (int) comboBox_2.getSelectedItem())); + + } + } + }); + + + + JButton btnNewButton = new JButton("\u5B57\u4F53\u989C\u8272"); + btnNewButton.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + Color color = JColorChooser.showDialog(text1, "ѡȡɫ", null); + // ûȡرմ, 򷵻ص color Ϊ null + if (color == null) { + return; + } + text1.setForeground(color); //ɫ + } + }); + buttonPane.add(btnNewButton,BorderLayout.WEST); + + + JLabel lblNewLabel_3 = new JLabel(" "); + buttonPane.add(lblNewLabel_3); + + + JButton okButton = new JButton("\u786E\u5B9A"); + okButton.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + text1.setFont(jlb.getFont()); + text2.setFont(new Font(jlb.getFont().getName(),text2.getFont().getStyle(),jlb.getFont().getSize())); + jd.dispose(); + } + }); + + + + okButton.setActionCommand("OK"); + buttonPane.add(okButton); + jd.getRootPane().setDefaultButton(okButton); + + + JButton cancelButton = new JButton("\u53D6\u6D88"); + cancelButton.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + jd.dispose(); + } + }); + cancelButton.setActionCommand("Cancel"); + buttonPane.add(cancelButton); + + } +} diff --git a/src/myNotepad/window.java b/src/myNotepad/window.java index 567040c..4d05a72 100644 --- a/src/myNotepad/window.java +++ b/src/myNotepad/window.java @@ -45,6 +45,7 @@ import java.awt.event.ItemEvent; import java.awt.datatransfer.Clipboard; import java.awt.Toolkit; import java.awt.datatransfer.*; +import java.awt.Font; @@ -118,7 +119,7 @@ public class window extends JFrame { System.exit(0); } }); - tuichu1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F4, InputEvent.ALT_DOWN_MASK)); + tuichu1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, InputEvent.CTRL_DOWN_MASK | InputEvent.SHIFT_DOWN_MASK)); tuichu1.setMnemonic(KeyEvent.VK_X); wenjian.add(tuichu1); @@ -213,7 +214,7 @@ public class window extends JFrame { geshi.add(zidonghuanhang1); JMenuItem ziti1 = new JMenuItem("\u5B57\u4F53(F)"); - ziti1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F, InputEvent.SHIFT_DOWN_MASK)); + ziti1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F, InputEvent.ALT_DOWN_MASK | InputEvent.SHIFT_DOWN_MASK)); ziti1.setMnemonic(KeyEvent.VK_F); geshi.add(ziti1); @@ -236,10 +237,31 @@ public class window extends JFrame { bangzhu.setMnemonic('H'); menuBar1.add(bangzhu); + + JPanel panel = new JPanel(); + contentPane.add(panel, BorderLayout.CENTER); + panel.setLayout(new BorderLayout(0, 0)); + + JLabel lblNewLabel = new JLabel("\u72B6\u6001\u680F "); + panel.add(lblNewLabel, BorderLayout.SOUTH); + lblNewLabel.setHorizontalAlignment(SwingConstants.LEFT); + + + JScrollPane scrollPane = new JScrollPane(); + panel.add(scrollPane, BorderLayout.CENTER); + + JTextArea textArea = new JTextArea(); + textArea.setFont(new Font("΢ź", Font.PLAIN, 13)); + textArea.setLineWrap(true); + + + + + //ǰ JMenuItem chakanbangzhu1 = new JMenuItem("\u67E5\u770B\u5E2E\u52A9(H)"); - chakanbangzhu1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_H, InputEvent.SHIFT_DOWN_MASK)); + chakanbangzhu1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_H, InputEvent.CTRL_DOWN_MASK | InputEvent.SHIFT_DOWN_MASK)); chakanbangzhu1.setMnemonic(KeyEvent.VK_H); - chakanbangzhu1.addActionListener(new ActionListener() { + chakanbangzhu1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { JOptionPane.showInternalMessageDialog(null, "1.ӵиֿݼѸӦʾ\n2.ͨģʽɫģʽʱл\n" @@ -252,7 +274,7 @@ public class window extends JFrame { bangzhu.addSeparator(); JMenuItem guanyujishiben1 = new JMenuItem("\u5173\u4E8E\u8BB0\u4E8B\u672C(A)"); - guanyujishiben1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F1, InputEvent.SHIFT_DOWN_MASK)); + guanyujishiben1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A, InputEvent.CTRL_DOWN_MASK | InputEvent.SHIFT_DOWN_MASK)); guanyujishiben1.setMnemonic(KeyEvent.VK_A); guanyujishiben1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { @@ -262,42 +284,11 @@ public class window extends JFrame { }); bangzhu.add(guanyujishiben1); //ڼ±ϢԻ - JPanel panel = new JPanel(); - contentPane.add(panel, BorderLayout.CENTER); - panel.setLayout(new BorderLayout(0, 0)); + //ǰ - JLabel lblNewLabel = new JLabel("\u72B6\u6001\u680F "); - panel.add(lblNewLabel, BorderLayout.SOUTH); - lblNewLabel.setHorizontalAlignment(SwingConstants.LEFT); - xianshizhuangtailan1.addItemListener(new ItemListener() { - public void itemStateChanged(ItemEvent e) { - if(xianshizhuangtailan1.isSelected()) { //Ƿѡ״̬¼ - lblNewLabel.setVisible(true); - } - else { - lblNewLabel.setVisible(false); - } - - } - }); - - JScrollPane scrollPane = new JScrollPane(); - panel.add(scrollPane, BorderLayout.CENTER); - JTextArea textArea = new JTextArea(); - textArea.setLineWrap(true); - - zidonghuanhang1.addItemListener(new ItemListener() { - public void itemStateChanged(ItemEvent e) { - if(zidonghuanhang1.isSelected()) { //ǷԶ - textArea.setLineWrap(true); - } - else { - textArea.setLineWrap(false); - } - } - }); + //DZ༭ UndoManager undo = new UndoManager(); textArea.getDocument().addUndoableEditListener(undo); @@ -343,8 +334,8 @@ public class window extends JFrame { shanchu1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { - textArea.replaceRange("",textArea.getSelectionStart(),textArea.getSelectionEnd()); //ɾ - } + textArea.replaceRange("",textArea.getSelectionStart(),textArea.getSelectionEnd()); + } //ɾ }); quanbufuzhi1.addActionListener(new ActionListener() { @@ -364,7 +355,7 @@ public class window extends JFrame { text2.setCaretPosition(0); text2.paste(); text1.selectAll(); - text1.copy(); //а彻 + text1.copy(); //а彻 textArea.paste(); text2.selectAll(); text2.copy(); @@ -388,6 +379,12 @@ public class window extends JFrame { } }); + //DZ༭ + + + + + //Dz鿴 textArea.addCaretListener(new CaretListener() { public void caretUpdate(CaretEvent e) { @@ -400,14 +397,28 @@ public class window extends JFrame { lblNewLabel.setText(" У"+(row + 1)+" / "+textArea.getLineCount() +" У"+(column+1)+" / "+(textArea.getLineEndOffset(row)-textArea.getLineStartOffset(row)) +" "+factnum+" ַ"+textArea.getLineEndOffset(textArea.getLineCount()-1)); - // ״̬ʾǰкšк - } + + } // ״̬ʾǰкšк catch (Exception ex) {} } }); + + xianshizhuangtailan1.addItemListener(new ItemListener() { + public void itemStateChanged(ItemEvent e) { + if(xianshizhuangtailan1.isSelected()) { //Ƿʾ״̬ + lblNewLabel.setVisible(true); + } + else { + lblNewLabel.setVisible(false); + } + + } + }); + scrollPane.setViewportView(textArea); - JTextArea textArea0 = new JTextArea(); //ʾкŵʵ֡ο + JTextArea textArea0 = new JTextArea(); //Ƿʾкšο + textArea0.setFont(new Font("΢ź", Font.PLAIN, 13)); textArea0.setEditable(false); xianshihanghao1.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent e) { @@ -420,7 +431,7 @@ public class window extends JFrame { } } }); - textArea0.setBackground(Color.LIGHT_GRAY); + textArea0.setBackground(new Color(192, 192, 192)); scrollPane.setRowHeaderView(textArea0); textArea.getDocument().addDocumentListener(new DocumentListener() { @@ -447,6 +458,31 @@ public class window extends JFrame { } }); + //Dz鿴 + + + + //Ǹʽ + zidonghuanhang1.addItemListener(new ItemListener() { + public void itemStateChanged(ItemEvent e) { + if(zidonghuanhang1.isSelected()) { //ǷԶ + textArea.setLineWrap(true); + } + else { + textArea.setLineWrap(false); + } + } + }); + + ziti1.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + new FontSet(textArea,textArea0); //幦 + } + }); + + //Ǹʽ + + JPopupMenu popupMenu = new JPopupMenu(); addPopup(textArea, popupMenu); @@ -481,7 +517,7 @@ public class window extends JFrame { JToolBar toolBar = new JToolBar(); panel.add(toolBar, BorderLayout.NORTH); - JButton xjian2 = new JButton(""); //Ϊͼİť + JButton xjian2 = new JButton(""); //Ϊͼİť xjian2.setToolTipText("\u65B0\u5EFA"); toolBar.add(xjian2); ImageIcon tubiao= new ImageIcon("img\\new.jpg"); @@ -576,6 +612,8 @@ public class window extends JFrame { temp = tubiao.getImage().getScaledInstance(15,15,Image.SCALE_DEFAULT); tubiao = new ImageIcon(temp); tuichu2.setIcon(tubiao); + //Ϊͼİť + JPopupMenu popupMenu_1 = new JPopupMenu(); addPopup(toolBar, popupMenu_1); -- Gitee From bf7d16c7ea6ed17eedf9ef617bbca4b1583e606a Mon Sep 17 00:00:00 2001 From: ljh <1585739602@qq.com> Date: Mon, 16 May 2022 10:51:59 +0800 Subject: [PATCH 09/20] =?UTF-8?q?=E7=AC=AC6=E6=AC=A1=E6=8F=90=E4=BA=A4?= =?UTF-8?q?=EF=BC=9A=E5=AE=8C=E6=95=B4=E5=AE=9E=E7=8E=B0=E6=B7=B1=E8=89=B2?= =?UTF-8?q?=E6=A8=A1=E5=BC=8F=E3=80=82=E8=A7=A3=E5=86=B3=E4=BA=86=E6=9C=AA?= =?UTF-8?q?=E9=80=89=E4=B8=AD=E6=96=87=E6=9C=AC=E4=BB=8D=E8=83=BD=E4=B8=8E?= =?UTF-8?q?=E5=89=AA=E5=88=87=E6=9D=BF=E4=BA=A4=E6=8D=A2=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/myNotepad/FontSet.java | 6 +- src/myNotepad/window.java | 121 ++++++++++++++++++++++++++----------- 2 files changed, 90 insertions(+), 37 deletions(-) diff --git a/src/myNotepad/FontSet.java b/src/myNotepad/FontSet.java index 849e9b9..c87756d 100644 --- a/src/myNotepad/FontSet.java +++ b/src/myNotepad/FontSet.java @@ -24,10 +24,11 @@ import java.awt.event.ActionEvent; import java.awt.event.ItemListener; import java.awt.event.ItemEvent; -public class FontSet { +public class FontSet extends JDialog { public FontSet(JTextArea text1,JTextArea text2) { JDialog jd= new JDialog(); + jd.setTitle(""); jd.setVisible(true); jd.setBounds(100, 100, 490, 350); jd.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); @@ -137,10 +138,11 @@ public class FontSet { btnNewButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { Color color = JColorChooser.showDialog(text1, "ѡȡɫ", null); - // ûȡرմ, 򷵻ص color Ϊ null + // ûȡرմ, 򷵻ص color Ϊ null if (color == null) { return; } + jlb.setForeground(color); text1.setForeground(color); //ɫ } }); diff --git a/src/myNotepad/window.java b/src/myNotepad/window.java index 4d05a72..e8488e3 100644 --- a/src/myNotepad/window.java +++ b/src/myNotepad/window.java @@ -26,6 +26,7 @@ import javax.swing.JMenuItem; import javax.swing.JOptionPane; import javax.swing.JCheckBox; import javax.swing.SwingConstants; +import javax.swing.UIManager; import javax.swing.JScrollPane; import javax.swing.JScrollBar; import javax.swing.JToolBar; @@ -346,21 +347,16 @@ public class window extends JFrame { }); JTextArea text1= new JTextArea(); //Ϊмý - JTextArea text2= new JTextArea(); //Ϊмý yujianqiebanjiaohuan1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {//滻ܾͬԪؽҪе䵱֮ý - text1.setCaretPosition(0); - text1.paste(); - textArea.copy(); - text2.setCaretPosition(0); - text2.paste(); - text1.selectAll(); - text1.copy(); //а彻 - textArea.paste(); - text2.selectAll(); - text2.copy(); - text1.setText(""); - text2.setText(""); + if((textArea.getSelectionEnd()-textArea.getSelectionStart())!=0) { //жǷѡҪı + text1.setText(textArea.getSelectedText()); //ûѡıͲʵ + textArea.paste(); + text1.setCaretPosition(0); + text1.selectAll(); + text1.copy(); //а彻 + text1.setText(""); + } } }); @@ -461,28 +457,7 @@ public class window extends JFrame { //Dz鿴 - - //Ǹʽ - zidonghuanhang1.addItemListener(new ItemListener() { - public void itemStateChanged(ItemEvent e) { - if(zidonghuanhang1.isSelected()) { //ǷԶ - textArea.setLineWrap(true); - } - else { - textArea.setLineWrap(false); - } - } - }); - - ziti1.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - new FontSet(textArea,textArea0); //幦 - } - }); - - //Ǹʽ - - + JPopupMenu popupMenu = new JPopupMenu(); addPopup(textArea, popupMenu); @@ -615,6 +590,82 @@ public class window extends JFrame { //Ϊͼİť + + + //Ǹʽ + zidonghuanhang1.addItemListener(new ItemListener() { + public void itemStateChanged(ItemEvent e) { + if(zidonghuanhang1.isSelected()) { //ǷԶ + textArea.setLineWrap(true); + } + else { + textArea.setLineWrap(false); + } + } + }); + + ziti1.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + new FontSet(textArea,textArea0); //幦 + } + }); + + shensemoshi1.addItemListener(new ItemListener() { + public void itemStateChanged(ItemEvent e) { //ɫģʽ + if (e.getStateChange() == ItemEvent.SELECTED) { + textArea.setBackground(Color.BLACK); + textArea.setForeground(Color.WHITE); + textArea.setCaretColor(Color.WHITE); + textArea0.setBackground(Color.GRAY); + textArea0.setForeground(Color.WHITE); + panel.setBackground(Color.DARK_GRAY); + lblNewLabel.setForeground(Color.WHITE); + menuBar1.setBackground(Color.BLACK); + menuBar1.setForeground(Color.WHITE); + toolBar.setBackground(Color.BLACK); + toolBar.setForeground(Color.WHITE); + wenjian.setBackground(Color.BLACK); + wenjian.setForeground(Color.WHITE); + bianji.setBackground(Color.BLACK); + bianji.setForeground(Color.WHITE); + chakan.setBackground(Color.BLACK); + chakan.setForeground(Color.WHITE); + geshi.setBackground(Color.BLACK); + geshi.setForeground(Color.WHITE); + bangzhu.setBackground(Color.BLACK); + bangzhu.setForeground(Color.WHITE); + } + else { + textArea.setBackground(Color.WHITE); + textArea.setForeground(Color.BLACK); + textArea.setCaretColor(Color.BLACK); + textArea0.setBackground(Color.LIGHT_GRAY); + textArea0.setForeground(Color.BLACK); + panel.setBackground(UIManager.getColor("JPanel.background")); // + lblNewLabel.setForeground(Color.BLACK); + menuBar1.setBackground(UIManager.getColor("JMenBar.background")); // + menuBar1.setForeground(Color.BLACK); + toolBar.setBackground(UIManager.getColor("JToolBar.background")); // + toolBar.setForeground(Color.BLACK); + wenjian.setBackground(Color.WHITE); + wenjian.setForeground(Color.BLACK); + bianji.setBackground(Color.WHITE); + bianji.setForeground(Color.BLACK); + chakan.setBackground(Color.WHITE); + chakan.setForeground(Color.BLACK); + geshi.setBackground(Color.WHITE); + geshi.setForeground(Color.BLACK); + bangzhu.setBackground(Color.WHITE); + bangzhu.setForeground(Color.BLACK); + } + } + }); + + //Ǹʽ + + + + JPopupMenu popupMenu_1 = new JPopupMenu(); addPopup(toolBar, popupMenu_1); -- Gitee From 5582f143913a5242077e435f70baa43464a55e7a Mon Sep 17 00:00:00 2001 From: ljh <1585739602@qq.com> Date: Mon, 16 May 2022 22:40:07 +0800 Subject: [PATCH 10/20] =?UTF-8?q?=E7=AC=AC7=E6=AC=A1=E6=8F=90=E4=BA=A4?= =?UTF-8?q?=EF=BC=9A=E5=88=9D=E6=AD=A5=E5=AE=9E=E7=8E=B0=E4=BA=86=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E6=A0=8F=E9=87=8C=E7=9A=84=E4=BF=9D=E5=AD=98=E3=80=81?= =?UTF-8?q?=E6=89=93=E5=BC=80=E3=80=81=E5=8F=A6=E5=AD=98=E4=B8=BA=E4=B8=89?= =?UTF-8?q?=E4=B8=AA=E5=8A=9F=E8=83=BD=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/myNotepad/window.java | 156 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 150 insertions(+), 6 deletions(-) diff --git a/src/myNotepad/window.java b/src/myNotepad/window.java index e8488e3..0e382e7 100644 --- a/src/myNotepad/window.java +++ b/src/myNotepad/window.java @@ -5,6 +5,7 @@ import java.awt.Color; import java.awt.Component; import java.awt.Dimension; import java.awt.EventQueue; +import java.awt.FileDialog; import java.awt.Image; import javax.swing.JFrame; @@ -34,6 +35,13 @@ import javax.swing.JSeparator; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; +import java.io.BufferedOutputStream; +import java.io.BufferedReader; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.FileReader; +import java.io.IOException; import java.util.Date; import java.awt.event.ActionEvent; import javax.swing.KeyStroke; @@ -54,7 +62,13 @@ import java.awt.Font; public class window extends JFrame { private JPanel contentPane; - + private int flag=0; //жǷļ + private File file1;//ר + private File file2;//Ϊר + String name=null;//ļ/ļʱ + String path=null;//ļ·/ļʱ + String name1=null;//ļ/ļʱ + String path1=null;//ļ·/ļʱ /** * Launch the application. */ @@ -115,11 +129,6 @@ public class window extends JFrame { wenjian.addSeparator(); JMenuItem tuichu1 = new JMenuItem("\u9000\u51FA(X)"); - tuichu1.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - System.exit(0); - } - }); tuichu1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, InputEvent.CTRL_DOWN_MASK | InputEvent.SHIFT_DOWN_MASK)); tuichu1.setMnemonic(KeyEvent.VK_X); wenjian.add(tuichu1); @@ -289,6 +298,141 @@ public class window extends JFrame { + //ļ + FileDialog open = new FileDialog(this,"",FileDialog.LOAD); + FileDialog saveto = new FileDialog(this,"Ϊ",FileDialog.SAVE); + FileDialog save = new FileDialog(this,"",FileDialog.SAVE); + xinjian1.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { //½ + + } + }); + + tuichu1.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { //˳ + System.exit(0); + } + }); + + + dakai1.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { //򿪹 + if(flag==0) { //û + if(textArea.getText().equals("")) {} //ΪգԴļ + else { //ΪգǷ񱣴棬ǵĻΪĻΪգŸ + String tips="޸ı浽δ"; + int n=JOptionPane.showConfirmDialog(null, tips,"Notepad",JOptionPane.YES_NO_CANCEL_OPTION); + if(n==JOptionPane.OK_OPTION) { //δļʱıΪ + saveto.setVisible(true); + try { + file2=new File(saveto.getDirectory() + saveto.getFile()); + FileOutputStream out = new FileOutputStream(file2); + String str = textArea.getText(); + out.write(str.getBytes("UTF-8")); + out.close(); + textArea.setText(""); + } + catch (Exception ee) {} + } + else if(n==JOptionPane.NO_OPTION) { + } + else if(n==JOptionPane.CANCEL_OPTION) { + return; + } + else if(n==JOptionPane.CLOSED_OPTION) { + return; + } + } + } + else { //ѴļǷ񱣴棬ǵĻͱ棬Ÿļ + String tips="޸ı浽"; + int n=JOptionPane.showConfirmDialog(null, tips+""+name+""+"?","Notepad",JOptionPane.YES_NO_CANCEL_OPTION); + if(n==JOptionPane.OK_OPTION) { //ļʱDZ + try { + + BufferedOutputStream out= new BufferedOutputStream(new FileOutputStream(file1)); + String str = textArea.getText(); + out.write(str.getBytes("UTF-8")); + out.close(); + } + catch (Exception ee) {} + } + else if(n==JOptionPane.NO_OPTION) { //棬Ϊ + textArea.setText(""); + } + else if(n==JOptionPane.CANCEL_OPTION) { + return; + } + else if(n==JOptionPane.CLOSED_OPTION) { + return; + } + } + open.setVisible(true); + name=null; + file1=new File(open.getDirectory() + open.getFile()); + name=open.getFile(); + path=open.getDirectory(); + if(name==null)return; //жǷѡļûѡļûκβ + try { + BufferedReader in = new BufferedReader(new FileReader(file1)); + String str=null; + textArea.setText(""); + while ((str = in.readLine()) != null){ + textArea.append(str + "\n"); + } + in.close(); + } catch (Exception e1) {} + flag=1; + + } + }); + + + baocun1.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { //湦 + if(flag==1) { + try { + BufferedOutputStream out= new BufferedOutputStream(new FileOutputStream(file1)); + String str = textArea.getText(); + out.write(str.getBytes("UTF-8")); + out.close(); + } + catch (Exception ee) {} + } + else { + saveto.setVisible(true); + try { + file2=new File(saveto.getDirectory() + saveto.getFile()); + FileOutputStream out = new FileOutputStream(file2); + String str = textArea.getText(); + out.write(str.getBytes("UTF-8")); + out.close(); + } + catch (Exception ee) {} + } + } + }); + + lingcunwei1.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { //Ϊ + saveto.setVisible(true); + try { + file2=new File(saveto.getDirectory() + saveto.getFile()); + FileOutputStream out = new FileOutputStream(file2); + String str = textArea.getText(); + out.write(str.getBytes("UTF-8")); + out.close(); + } + catch (Exception ee) {} + } + }); + + + //ļ + + + + //DZ༭ UndoManager undo = new UndoManager(); -- Gitee From f6ac731b4a1d5488c2503535f3613eba3f668871 Mon Sep 17 00:00:00 2001 From: ljh <1585739602@qq.com> Date: Tue, 17 May 2022 20:12:07 +0800 Subject: [PATCH 11/20] =?UTF-8?q?=E7=AC=AC8=E6=AC=A1=E6=8F=90=E4=BA=A4?= =?UTF-8?q?=EF=BC=9A=E5=88=9D=E6=AD=A5=E5=AE=9E=E7=8E=B0=E4=BA=86=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E6=A0=8F=E9=87=8C=E7=9A=84=E9=80=80=E5=87=BA=E3=80=81?= =?UTF-8?q?=E6=96=B0=E5=BB=BA=E4=B8=A4=E4=B8=AA=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/myNotepad/window.java | 157 +++++++++++++++++++++++++++++++++++--- 1 file changed, 148 insertions(+), 9 deletions(-) diff --git a/src/myNotepad/window.java b/src/myNotepad/window.java index 0e382e7..eb3e9ee 100644 --- a/src/myNotepad/window.java +++ b/src/myNotepad/window.java @@ -63,6 +63,8 @@ public class window extends JFrame { private JPanel contentPane; private int flag=0; //жǷļ + private int flag1=0; //жǷѾ + private int flag2=0; //жǷѾΪ private File file1;//ר private File file2;//Ϊר String name=null;//ļ/ļʱ @@ -298,19 +300,152 @@ public class window extends JFrame { - //ļ FileDialog open = new FileDialog(this,"",FileDialog.LOAD); FileDialog saveto = new FileDialog(this,"Ϊ",FileDialog.SAVE); FileDialog save = new FileDialog(this,"",FileDialog.SAVE); xinjian1.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { //½ - + public void actionPerformed(ActionEvent e) { //½ + if(flag==1) { //Ѿ + if(flag1==1||flag2==1) { //ѾΪ + textArea.setText(""); + } + else { //û棬ѯ + String tips="޸ı浽"; + int n=JOptionPane.showConfirmDialog(null, tips+""+name+""+"?","Notepad",JOptionPane.YES_NO_CANCEL_OPTION); + if(n==JOptionPane.OK_OPTION) { // + try { + + BufferedOutputStream out= new BufferedOutputStream(new FileOutputStream(file1)); + String str = textArea.getText(); + out.write(str.getBytes("UTF-8")); + out.close(); + textArea.setText(""); + } + catch (Exception ee) {} + } + else if(n==JOptionPane.NO_OPTION) { //,˳ + textArea.setText(""); + } + else if(n==JOptionPane.CANCEL_OPTION) { + return; + } + else if(n==JOptionPane.CLOSED_OPTION) { + return; + } + } + } + else { //ûļ + if(textArea.getText().equals("")) {//Ϊգ + textArea.setText(""); + } + else { //ΪգǷ񱣴 + if(flag1==1||flag2==1) { + textArea.setText(""); + } + else { + String tips="޸ı浽δ"; + int n=JOptionPane.showConfirmDialog(null, tips,"Notepad",JOptionPane.YES_NO_CANCEL_OPTION); + if(n==JOptionPane.OK_OPTION) { //δļʱıΪ + saveto.setVisible(true); + try { + file2=new File(saveto.getDirectory() + saveto.getFile()); + name1=saveto.getFile(); + if(name1==null)return; + FileOutputStream out = new FileOutputStream(file2); + String str = textArea.getText(); + out.write(str.getBytes("UTF-8")); + out.close(); + textArea.setText(""); + } + catch (Exception ee) {} + } + else if(n==JOptionPane.NO_OPTION) { + textArea.setText(""); + } + else if(n==JOptionPane.CANCEL_OPTION) { + return; + } + else if(n==JOptionPane.CLOSED_OPTION) { + return; + } + } + } + } + + } }); tuichu1.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { //˳ - System.exit(0); + public void actionPerformed(ActionEvent e) { //˳ + if(flag==1) { //Ѿ + if(flag1==1||flag2==1) { //ѾΪ + System.exit(0); + } + else { //û棬ѯ + String tips="޸ı浽"; + int n=JOptionPane.showConfirmDialog(null, tips+""+name+""+"?","Notepad",JOptionPane.YES_NO_CANCEL_OPTION); + if(n==JOptionPane.OK_OPTION) { // + try { + + BufferedOutputStream out= new BufferedOutputStream(new FileOutputStream(file1)); + String str = textArea.getText(); + out.write(str.getBytes("UTF-8")); + out.close(); + System.exit(0); //˳ + } + catch (Exception ee) {} + } + else if(n==JOptionPane.NO_OPTION) { //,˳ + System.exit(0); + } + else if(n==JOptionPane.CANCEL_OPTION) { + return; + } + else if(n==JOptionPane.CLOSED_OPTION) { + return; + } + } + } + else { //ûļ + if(textArea.getText().equals("")) {//Ϊգ˳ + System.exit(0); + } + else { //ΪգǷѾ + if(flag1==1||flag2==1) { //Ѿ + System.exit(0); + } + else { + String tips="޸ı浽δ"; + int n=JOptionPane.showConfirmDialog(null, tips,"Notepad",JOptionPane.YES_NO_CANCEL_OPTION); + if(n==JOptionPane.OK_OPTION) { //δļʱıΪ + saveto.setVisible(true); + try { + file2=new File(saveto.getDirectory() + saveto.getFile()); + name1=saveto.getFile(); + if(name1==null)return; + FileOutputStream out = new FileOutputStream(file2); + String str = textArea.getText(); + out.write(str.getBytes("UTF-8")); + out.close(); + System.exit(0); + } + catch (Exception ee) {} + } + else if(n==JOptionPane.NO_OPTION) { + System.exit(0); + } + else if(n==JOptionPane.CANCEL_OPTION) { + return; + } + else if(n==JOptionPane.CLOSED_OPTION) { + return; + } + } + } + } + + } }); @@ -382,8 +517,8 @@ public class window extends JFrame { } in.close(); } catch (Exception e1) {} - flag=1; - + + flag=1; } }); @@ -410,7 +545,9 @@ public class window extends JFrame { } catch (Exception ee) {} } + flag1=1; } + }); lingcunwei1.addActionListener(new ActionListener() { @@ -424,13 +561,15 @@ public class window extends JFrame { out.close(); } catch (Exception ee) {} - } + flag2=1; + } }); //ļ - + + //DZ༭ -- Gitee From a5dd27186da9f2cc67b6afc535fa3ec1591b1372 Mon Sep 17 00:00:00 2001 From: ljh <1585739602@qq.com> Date: Wed, 18 May 2022 20:18:30 +0800 Subject: [PATCH 12/20] =?UTF-8?q?=E7=AC=AC9=E6=AC=A1=E6=8F=90=E4=BA=A4?= =?UTF-8?q?=EF=BC=9A=E5=AE=8C=E5=96=84=E4=BA=86=E4=BF=9D=E5=AD=98=E3=80=81?= =?UTF-8?q?=E5=8F=A6=E5=AD=98=E4=B8=BA=E3=80=81=E6=89=93=E5=BC=80=E3=80=81?= =?UTF-8?q?=E6=96=B0=E5=BB=BA=E3=80=81=E6=89=93=E5=BC=80=E8=BF=99=E4=BA=94?= =?UTF-8?q?=E4=B8=AA=E5=8A=9F=E8=83=BD=E4=B9=8B=E9=97=B4=E7=9A=84=E5=85=B3?= =?UTF-8?q?=E7=B3=BB=EF=BC=8C=E4=B8=8D=E5=90=8C=E7=8A=B6=E6=80=81=E4=B8=8B?= =?UTF-8?q?=E4=BC=9A=E7=9B=B8=E5=BA=94=E5=9C=B0=E5=BC=B9=E5=87=BA=E6=98=AF?= =?UTF-8?q?=E5=90=A6=E4=BF=9D=E5=AD=98=E7=AA=97=E5=8F=A3=E7=AD=89=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/myNotepad/window.java | 190 ++++++++++++++++++++++++++------------ 1 file changed, 131 insertions(+), 59 deletions(-) diff --git a/src/myNotepad/window.java b/src/myNotepad/window.java index eb3e9ee..cc1b964 100644 --- a/src/myNotepad/window.java +++ b/src/myNotepad/window.java @@ -99,8 +99,8 @@ public class window extends JFrame { contentPane.setLayout(new BorderLayout(0, 0)); this.setIconImage(new ImageIcon("img\\notepad.jpg").getImage()); - this.setTitle(" Notepad"); - +// this.setTitle(" *δ - Notepad"); + this.setTitle("δ - Notepad"); JMenuBar menuBar1 = new JMenuBar(); contentPane.add(menuBar1, BorderLayout.NORTH); @@ -298,33 +298,41 @@ public class window extends JFrame { //ǰ + + //ļ - - FileDialog open = new FileDialog(this,"",FileDialog.LOAD); - FileDialog saveto = new FileDialog(this,"Ϊ",FileDialog.SAVE); - FileDialog save = new FileDialog(this,"",FileDialog.SAVE); + FileDialog open = new FileDialog(this,"",FileDialog.LOAD); //ļ + FileDialog saveto = new FileDialog(this,"Ϊ",FileDialog.SAVE); //Ϊļ xinjian1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { //½ - if(flag==1) { //Ѿ - if(flag1==1||flag2==1) { //ѾΪ + if(flag==1) { //Ѿļ + if(flag1==1||flag2==1) { //ѾΪΪ textArea.setText(""); + flag1=0; + flag2=0; + flag=0; } - else { //û棬ѯ + else { //û棬ѯǷ񱣴 String tips="޸ı浽"; int n=JOptionPane.showConfirmDialog(null, tips+""+name+""+"?","Notepad",JOptionPane.YES_NO_CANCEL_OPTION); if(n==JOptionPane.OK_OPTION) { // try { - BufferedOutputStream out= new BufferedOutputStream(new FileOutputStream(file1)); String str = textArea.getText(); out.write(str.getBytes("UTF-8")); out.close(); textArea.setText(""); + flag1=0; + flag2=0; + flag=0; } catch (Exception ee) {} } - else if(n==JOptionPane.NO_OPTION) { //,˳ + else if(n==JOptionPane.NO_OPTION) { //棬Ϊ textArea.setText(""); + flag1=0; + flag2=0; + flag=0; } else if(n==JOptionPane.CANCEL_OPTION) { return; @@ -335,14 +343,17 @@ public class window extends JFrame { } } else { //ûļ - if(textArea.getText().equals("")) {//Ϊգ + if(textArea.getText().equals("")) {//Ϊգ textArea.setText(""); } - else { //ΪգǷ񱣴 - if(flag1==1||flag2==1) { + else { //Ϊ + if(flag1==1||flag2==1) { //Ѿ textArea.setText(""); + flag1=0; + flag2=0; + flag=0; } - else { + else { //û棬ѯ String tips="޸ı浽δ"; int n=JOptionPane.showConfirmDialog(null, tips,"Notepad",JOptionPane.YES_NO_CANCEL_OPTION); if(n==JOptionPane.OK_OPTION) { //δļʱıΪ @@ -350,17 +361,24 @@ public class window extends JFrame { try { file2=new File(saveto.getDirectory() + saveto.getFile()); name1=saveto.getFile(); + path1=saveto.getDirectory(); if(name1==null)return; FileOutputStream out = new FileOutputStream(file2); String str = textArea.getText(); out.write(str.getBytes("UTF-8")); out.close(); textArea.setText(""); + flag1=0; + flag2=0; + flag=0; } catch (Exception ee) {} } else if(n==JOptionPane.NO_OPTION) { textArea.setText(""); + flag1=0; + flag2=0; + flag=0; } else if(n==JOptionPane.CANCEL_OPTION) { return; @@ -387,7 +405,6 @@ public class window extends JFrame { int n=JOptionPane.showConfirmDialog(null, tips+""+name+""+"?","Notepad",JOptionPane.YES_NO_CANCEL_OPTION); if(n==JOptionPane.OK_OPTION) { // try { - BufferedOutputStream out= new BufferedOutputStream(new FileOutputStream(file1)); String str = textArea.getText(); out.write(str.getBytes("UTF-8")); @@ -415,7 +432,7 @@ public class window extends JFrame { if(flag1==1||flag2==1) { //Ѿ System.exit(0); } - else { + else { //û棬ѯ String tips="޸ı浽δ"; int n=JOptionPane.showConfirmDialog(null, tips,"Notepad",JOptionPane.YES_NO_CANCEL_OPTION); if(n==JOptionPane.OK_OPTION) { //δļʱıΪ @@ -423,6 +440,7 @@ public class window extends JFrame { try { file2=new File(saveto.getDirectory() + saveto.getFile()); name1=saveto.getFile(); + path1=saveto.getDirectory(); if(name1==null)return; FileOutputStream out = new FileOutputStream(file2); String str = textArea.getText(); @@ -454,22 +472,57 @@ public class window extends JFrame { public void actionPerformed(ActionEvent e) { //򿪹 if(flag==0) { //û if(textArea.getText().equals("")) {} //ΪգԴļ - else { //ΪգǷ񱣴棬ǵĻΪĻΪգŸ - String tips="޸ı浽δ"; - int n=JOptionPane.showConfirmDialog(null, tips,"Notepad",JOptionPane.YES_NO_CANCEL_OPTION); - if(n==JOptionPane.OK_OPTION) { //δļʱıΪ - saveto.setVisible(true); + else { //Ϊգ + if(flag1==1||flag2==1) { //Ѿ + } + else { //û + String tips="޸ı浽δ"; + int n=JOptionPane.showConfirmDialog(null, tips,"Notepad",JOptionPane.YES_NO_CANCEL_OPTION); + if(n==JOptionPane.OK_OPTION) { //δļʱıΪ + saveto.setVisible(true); + try { + file2=new File(saveto.getDirectory() + saveto.getFile()); + name1=saveto.getFile(); + path1=saveto.getDirectory(); + if(name1==null)return; + FileOutputStream out = new FileOutputStream(file2); + String str = textArea.getText(); + out.write(str.getBytes("UTF-8")); + out.close(); + textArea.setText(""); + flag2=1; + } + catch (Exception ee) {} + } + else if(n==JOptionPane.NO_OPTION) { + } + else if(n==JOptionPane.CANCEL_OPTION) { + return; + } + else if(n==JOptionPane.CLOSED_OPTION) { + return; + } + } + } + } + else { //Ѵļ + if(flag1==1||flag2==1) { //Ѿ + } + else { //û + String tips="޸ı浽"; + int n=JOptionPane.showConfirmDialog(null, tips+""+name+""+"?","Notepad",JOptionPane.YES_NO_CANCEL_OPTION); + if(n==JOptionPane.OK_OPTION) { //ļʱDZ try { - file2=new File(saveto.getDirectory() + saveto.getFile()); - FileOutputStream out = new FileOutputStream(file2); + + BufferedOutputStream out= new BufferedOutputStream(new FileOutputStream(file1)); String str = textArea.getText(); out.write(str.getBytes("UTF-8")); out.close(); - textArea.setText(""); + flag1=1; } catch (Exception ee) {} } - else if(n==JOptionPane.NO_OPTION) { + else if(n==JOptionPane.NO_OPTION) { //棬Ϊ } else if(n==JOptionPane.CANCEL_OPTION) { return; @@ -479,33 +532,9 @@ public class window extends JFrame { } } } - else { //ѴļǷ񱣴棬ǵĻͱ棬Ÿļ - String tips="޸ı浽"; - int n=JOptionPane.showConfirmDialog(null, tips+""+name+""+"?","Notepad",JOptionPane.YES_NO_CANCEL_OPTION); - if(n==JOptionPane.OK_OPTION) { //ļʱDZ - try { - - BufferedOutputStream out= new BufferedOutputStream(new FileOutputStream(file1)); - String str = textArea.getText(); - out.write(str.getBytes("UTF-8")); - out.close(); - } - catch (Exception ee) {} - } - else if(n==JOptionPane.NO_OPTION) { //棬Ϊ - textArea.setText(""); - } - else if(n==JOptionPane.CANCEL_OPTION) { - return; - } - else if(n==JOptionPane.CLOSED_OPTION) { - return; - } - } open.setVisible(true); - name=null; file1=new File(open.getDirectory() + open.getFile()); - name=open.getFile(); + name=open.getFile(); //õļ path=open.getDirectory(); if(name==null)return; //жǷѡļûѡļûκβ try { @@ -516,36 +545,45 @@ public class window extends JFrame { textArea.append(str + "\n"); } in.close(); + flag=1; } catch (Exception e1) {} - flag=1; + } }); baocun1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { //湦 - if(flag==1) { + if(flag==1) { //Ѿļ try { BufferedOutputStream out= new BufferedOutputStream(new FileOutputStream(file1)); String str = textArea.getText(); out.write(str.getBytes("UTF-8")); out.close(); + flag1=1; + flag=1; } catch (Exception ee) {} } - else { + else { //ûļ saveto.setVisible(true); try { file2=new File(saveto.getDirectory() + saveto.getFile()); + name1=saveto.getFile(); + path1=saveto.getDirectory(); + if(name1==null)return; FileOutputStream out = new FileOutputStream(file2); String str = textArea.getText(); out.write(str.getBytes("UTF-8")); out.close(); + flag1=1; + flag=1; + name=saveto.getFile(); //Ϊ֮ļ൱Ѿһļ + file1=new File(saveto.getDirectory() + saveto.getFile()); //൱ڵĿļ } catch (Exception ee) {} } - flag1=1; } }); @@ -555,13 +593,20 @@ public class window extends JFrame { saveto.setVisible(true); try { file2=new File(saveto.getDirectory() + saveto.getFile()); + name1=saveto.getFile(); + path1=saveto.getDirectory(); + if(name1==null)return; FileOutputStream out = new FileOutputStream(file2); String str = textArea.getText(); out.write(str.getBytes("UTF-8")); out.close(); + flag2=1; + flag=1; + name=saveto.getFile(); //Ϊ֮ļ൱Ѿһļ + file1=new File(saveto.getDirectory() + saveto.getFile()); //൱ڵĿļ } catch (Exception ee) {} - flag2=1; + } }); @@ -675,9 +720,24 @@ public class window extends JFrame { int factnum=content.length(); lblNewLabel.setText(" У"+(row + 1)+" / "+textArea.getLineCount() +" У"+(column+1)+" / "+(textArea.getLineEndOffset(row)-textArea.getLineStartOffset(row)) - +" "+factnum+" ַ"+textArea.getLineEndOffset(textArea.getLineCount()-1)); - - } // ״̬ʾǰкšк + +" "+factnum+" ַ"+textArea.getLineEndOffset(textArea.getLineCount()-1)); + // ״̬ʾǰкšк + flag1=0; + flag2=0; + settitle(); +// if(flag==1) { //Ѿļ +// if(flag1==1||flag2==1) { //Ѿ +// settitle(name1+" ["+path1+"]"); +// } +// else { //û +// settitle("*"+name1+" ["+path1+"]"); +// } +// } //ôڱ +// else { //ûļ +// settitle("*δ"); +// } + + } catch (Exception ex) {} } }); @@ -968,6 +1028,18 @@ public class window extends JFrame { } + private void settitle(String s) { + this.setTitle(s+" - Notepad"); + } //֣Ӧ򿪵ļ + + private void settitle() { //༭ʱǰӸ * + String str=getTitle(); + char[] c=new char[50]; + c=str.toCharArray(); + if(c[0]=='*')return; + this.setTitle("*"+getTitle()); + } + private static void addPopup(Component component, final JPopupMenu popup) { component.addMouseListener(new MouseAdapter() { public void mousePressed(MouseEvent e) { -- Gitee From 3147aabd86649cb2966b0d7409fcc1e933f30634 Mon Sep 17 00:00:00 2001 From: ljh <1585739602@qq.com> Date: Thu, 19 May 2022 13:39:12 +0800 Subject: [PATCH 13/20] =?UTF-8?q?=E7=AC=AC10=E6=AC=A1=E6=8F=90=E4=BA=A4?= =?UTF-8?q?=EF=BC=9A=E5=AE=8C=E5=85=A8=E5=AE=9E=E7=8E=B0=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E6=A0=8F=E7=9A=84=E6=89=80=E6=9C=89=E5=8A=9F=E8=83=BD=EF=BC=8C?= =?UTF-8?q?=E5=AE=8C=E5=85=A8=E6=A8=A1=E4=BB=BFnotepad=EF=BC=8Cjframe?= =?UTF-8?q?=E7=9A=84=E6=A0=87=E9=A2=98=E6=A0=8F=E4=BC=9A=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E5=AF=B9=E5=BA=94=E7=9A=84=E6=96=87=E4=BB=B6=E5=90=8D=E5=AD=97?= =?UTF-8?q?=E5=92=8C=E8=B7=AF=E5=BE=84=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/myNotepad/window.java | 66 ++++++++++++++++++++++++++------------- 1 file changed, 44 insertions(+), 22 deletions(-) diff --git a/src/myNotepad/window.java b/src/myNotepad/window.java index cc1b964..f7f5c4a 100644 --- a/src/myNotepad/window.java +++ b/src/myNotepad/window.java @@ -311,6 +311,7 @@ public class window extends JFrame { flag1=0; flag2=0; flag=0; + settitle("δ"); } else { //û棬ѯǷ񱣴 String tips="޸ı浽"; @@ -325,6 +326,7 @@ public class window extends JFrame { flag1=0; flag2=0; flag=0; + settitle("δ"); } catch (Exception ee) {} } @@ -333,6 +335,7 @@ public class window extends JFrame { flag1=0; flag2=0; flag=0; + settitle("δ"); } else if(n==JOptionPane.CANCEL_OPTION) { return; @@ -345,6 +348,7 @@ public class window extends JFrame { else { //ûļ if(textArea.getText().equals("")) {//Ϊգ textArea.setText(""); + settitle("δ"); } else { //Ϊ if(flag1==1||flag2==1) { //Ѿ @@ -352,6 +356,7 @@ public class window extends JFrame { flag1=0; flag2=0; flag=0; + settitle("δ"); } else { //û棬ѯ String tips="޸ı浽δ"; @@ -371,6 +376,7 @@ public class window extends JFrame { flag1=0; flag2=0; flag=0; + settitle("δ"); } catch (Exception ee) {} } @@ -379,6 +385,7 @@ public class window extends JFrame { flag1=0; flag2=0; flag=0; + settitle("δ"); } else if(n==JOptionPane.CANCEL_OPTION) { return; @@ -489,8 +496,9 @@ public class window extends JFrame { String str = textArea.getText(); out.write(str.getBytes("UTF-8")); out.close(); - textArea.setText(""); + settitle(name1+" ["+path1+"]"); flag2=1; + } catch (Exception ee) {} } @@ -519,6 +527,7 @@ public class window extends JFrame { out.write(str.getBytes("UTF-8")); out.close(); flag1=1; + settitle(name+" ["+path+"]"); } catch (Exception ee) {} } @@ -537,6 +546,7 @@ public class window extends JFrame { name=open.getFile(); //õļ path=open.getDirectory(); if(name==null)return; //жǷѡļûѡļûκβ + textArea.setText(""); try { BufferedReader in = new BufferedReader(new FileReader(file1)); String str=null; @@ -545,7 +555,8 @@ public class window extends JFrame { textArea.append(str + "\n"); } in.close(); - flag=1; + flag=1; + settitle(name+" ["+path+"]"); } catch (Exception e1) {} @@ -563,6 +574,7 @@ public class window extends JFrame { out.close(); flag1=1; flag=1; + settitle(name+" ["+path+"]"); } catch (Exception ee) {} } @@ -579,7 +591,9 @@ public class window extends JFrame { out.close(); flag1=1; flag=1; + settitle(name1+" ["+path1+"]"); name=saveto.getFile(); //Ϊ֮ļ൱Ѿһļ + path=saveto.getDirectory(); file1=new File(saveto.getDirectory() + saveto.getFile()); //൱ڵĿļ } catch (Exception ee) {} @@ -602,7 +616,9 @@ public class window extends JFrame { out.close(); flag2=1; flag=1; + settitle(name1+" ["+path1+"]"); name=saveto.getFile(); //Ϊ֮ļ൱Ѿһļ + path=saveto.getDirectory(); file1=new File(saveto.getDirectory() + saveto.getFile()); //൱ڵĿļ } catch (Exception ee) {} @@ -722,21 +738,6 @@ public class window extends JFrame { +" У"+(column+1)+" / "+(textArea.getLineEndOffset(row)-textArea.getLineStartOffset(row)) +" "+factnum+" ַ"+textArea.getLineEndOffset(textArea.getLineCount()-1)); // ״̬ʾǰкšк - flag1=0; - flag2=0; - settitle(); -// if(flag==1) { //Ѿļ -// if(flag1==1||flag2==1) { //Ѿ -// settitle(name1+" ["+path1+"]"); -// } -// else { //û -// settitle("*"+name1+" ["+path1+"]"); -// } -// } //ôڱ -// else { //ûļ -// settitle("*δ"); -// } - } catch (Exception ex) {} } @@ -775,11 +776,32 @@ public class window extends JFrame { textArea.getDocument().addDocumentListener(new DocumentListener() { public String getText() { - int caretPosition = textArea.getDocument().getLength(); - Element root = textArea.getDocument().getDefaultRootElement(); // - String text ="1" + System.getProperty("line.separator"); - for(int i = 2; i < root.getElementIndex(caretPosition) + 2; i++) { - text += i + System.getProperty("line.separator"); //line.separator + settitle(); //ٱǰӸ * ţ˵ѾģΪ + flag1=0; + flag2=0; +// if(flag==1) { //Ѿļ +// if(flag1==1||flag2==1) { //Ѿ +// settitle(name1+" ["+path1+"]"); +// } +// else { //û +// settitle("*"+name1+" ["+path1+"]"); +// } +// } //ôڱ +// else { //ûļ +// if(flag1==1||flag2==1) { // +// settitle(name1+" ["+path1+"]"); +// } +// else { //û +// settitle("*δ"); +// } +// } +// + int caretPosition = textArea.getDocument().getLength(); + Element root = textArea.getDocument().getDefaultRootElement(); // + String text ="1" + System.getProperty("line.separator"); + for(int i = 2; i < root.getElementIndex(caretPosition) + 2; i++) { + text += i + System.getProperty("line.separator"); //line.separator + } return text; } -- Gitee From ca961cbd7373df67da97c613dcf6644008f42062 Mon Sep 17 00:00:00 2001 From: ljh <1585739602@qq.com> Date: Fri, 20 May 2022 15:47:19 +0800 Subject: [PATCH 14/20] =?UTF-8?q?=E7=AC=AC11=E6=AC=A1=E6=8F=90=E4=BA=A4?= =?UTF-8?q?=EF=BC=9A=E5=AE=9E=E7=8E=B0=E4=BA=86=E5=8F=B3=E5=87=BB=E9=BC=A0?= =?UTF-8?q?=E6=A0=87=E5=87=BA=E7=8E=B0=E7=9A=84=E8=8F=9C=E5=8D=95=E9=87=8C?= =?UTF-8?q?=E7=9A=84=E6=89=80=E6=9C=89=E5=8A=9F=E8=83=BD=E5=92=8C=E9=83=A8?= =?UTF-8?q?=E5=88=86=E5=B7=A5=E5=85=B7=E6=A0=8F=E6=8C=89=E9=92=AE=E7=9A=84?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E3=80=82=E8=A7=A3=E5=86=B3=E4=BA=86=E5=85=B3?= =?UTF-8?q?=E9=97=AD=E7=AA=97=E5=8F=A3=E6=97=B6=E4=B8=8D=E8=AF=A2=E9=97=AE?= =?UTF-8?q?=E6=98=AF=E5=90=A6=E4=BF=9D=E5=AD=98=E7=9A=84=E9=97=AE=E9=A2=98?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/myNotepad/FontSet.java | 4 +- src/myNotepad/window.java | 448 ++++++++++++++++++++++++++++++++++++- 2 files changed, 448 insertions(+), 4 deletions(-) diff --git a/src/myNotepad/FontSet.java b/src/myNotepad/FontSet.java index c87756d..a047759 100644 --- a/src/myNotepad/FontSet.java +++ b/src/myNotepad/FontSet.java @@ -143,7 +143,6 @@ public class FontSet extends JDialog { return; } jlb.setForeground(color); - text1.setForeground(color); //ɫ } }); buttonPane.add(btnNewButton,BorderLayout.WEST); @@ -156,7 +155,8 @@ public class FontSet extends JDialog { JButton okButton = new JButton("\u786E\u5B9A"); okButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { - text1.setFont(jlb.getFont()); + text1.setFont(jlb.getFont()); //ı֣ıֵࡢʽСͬJLabel + text1.setForeground(jlb.getForeground()); //ııɫ text2.setFont(new Font(jlb.getFont().getName(),text2.getFont().getStyle(),jlb.getFont().getSize())); jd.dispose(); } diff --git a/src/myNotepad/window.java b/src/myNotepad/window.java index f7f5c4a..9b30689 100644 --- a/src/myNotepad/window.java +++ b/src/myNotepad/window.java @@ -35,6 +35,8 @@ import javax.swing.JSeparator; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; import java.io.BufferedOutputStream; import java.io.BufferedReader; import java.io.File; @@ -91,7 +93,7 @@ public class window extends JFrame { * Create the frame. */ public window() { - setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); setBounds(100, 100, 750, 500); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); @@ -828,36 +830,169 @@ public class window extends JFrame { addPopup(textArea, popupMenu); JMenuItem chexiao3 = new JMenuItem("\u64A4\u9500"); + chexiao3.addActionListener(new ActionListener() { //һij + public void actionPerformed(ActionEvent e) { + if(undo.canUndo()) + undo.undo(); + } + }); popupMenu.add(chexiao3); JMenuItem chongzuo3 = new JMenuItem("\u91CD\u505A"); + chongzuo3.addActionListener(new ActionListener() { //һ + public void actionPerformed(ActionEvent e) { + if(undo.canRedo()) + undo.redo(); + } + }); popupMenu.add(chongzuo3); JSeparator separator = new JSeparator(); popupMenu.add(separator); JMenuItem jianqie3 = new JMenuItem("\u526A\u5207"); + jianqie3.addActionListener(new ActionListener() { //һļ + public void actionPerformed(ActionEvent e) { + textArea.cut(); + } + }); popupMenu.add(jianqie3); JMenuItem fuzhi3 = new JMenuItem("\u590D\u5236"); + fuzhi3.addActionListener(new ActionListener() { //һĸ + public void actionPerformed(ActionEvent e) { + textArea.copy(); + } + }); popupMenu.add(fuzhi3); JMenuItem zhantie3 = new JMenuItem("\u7C98\u8D34"); + zhantie3.addActionListener(new ActionListener() { //һճ + public void actionPerformed(ActionEvent e) { + textArea.paste(); + } + }); popupMenu.add(zhantie3); JMenuItem shanchu3 = new JMenuItem("\u5220\u9664"); + shanchu3.addActionListener(new ActionListener() { //һɾ + public void actionPerformed(ActionEvent e) { + textArea.replaceRange("",textArea.getSelectionStart(),textArea.getSelectionEnd()); + } + }); popupMenu.add(shanchu3); JSeparator separator_1 = new JSeparator(); popupMenu.add(separator_1); JMenuItem quanxuan3 = new JMenuItem("\u5168\u9009"); + quanxuan3.addActionListener(new ActionListener() { //һȫѡ + public void actionPerformed(ActionEvent e) { + textArea.selectAll(); + } + }); popupMenu.add(quanxuan3); JToolBar toolBar = new JToolBar(); panel.add(toolBar, BorderLayout.NORTH); JButton xjian2 = new JButton(""); //Ϊͼİť + xjian2.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { //½İť + if(flag==1) { //Ѿļ + if(flag1==1||flag2==1) { //ѾΪΪ + textArea.setText(""); + flag1=0; + flag2=0; + flag=0; + settitle("δ"); + } + else { //û棬ѯǷ񱣴 + String tips="޸ı浽"; + int n=JOptionPane.showConfirmDialog(null, tips+""+name+""+"?","Notepad",JOptionPane.YES_NO_CANCEL_OPTION); + if(n==JOptionPane.OK_OPTION) { // + try { + BufferedOutputStream out= new BufferedOutputStream(new FileOutputStream(file1)); + String str = textArea.getText(); + out.write(str.getBytes("UTF-8")); + out.close(); + textArea.setText(""); + flag1=0; + flag2=0; + flag=0; + settitle("δ"); + } + catch (Exception ee) {} + } + else if(n==JOptionPane.NO_OPTION) { //棬Ϊ + textArea.setText(""); + flag1=0; + flag2=0; + flag=0; + settitle("δ"); + } + else if(n==JOptionPane.CANCEL_OPTION) { + return; + } + else if(n==JOptionPane.CLOSED_OPTION) { + return; + } + } + } + else { //ûļ + if(textArea.getText().equals("")) {//Ϊգ + textArea.setText(""); + settitle("δ"); + } + else { //Ϊ + if(flag1==1||flag2==1) { //Ѿ + textArea.setText(""); + flag1=0; + flag2=0; + flag=0; + settitle("δ"); + } + else { //û棬ѯ + String tips="޸ı浽δ"; + int n=JOptionPane.showConfirmDialog(null, tips,"Notepad",JOptionPane.YES_NO_CANCEL_OPTION); + if(n==JOptionPane.OK_OPTION) { //δļʱıΪ + saveto.setVisible(true); + try { + file2=new File(saveto.getDirectory() + saveto.getFile()); + name1=saveto.getFile(); + path1=saveto.getDirectory(); + if(name1==null)return; + FileOutputStream out = new FileOutputStream(file2); + String str = textArea.getText(); + out.write(str.getBytes("UTF-8")); + out.close(); + textArea.setText(""); + flag1=0; + flag2=0; + flag=0; + settitle("δ"); + } + catch (Exception ee) {} + } + else if(n==JOptionPane.NO_OPTION) { + textArea.setText(""); + flag1=0; + flag2=0; + flag=0; + settitle("δ"); + } + else if(n==JOptionPane.CANCEL_OPTION) { + return; + } + else if(n==JOptionPane.CLOSED_OPTION) { + return; + } + } + } + } + + } + }); xjian2.setToolTipText("\u65B0\u5EFA"); toolBar.add(xjian2); ImageIcon tubiao= new ImageIcon("img\\new.jpg"); @@ -866,6 +1001,93 @@ public class window extends JFrame { xjian2.setIcon(tubiao); JButton dakai2 = new JButton(""); + dakai2.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { //򿪵İť + if(flag==0) { //û + if(textArea.getText().equals("")) {} //ΪգԴļ + else { //Ϊգ + if(flag1==1||flag2==1) { //Ѿ + } + else { //û + String tips="޸ı浽δ"; + int n=JOptionPane.showConfirmDialog(null, tips,"Notepad",JOptionPane.YES_NO_CANCEL_OPTION); + if(n==JOptionPane.OK_OPTION) { //δļʱıΪ + saveto.setVisible(true); + try { + file2=new File(saveto.getDirectory() + saveto.getFile()); + name1=saveto.getFile(); + path1=saveto.getDirectory(); + if(name1==null)return; + FileOutputStream out = new FileOutputStream(file2); + String str = textArea.getText(); + out.write(str.getBytes("UTF-8")); + out.close(); + settitle(name1+" ["+path1+"]"); + flag2=1; + + } + catch (Exception ee) {} + } + else if(n==JOptionPane.NO_OPTION) { + } + else if(n==JOptionPane.CANCEL_OPTION) { + return; + } + else if(n==JOptionPane.CLOSED_OPTION) { + return; + } + } + } + } + else { //Ѵļ + if(flag1==1||flag2==1) { //Ѿ + } + else { //û + String tips="޸ı浽"; + int n=JOptionPane.showConfirmDialog(null, tips+""+name+""+"?","Notepad",JOptionPane.YES_NO_CANCEL_OPTION); + if(n==JOptionPane.OK_OPTION) { //ļʱDZ + try { + + BufferedOutputStream out= new BufferedOutputStream(new FileOutputStream(file1)); + String str = textArea.getText(); + out.write(str.getBytes("UTF-8")); + out.close(); + flag1=1; + settitle(name+" ["+path+"]"); + } + catch (Exception ee) {} + } + else if(n==JOptionPane.NO_OPTION) { //棬Ϊ + } + else if(n==JOptionPane.CANCEL_OPTION) { + return; + } + else if(n==JOptionPane.CLOSED_OPTION) { + return; + } + } + } + open.setVisible(true); + file1=new File(open.getDirectory() + open.getFile()); + name=open.getFile(); //õļ + path=open.getDirectory(); + if(name==null)return; //жǷѡļûѡļûκβ + textArea.setText(""); + try { + BufferedReader in = new BufferedReader(new FileReader(file1)); + String str=null; + textArea.setText(""); + while ((str = in.readLine()) != null){ + textArea.append(str + "\n"); + } + in.close(); + flag=1; + settitle(name+" ["+path+"]"); + } catch (Exception e1) {} + + + } + }); dakai2.setToolTipText("\u6253\u5F00"); toolBar.add(dakai2); tubiao= new ImageIcon("img\\open.jpg"); @@ -874,6 +1096,42 @@ public class window extends JFrame { dakai2.setIcon(tubiao); JButton baocun2 = new JButton(""); + baocun2.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { //İť + if(flag==1) { //Ѿļ + try { + BufferedOutputStream out= new BufferedOutputStream(new FileOutputStream(file1)); + String str = textArea.getText(); + out.write(str.getBytes("UTF-8")); + out.close(); + flag1=1; + flag=1; + settitle(name+" ["+path+"]"); + } + catch (Exception ee) {} + } + else { //ûļ + saveto.setVisible(true); + try { + file2=new File(saveto.getDirectory() + saveto.getFile()); + name1=saveto.getFile(); + path1=saveto.getDirectory(); + if(name1==null)return; + FileOutputStream out = new FileOutputStream(file2); + String str = textArea.getText(); + out.write(str.getBytes("UTF-8")); + out.close(); + flag1=1; + flag=1; + settitle(name1+" ["+path1+"]"); + name=saveto.getFile(); //Ϊ֮ļ൱Ѿһļ + path=saveto.getDirectory(); + file1=new File(saveto.getDirectory() + saveto.getFile()); //൱ڵĿļ + } + catch (Exception ee) {} + } + } + }); baocun2.setToolTipText("\u4FDD\u5B58"); toolBar.add(baocun2); tubiao= new ImageIcon("img\\save.jpg"); @@ -884,6 +1142,12 @@ public class window extends JFrame { toolBar.addSeparator(); JButton chexiao2 = new JButton(""); + chexiao2.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { //İť + if(undo.canUndo()) + undo.undo(); + } + }); chexiao2.setToolTipText("\u64A4\u9500"); toolBar.add(chexiao2); tubiao= new ImageIcon("img\\undo.jpg"); @@ -892,6 +1156,12 @@ public class window extends JFrame { chexiao2.setIcon(tubiao); JButton chongzuo2 = new JButton(""); + chongzuo2.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { //İť + if(undo.canRedo()) + undo.redo(); + } + }); chongzuo2.setToolTipText("\u91CD\u505A"); toolBar.add(chongzuo2); tubiao= new ImageIcon("img\\redo.jpg"); @@ -902,6 +1172,11 @@ public class window extends JFrame { toolBar.addSeparator(); JButton jianqie2 = new JButton(""); + jianqie2.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { //еİť + textArea.cut(); + } + }); jianqie2.setToolTipText("\u526A\u5207"); toolBar.add(jianqie2); tubiao= new ImageIcon("img\\cut.jpg"); @@ -910,6 +1185,11 @@ public class window extends JFrame { jianqie2.setIcon(tubiao); JButton fuzhi2 = new JButton(""); + fuzhi2.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { //Ƶİť + textArea.copy(); + } + }); fuzhi2.setToolTipText("\u590D\u5236"); toolBar.add(fuzhi2); tubiao= new ImageIcon("img\\copy.jpg"); @@ -918,6 +1198,11 @@ public class window extends JFrame { fuzhi2.setIcon(tubiao); JButton zhantie2 = new JButton(""); + zhantie2.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { //ճİť + textArea.paste(); + } + }); zhantie2.setToolTipText("\u7C98\u8D34"); toolBar.add(zhantie2); tubiao= new ImageIcon("img\\paste.jpg"); @@ -928,6 +1213,10 @@ public class window extends JFrame { toolBar.addSeparator(); JButton chazhao2 = new JButton(""); + chazhao2.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { //ҵİť + } + }); chazhao2.setToolTipText("\u67E5\u627E"); toolBar.add(chazhao2); tubiao= new ImageIcon("img\\find.jpg"); @@ -936,6 +1225,10 @@ public class window extends JFrame { chazhao2.setIcon(tubiao); JButton tihuan2 = new JButton(""); + tihuan2.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { //滻İť + } + }); tihuan2.setToolTipText("\u66FF\u6362"); toolBar.add(tihuan2); tubiao= new ImageIcon("img\\replace.jpg"); @@ -946,6 +1239,77 @@ public class window extends JFrame { toolBar.addSeparator(); JButton tuichu2 = new JButton(""); + tuichu2.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { //˳İť + if(flag==1) { //Ѿ + if(flag1==1||flag2==1) { //ѾΪ + System.exit(0); + } + else { //û棬ѯ + String tips="޸ı浽"; + int n=JOptionPane.showConfirmDialog(null, tips+""+name+""+"?","Notepad",JOptionPane.YES_NO_CANCEL_OPTION); + if(n==JOptionPane.OK_OPTION) { // + try { + BufferedOutputStream out= new BufferedOutputStream(new FileOutputStream(file1)); + String str = textArea.getText(); + out.write(str.getBytes("UTF-8")); + out.close(); + System.exit(0); //˳ + } + catch (Exception ee) {} + } + else if(n==JOptionPane.NO_OPTION) { //,˳ + System.exit(0); + } + else if(n==JOptionPane.CANCEL_OPTION) { + return; + } + else if(n==JOptionPane.CLOSED_OPTION) { + return; + } + } + } + else { //ûļ + if(textArea.getText().equals("")) {//Ϊգ˳ + System.exit(0); + } + else { //ΪգǷѾ + if(flag1==1||flag2==1) { //Ѿ + System.exit(0); + } + else { //û棬ѯ + String tips="޸ı浽δ"; + int n=JOptionPane.showConfirmDialog(null, tips,"Notepad",JOptionPane.YES_NO_CANCEL_OPTION); + if(n==JOptionPane.OK_OPTION) { //δļʱıΪ + saveto.setVisible(true); + try { + file2=new File(saveto.getDirectory() + saveto.getFile()); + name1=saveto.getFile(); + path1=saveto.getDirectory(); + if(name1==null)return; + FileOutputStream out = new FileOutputStream(file2); + String str = textArea.getText(); + out.write(str.getBytes("UTF-8")); + out.close(); + System.exit(0); + } + catch (Exception ee) {} + } + else if(n==JOptionPane.NO_OPTION) { + System.exit(0); + } + else if(n==JOptionPane.CANCEL_OPTION) { + return; + } + else if(n==JOptionPane.CLOSED_OPTION) { + return; + } + } + } + } + + } + }); tuichu2.setToolTipText("\u9000\u51FA"); toolBar.add(tuichu2); tubiao= new ImageIcon("img\\exit.jpg"); @@ -1047,6 +1411,86 @@ public class window extends JFrame { }); xianshicaidanlan1.setSelected(true); popupMenu_1.add(xianshicaidanlan1); + + + + + addWindowListener(new WindowAdapter() { // X رմʱѯ + @Override + public void windowClosing(WindowEvent e) { + if(flag==1) { //Ѿ + if(flag1==1||flag2==1) { //ѾΪ + System.exit(0); + } + else { //û棬ѯ + String tips="޸ı浽"; + int n=JOptionPane.showConfirmDialog(null, tips+""+name+""+"?","Notepad",JOptionPane.YES_NO_CANCEL_OPTION); + if(n==JOptionPane.OK_OPTION) { // + try { + BufferedOutputStream out= new BufferedOutputStream(new FileOutputStream(file1)); + String str = textArea.getText(); + out.write(str.getBytes("UTF-8")); + out.close(); + System.exit(0); //˳ + } + catch (Exception ee) {} + } + else if(n==JOptionPane.NO_OPTION) { //,˳ + System.exit(0); + } + else if(n==JOptionPane.CANCEL_OPTION) { + return; + } + else if(n==JOptionPane.CLOSED_OPTION) { + return; + } + } + } + else { //ûļ + if(textArea.getText().equals("")) {//Ϊգ˳ + System.exit(0); + } + else { //ΪգǷѾ + if(flag1==1||flag2==1) { //Ѿ + System.exit(0); + } + else { //û棬ѯ + String tips="޸ı浽δ"; + int n=JOptionPane.showConfirmDialog(null, tips,"Notepad",JOptionPane.YES_NO_CANCEL_OPTION); + if(n==JOptionPane.OK_OPTION) { //δļʱıΪ + saveto.setVisible(true); + try { + file2=new File(saveto.getDirectory() + saveto.getFile()); + name1=saveto.getFile(); + path1=saveto.getDirectory(); + if(name1==null)return; + FileOutputStream out = new FileOutputStream(file2); + String str = textArea.getText(); + out.write(str.getBytes("UTF-8")); + out.close(); + System.exit(0); + } + catch (Exception ee) {} + } + else if(n==JOptionPane.NO_OPTION) { + System.exit(0); + } + else if(n==JOptionPane.CANCEL_OPTION) { + return; + } + else if(n==JOptionPane.CLOSED_OPTION) { + return; + } + } + } + } + + } + }); + + + + } @@ -1054,7 +1498,7 @@ public class window extends JFrame { this.setTitle(s+" - Notepad"); } //֣Ӧ򿪵ļ - private void settitle() { //༭ʱǰӸ * + private void settitle() { //༭ʱǰӸ * ʾδıΪ String str=getTitle(); char[] c=new char[50]; c=str.toCharArray(); -- Gitee From e00890bf924b0555019cb3ed16e7db4e6dc90ba6 Mon Sep 17 00:00:00 2001 From: ljh <1585739602@qq.com> Date: Sat, 21 May 2022 13:02:18 +0800 Subject: [PATCH 15/20] =?UTF-8?q?=E7=AC=AC12=E6=AC=A1=E6=8F=90=E4=BA=A4?= =?UTF-8?q?=EF=BC=9A=E5=AE=9E=E7=8E=B0=E4=BA=86=E7=BC=96=E8=BE=91=E6=A0=8F?= =?UTF-8?q?=E9=87=8C=E7=9A=84=E8=B7=B3=E8=BD=AC=E5=8A=9F=E8=83=BD=EF=BC=8C?= =?UTF-8?q?=E5=8F=AF=E4=BB=A5=E8=B7=B3=E8=BD=AC=E5=88=B0=E6=8C=87=E5=AE=9A?= =?UTF-8?q?=E8=A1=8C=E5=88=97=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/myNotepad/Jump.java | 99 ++++++++ src/myNotepad/window.java | 487 ++++++++++++++++++++------------------ 2 files changed, 351 insertions(+), 235 deletions(-) create mode 100644 src/myNotepad/Jump.java diff --git a/src/myNotepad/Jump.java b/src/myNotepad/Jump.java new file mode 100644 index 0000000..499c4bf --- /dev/null +++ b/src/myNotepad/Jump.java @@ -0,0 +1,99 @@ +package myNotepad; + +import java.awt.BorderLayout; +import java.awt.FlowLayout; + +import javax.swing.JButton; +import javax.swing.JDialog; +import javax.swing.JFrame; +import javax.swing.JPanel; +import javax.swing.JTextArea; +import javax.swing.border.EmptyBorder; +import javax.swing.text.BadLocationException; + +import java.awt.event.ActionListener; +import java.awt.event.ActionEvent; +import javax.swing.JLabel; +import javax.swing.JOptionPane; +import javax.swing.JTextField; + +public class Jump { + private JTextField textField; + private JTextField textField_1; + int rownow = 0;//λ + int columnnow=0;//λ + int nowtotalcolumn=0;//λе + int sum = 0; // + + public Jump(JFrame f,JTextArea text) { + JDialog jd= new JDialog(f,"ת",true); + jd.setTitle("ת"); + jd.setBounds(400, 300, 200, 250); + jd.getContentPane().setLayout(null); + + JLabel lblNewLabel = new JLabel(""); + lblNewLabel.setText("(1-"+text.getLineCount()+"):"); + lblNewLabel.setBounds(10, 21, 168, 27); + jd.getContentPane().add(lblNewLabel); + + JTextField textField = new JTextField(); + textField.setBounds(10, 47, 168, 27); + jd.getContentPane().add(textField); + textField.setColumns(10); + + JLabel lblNewLabel_1 = new JLabel(""); + lblNewLabel_1.setText(":"); + lblNewLabel_1.setBounds(10, 97, 168, 27); + jd.getContentPane().add(lblNewLabel_1); + + JTextField textField_1 = new JTextField(); + textField_1.setBounds(10, 123, 168, 27); + jd.getContentPane().add(textField_1); + textField_1.setColumns(10); + + JButton btnNewButton = new JButton("\u53D6\u6D88"); + btnNewButton.addActionListener(new ActionListener() { //ȡť + public void actionPerformed(ActionEvent e) { + jd.dispose(); + } + }); + btnNewButton.setBounds(5, 182, 80, 30); + jd.getContentPane().add(btnNewButton); + + JButton btnNewButton_1 = new JButton("\u786E\u5B9A"); + btnNewButton_1.addActionListener(new ActionListener() { //ȷť + public void actionPerformed(ActionEvent e) { + + String[] str = text.getText().split("\n"); //ÿһзֽΪַ + + try { + rownow = Integer.parseInt(textField.getText().trim()); //ȷ + columnnow = Integer.parseInt(textField_1.getText().trim()); //ȷ + } + catch (NumberFormatException e2) { + JOptionPane.showMessageDialog(null, ""); + return; + } + + try { + nowtotalcolumn=text.getLineEndOffset(rownow-1)-text.getLineStartOffset(rownow-1)+1; //еƫ + } catch (BadLocationException e1) { + JOptionPane.showMessageDialog(null, ""); + return; + } + + if(nowtotalcolumn Date: Sat, 21 May 2022 18:30:58 +0800 Subject: [PATCH 16/20] =?UTF-8?q?=E7=AC=AC13=E6=AC=A1=E6=8F=90=E4=BA=A4?= =?UTF-8?q?=EF=BC=9A=E5=AE=9E=E7=8E=B0=E4=BA=86=E7=BC=96=E8=BE=91=E6=A0=8F?= =?UTF-8?q?=E9=87=8C=E7=9A=84=E6=9F=A5=E6=89=BE=E5=8A=9F=E8=83=BD=EF=BC=8C?= =?UTF-8?q?=E5=8F=AF=E5=8C=BA=E5=88=86=E5=A4=A7=E5=B0=8F=E5=86=99=EF=BC=8C?= =?UTF-8?q?=E5=90=91=E4=B8=8A=E5=90=91=E4=B8=8B=E6=9F=A5=E6=89=BE=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .settings/org.eclipse.core.resources.prefs | 3 + src/myNotepad/Find.java | 175 +++++++++++++++++++++ src/myNotepad/Jump.java | 1 + src/myNotepad/window.java | 4 +- 4 files changed, 182 insertions(+), 1 deletion(-) create mode 100644 .settings/org.eclipse.core.resources.prefs create mode 100644 src/myNotepad/Find.java diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..fd86638 --- /dev/null +++ b/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,3 @@ +eclipse.preferences.version=1 +encoding//src/myNotepad/Find.java=UTF-8 +encoding//src/myNotepad/window.java=UTF-8 diff --git a/src/myNotepad/Find.java b/src/myNotepad/Find.java new file mode 100644 index 0000000..4821b7d --- /dev/null +++ b/src/myNotepad/Find.java @@ -0,0 +1,175 @@ +package myNotepad; + +import java.awt.BorderLayout; +import java.awt.EventQueue; + +import javax.swing.JFrame; +import javax.swing.JPanel; +import javax.swing.JTextArea; +import javax.swing.border.EmptyBorder; +import javax.swing.event.DocumentEvent; +import javax.swing.event.DocumentListener; +import javax.swing.JLabel; +import javax.swing.JOptionPane; +import javax.swing.JTextField; +import javax.swing.JButton; +import java.awt.event.ActionListener; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import java.awt.event.ActionEvent; +import javax.swing.JCheckBox; + +public class Find { + + private JPanel contentPane; + private JTextField textField; + String str1,str2; //分别获取文本框和文本域的文字 + + public Find(JTextArea text) { + JFrame jf = new JFrame(); + jf.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); + jf.setBounds(100, 100, 380, 190); + jf.setVisible(true); + jf.setResizable(false); + jf.setTitle("查找"); + contentPane = new JPanel(); + contentPane.setBorder(new EmptyBorder(0, 0, 0, 0)); + jf.setContentPane(contentPane); + contentPane.setLayout(null); + + JLabel lblNewLabel = new JLabel("\u67E5\u627E\u5185\u5BB9\uFF1A"); + lblNewLabel.setBounds(10, 10, 130, 27); + contentPane.add(lblNewLabel); + + textField = new JTextField(); + textField.setBounds(10, 33, 338, 27); + contentPane.add(textField); + textField.setColumns(10); + + + JCheckBox differ = new JCheckBox("\u533A\u5206\u5927\u5C0F\u5199"); + differ.setBounds(5, 115, 90, 23); + contentPane.add(differ); + + JLabel lb = new JLabel("\u603B\u5339\u914D\u6570\uFF1A"); + lb.setBounds(10, 70, 318, 27); + contentPane.add(lb); + + JButton xia = new JButton("\u67E5\u627E\u4E0B\u4E00\u4E2A(D)"); + xia.addActionListener(new ActionListener() { //向下查找 + public void actionPerformed(ActionEvent e) { + int c=0; + int a = 0, b = 0; + int index = text.getCaretPosition(); + if (differ.isSelected()) { //区别大小写 + str1 = text.getText(); + str2 = textField.getText(); + } + else { //不区分大小写 + str1 = text.getText().toLowerCase(); + str2 = textField.getText().toLowerCase(); + } + a = str1.indexOf(str2, index - textField.getText().length() + 1);//返回指定子串的第一次出现的字符串中的索引,从指定的索引开始。 + if (a !=-1) { //边界 + text.setCaretPosition(a); + b = textField.getText().length(); + text.select(a, a + b); + } + else { + JOptionPane.showMessageDialog(null, "查找不到相关内容", + "查找", JOptionPane.INFORMATION_MESSAGE); + } + Pattern p=Pattern.compile(str2); + Matcher m=p.matcher(str1); + while(m.find()) { + c++; + } + lb.setText("总匹配数:"+c+"个"); + } + }); + xia.setMnemonic('D'); + xia.setBounds(239, 111, 120, 30); + contentPane.add(xia); + + JButton shang = new JButton("\u67E5\u627E\u4E0A\u4E00\u4E2A(U)"); + shang.setMnemonic('U'); + shang.addActionListener(new ActionListener() { //向上查找 + public void actionPerformed(ActionEvent e) { + int c=0; + int a = 0, b = 0; + int index = text.getCaretPosition(); + if (differ.isSelected()) { //区别大小写 + str1 = text.getText(); + str2 = textField.getText(); + } + else { //不区分大小写 + str1 = text.getText().toLowerCase(); + str2 = textField.getText().toLowerCase(); + } + a = str1.lastIndexOf(str2, index - textField.getText().length() - 1);//返回指定子字符串的最后一次出现的字符串中的索引,从指定索引开始向后搜索 + // a = str1.indexOf(str2, index - textField.getText().length() + 1);//返回指定子串的第一次出现的字符串中的索引,从指定的索引开始。 + if (a !=-1) { //查找到边界 + text.setCaretPosition(a); + b = textField.getText().length(); + text.select(a, a + b); + } + else { + JOptionPane.showMessageDialog(null, "查找不到相关内容", + "查找", JOptionPane.INFORMATION_MESSAGE); + } + Pattern p=Pattern.compile(str2); + Matcher m=p.matcher(str1); + while(m.find()) { + c++; + } + lb.setText("总匹配数:"+c+"个"); + } + }); + shang.setBounds(100, 111, 120, 30); + contentPane.add(shang); + + shang.setEnabled(false); + xia.setEnabled(false); + + + textField.getDocument().addDocumentListener(new DocumentListener() { //如果文本框为空,则不可点击按钮 + @Override + public void removeUpdate(DocumentEvent e) { + if(textField.getText().equals("")) { + shang.setEnabled(false); + xia.setEnabled(false); + } + else { + shang.setEnabled(true); + xia.setEnabled(true); + } + } + @Override + public void insertUpdate(DocumentEvent e) { + if(textField.getText().equals("")) { + shang.setEnabled(false); + xia.setEnabled(false); + } + else { + shang.setEnabled(true); + xia.setEnabled(true); + } + } + @Override + public void changedUpdate(DocumentEvent e) { + if(textField.getText().equals("")) { + shang.setEnabled(false); + xia.setEnabled(false); + } + else { + shang.setEnabled(true); + xia.setEnabled(true); + } + } + }); + + + + + } +} \ No newline at end of file diff --git a/src/myNotepad/Jump.java b/src/myNotepad/Jump.java index 499c4bf..61d5065 100644 --- a/src/myNotepad/Jump.java +++ b/src/myNotepad/Jump.java @@ -30,6 +30,7 @@ public class Jump { jd.setTitle("ת"); jd.setBounds(400, 300, 200, 250); jd.getContentPane().setLayout(null); + jd.setResizable(false); JLabel lblNewLabel = new JLabel(""); lblNewLabel.setText("(1-"+text.getLineCount()+"):"); diff --git a/src/myNotepad/window.java b/src/myNotepad/window.java index 08bdb78..4dedf35 100644 --- a/src/myNotepad/window.java +++ b/src/myNotepad/window.java @@ -724,6 +724,7 @@ public class window extends JFrame { chazhao1.addActionListener(new ActionListener() { //查找功能 public void actionPerformed(ActionEvent e) { + new Find(textArea); } }); @@ -1231,7 +1232,7 @@ public class window extends JFrame { JButton chazhao2 = new JButton(""); chazhao2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { //查找的按钮 - + new Find(textArea); } }); chazhao2.setToolTipText("\u67E5\u627E"); @@ -1244,6 +1245,7 @@ public class window extends JFrame { JButton tihuan2 = new JButton(""); tihuan2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { //替换的按钮 + } }); tihuan2.setToolTipText("\u66FF\u6362"); -- Gitee From fe88fd78d7f303dd617bb46a543b62f9b5c9e825 Mon Sep 17 00:00:00 2001 From: ljh <1585739602@qq.com> Date: Sat, 21 May 2022 21:32:09 +0800 Subject: [PATCH 17/20] =?UTF-8?q?=E7=AC=AC14=E6=AC=A1=E6=8F=90=E4=BA=A4?= =?UTF-8?q?=EF=BC=9A=E5=AE=9E=E7=8E=B0=E4=BA=86=E7=BC=96=E8=BE=91=E6=A0=8F?= =?UTF-8?q?=E9=87=8C=E7=9A=84=E6=9B=BF=E6=8D=A2=E5=8A=9F=E8=83=BD=EF=BC=8C?= =?UTF-8?q?=E9=A2=98=E6=9B=BF=E6=8D=A2=E5=8D=95=E4=B8=AA=E7=9A=84=E5=AD=97?= =?UTF-8?q?=E8=AF=8D=E6=88=96=E6=89=80=E6=9C=89=E5=AD=97=E8=AF=8D=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/myNotepad/Replace.java | 253 +++++++++++++++++++++++++++++++++++++ src/myNotepad/window.java | 5 +- 2 files changed, 256 insertions(+), 2 deletions(-) create mode 100644 src/myNotepad/Replace.java diff --git a/src/myNotepad/Replace.java b/src/myNotepad/Replace.java new file mode 100644 index 0000000..66b54ab --- /dev/null +++ b/src/myNotepad/Replace.java @@ -0,0 +1,253 @@ +package myNotepad; + +import java.awt.BorderLayout; +import java.awt.EventQueue; + +import javax.swing.JDialog; +import javax.swing.JFrame; +import javax.swing.JPanel; +import javax.swing.JTextArea; +import javax.swing.border.EmptyBorder; +import javax.swing.event.DocumentEvent; +import javax.swing.event.DocumentListener; +import javax.swing.JLabel; +import javax.swing.JOptionPane; +import javax.swing.JTextField; +import javax.swing.JButton; +import javax.swing.JCheckBox; +import java.awt.event.ActionListener; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import java.awt.event.ActionEvent; + +public class Replace{ + + private JPanel contentPane; + private JTextField textField; + private JTextField textField_1; + private JButton xia; + private JButton shang; + private JButton replace; + private JButton replaceAll; + + + public Replace(JTextArea text) { + JFrame jf= new JFrame(); + jf.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); + jf.setBounds(100, 100, 400, 220); + jf.setVisible(true); + jf.setResizable(false); + jf.setTitle("滻"); + contentPane = new JPanel(); + contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); + jf.setContentPane(contentPane); + contentPane.setLayout(null); + + JLabel lblNewLabel = new JLabel("\u67E5\u627E\u5185\u5BB9\uFF1A"); + lblNewLabel.setBounds(10, 10, 102, 29); + contentPane.add(lblNewLabel); + + textField = new JTextField(); + textField.setBounds(10, 35, 242, 30); + contentPane.add(textField); + textField.setColumns(10); + + JLabel lblNewLabel_1 = new JLabel("\u66FF\u6362\u4E3A\uFF1A"); + lblNewLabel_1.setBounds(10, 74, 102, 29); + contentPane.add(lblNewLabel_1); + + textField_1 = new JTextField(); + textField_1.setBounds(10, 99, 242, 30); + contentPane.add(textField_1); + textField_1.setColumns(10); + + JCheckBox differ = new JCheckBox("\u533A\u5206\u5927\u5C0F\u5199"); + differ.setBounds(10, 148, 103, 23); + contentPane.add(differ); + + xia = new JButton("\u67E5\u627E\u4E0B\u4E00\u4E2A(D)"); + xia.addActionListener(new ActionListener() { //² + public void actionPerformed(ActionEvent e) { + int a = 0, b = 0; + int index = text.getCaretPosition(); + String str1; + String str2; + if (differ.isSelected()) { //Сд + str1 = text.getText(); + str2 = textField.getText(); + } + else { //ִСд + str1 = text.getText().toLowerCase(); + str2 = textField.getText().toLowerCase(); + } + a = str1.indexOf(str2, index - textField.getText().length() + 1);//ָӴĵһγֵַеָʼ + if (a !=-1) { //߽ + text.setCaretPosition(a); + b = textField.getText().length(); + text.select(a, a + b); + } + else { + JOptionPane.showMessageDialog(null, "Ҳ", + "", JOptionPane.INFORMATION_MESSAGE); + } + + } + }); + xia.setMnemonic('D'); + xia.setBounds(262, 40, 116, 37); + contentPane.add(xia); + + shang = new JButton("\u67E5\u627E\u4E0A\u4E00\u4E2A(U)"); + shang.addActionListener(new ActionListener() { //ϲ + public void actionPerformed(ActionEvent e) { + int a = 0, b = 0; + int index = text.getCaretPosition(); + String str1; + String str2; + if (differ.isSelected()) { //Сд + str1 = text.getText(); + str2 = textField.getText(); + } + else { //ִСд + str1 = text.getText().toLowerCase(); + str2 = textField.getText().toLowerCase(); + } + a = str1.lastIndexOf(str2, index - textField.getText().length() - 1);//ַָһγֵַеָʼ + // a = str1.indexOf(str2, index - textField.getText().length() + 1);//ָӴĵһγֵַеָʼ + if (a !=-1) { //߽ + text.setCaretPosition(a); + b = textField.getText().length(); + text.select(a, a + b); + } + else { + JOptionPane.showMessageDialog(null, "Ҳ", + "", JOptionPane.INFORMATION_MESSAGE); + } + } + }); + shang.setMnemonic('U'); + shang.setBounds(262, 87, 116, 37); + contentPane.add(shang); + + textField.getDocument().addDocumentListener(new DocumentListener() { //ҿΪ + @Override + public void removeUpdate(DocumentEvent e) { + if(textField.getText().equals("")) { + shang.setEnabled(false); + xia.setEnabled(false); + replace.setEnabled(false); + replaceAll.setEnabled(false); + } + else { + shang.setEnabled(true); + xia.setEnabled(true); + if(!textField_1.getText().equals("")) { + replace.setEnabled(true); + replaceAll.setEnabled(true); + } + } + } + @Override + public void insertUpdate(DocumentEvent e) { + if(textField.getText().equals("")) { + shang.setEnabled(false); + xia.setEnabled(false); + replace.setEnabled(false); + replaceAll.setEnabled(false); + } + else { + shang.setEnabled(true); + xia.setEnabled(true); + if(!textField_1.getText().equals("")) { + replace.setEnabled(true); + replaceAll.setEnabled(true); + } + } + } + @Override + public void changedUpdate(DocumentEvent e) { + if(textField.getText().equals("")) { + shang.setEnabled(false); + xia.setEnabled(false); + replace.setEnabled(false); + replaceAll.setEnabled(false); + } + else { + shang.setEnabled(true); + xia.setEnabled(true); + if(!textField_1.getText().equals("")) { + replace.setEnabled(true); + replaceAll.setEnabled(true); + } + } + } + }); + + textField_1.getDocument().addDocumentListener(new DocumentListener() { //滻Ϊ + @Override + public void removeUpdate(DocumentEvent e) { + if(textField_1.getText().equals("")||textField.getText().equals("")) { + replace.setEnabled(false); + replaceAll.setEnabled(false); + } + else { + replace.setEnabled(true); + replaceAll.setEnabled(true); + } + } + @Override + public void insertUpdate(DocumentEvent e) { + if(textField_1.getText().equals("")||textField.getText().equals("")) { + replace.setEnabled(false); + replaceAll.setEnabled(false); + } + else { + replace.setEnabled(true); + replaceAll.setEnabled(true); + } + } + @Override + public void changedUpdate(DocumentEvent e) { + if(textField_1.getText().equals("")||textField.getText().equals("")) { + replace.setEnabled(false); + replaceAll.setEnabled(false); + } + else { + replace.setEnabled(true); + replaceAll.setEnabled(true); + } + } + }); + + + replace = new JButton("\u66FF\u6362(R)"); + replace.addActionListener(new ActionListener() { //滻 + public void actionPerformed(ActionEvent e) { + if(text.getSelectedText()!=null) { + String str=textField_1.getText(); + text.replaceSelection(str); + } + } + }); + replace.setMnemonic('R'); + replace.setBounds(262, 140, 116, 38); + contentPane.add(replace); + + replaceAll = new JButton("\u5168\u90E8\u66FF\u6362(A)"); + replaceAll.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + String str=text.getText(); + str=str.replace(textField.getText(), textField_1.getText()); + text.setText(str); + } + }); + replaceAll.setMnemonic('A'); + replaceAll.setBounds(123, 140, 116, 38); + contentPane.add(replaceAll); + + shang.setEnabled(false); + xia.setEnabled(false); + replace.setEnabled(false); + replaceAll.setEnabled(false); + } +} diff --git a/src/myNotepad/window.java b/src/myNotepad/window.java index 4dedf35..6762a33 100644 --- a/src/myNotepad/window.java +++ b/src/myNotepad/window.java @@ -728,8 +728,9 @@ public class window extends JFrame { } }); - tihuan1.addActionListener(new ActionListener() { //添加功能 + tihuan1.addActionListener(new ActionListener() { //替换功能 public void actionPerformed(ActionEvent e) { + new Replace(textArea); } }); @@ -1245,7 +1246,7 @@ public class window extends JFrame { JButton tihuan2 = new JButton(""); tihuan2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { //替换的按钮 - + new Replace(textArea); } }); tihuan2.setToolTipText("\u66FF\u6362"); -- Gitee From 2eded7f67dfe7650c2309476d1c8f8e910b193e2 Mon Sep 17 00:00:00 2001 From: ljh <1585739602@qq.com> Date: Sun, 22 May 2022 13:37:40 +0800 Subject: [PATCH 18/20] =?UTF-8?q?=E7=AC=AC15=E6=AC=A1=E6=8F=90=E4=BA=A4?= =?UTF-8?q?=EF=BC=9A=E5=AE=9E=E7=8E=B0=E4=BA=86=E6=9F=90=E4=BA=9B=E6=83=85?= =?UTF-8?q?=E5=86=B5=E4=B8=8B=EF=BC=8C=E6=9F=90=E4=BA=9B=E8=8F=9C=E5=8D=95?= =?UTF-8?q?=E9=A1=B9=E5=92=8C=E6=8C=89=E9=92=AE=E4=B8=8D=E5=8F=AF=E9=80=89?= =?UTF-8?q?=E4=B8=AD=E3=80=82=E5=A2=9E=E5=8A=A0=E4=BA=86=E9=83=A8=E5=88=86?= =?UTF-8?q?=E6=B3=A8=E9=87=8A=E3=80=82=E4=BB=A3=E7=A0=81=E6=A8=A1=E5=9D=97?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/myNotepad/Find.java | 88 ++++--- src/myNotepad/FontSet.java | 150 +++++------ src/myNotepad/Jump.java | 33 +-- src/myNotepad/Replace.java | 64 +++-- src/myNotepad/window.java | 500 +++++++++++++++++++++++-------------- 5 files changed, 490 insertions(+), 345 deletions(-) diff --git a/src/myNotepad/Find.java b/src/myNotepad/Find.java index 4821b7d..1839231 100644 --- a/src/myNotepad/Find.java +++ b/src/myNotepad/Find.java @@ -1,7 +1,7 @@ -package myNotepad; -import java.awt.BorderLayout; -import java.awt.EventQueue; +// 查找 专用 + +package myNotepad; import javax.swing.JFrame; import javax.swing.JPanel; @@ -12,6 +12,7 @@ import javax.swing.event.DocumentListener; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JTextField; +import javax.swing.ImageIcon; import javax.swing.JButton; import java.awt.event.ActionListener; import java.util.regex.Matcher; @@ -19,6 +20,10 @@ import java.util.regex.Pattern; import java.awt.event.ActionEvent; import javax.swing.JCheckBox; +/** + * @author 李锦浩 + * + */ public class Find { private JPanel contentPane; @@ -32,6 +37,7 @@ public class Find { jf.setVisible(true); jf.setResizable(false); jf.setTitle("查找"); + jf.setIconImage(new ImageIcon("img\\notepad.jpg").getImage()); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(0, 0, 0, 0)); jf.setContentPane(contentPane); @@ -56,6 +62,18 @@ public class Find { contentPane.add(lb); JButton xia = new JButton("\u67E5\u627E\u4E0B\u4E00\u4E2A(D)"); + xia.setMnemonic('D'); + xia.setBounds(239, 111, 120, 30); + contentPane.add(xia); + + JButton shang = new JButton("\u67E5\u627E\u4E0A\u4E00\u4E2A(U)"); + shang.setMnemonic('U'); + shang.setBounds(100, 111, 120, 30); + contentPane.add(shang); + + shang.setEnabled(false); + xia.setEnabled(false); + xia.addActionListener(new ActionListener() { //向下查找 public void actionPerformed(ActionEvent e) { int c=0; @@ -87,12 +105,7 @@ public class Find { lb.setText("总匹配数:"+c+"个"); } }); - xia.setMnemonic('D'); - xia.setBounds(239, 111, 120, 30); - contentPane.add(xia); - - JButton shang = new JButton("\u67E5\u627E\u4E0A\u4E00\u4E2A(U)"); - shang.setMnemonic('U'); + shang.addActionListener(new ActionListener() { //向上查找 public void actionPerformed(ActionEvent e) { int c=0; @@ -107,8 +120,7 @@ public class Find { str2 = textField.getText().toLowerCase(); } a = str1.lastIndexOf(str2, index - textField.getText().length() - 1);//返回指定子字符串的最后一次出现的字符串中的索引,从指定索引开始向后搜索 - // a = str1.indexOf(str2, index - textField.getText().length() + 1);//返回指定子串的第一次出现的字符串中的索引,从指定的索引开始。 - if (a !=-1) { //查找到边界 + if (a !=-1) { //边界 text.setCaretPosition(a); b = textField.getText().length(); text.select(a, a + b); @@ -125,17 +137,13 @@ public class Find { lb.setText("总匹配数:"+c+"个"); } }); - shang.setBounds(100, 111, 120, 30); - contentPane.add(shang); - shang.setEnabled(false); - xia.setEnabled(false); textField.getDocument().addDocumentListener(new DocumentListener() { //如果文本框为空,则不可点击按钮 @Override - public void removeUpdate(DocumentEvent e) { - if(textField.getText().equals("")) { + public void removeUpdate(DocumentEvent e) { + if(textField.getText().equals("")) { shang.setEnabled(false); xia.setEnabled(false); } @@ -144,29 +152,29 @@ public class Find { xia.setEnabled(true); } } - @Override - public void insertUpdate(DocumentEvent e) { - if(textField.getText().equals("")) { - shang.setEnabled(false); - xia.setEnabled(false); - } - else { - shang.setEnabled(true); - xia.setEnabled(true); - } - } - @Override - public void changedUpdate(DocumentEvent e) { - if(textField.getText().equals("")) { - shang.setEnabled(false); - xia.setEnabled(false); - } - else { - shang.setEnabled(true); - xia.setEnabled(true); - } - } - }); + @Override + public void insertUpdate(DocumentEvent e) { + if(textField.getText().equals("")) { + shang.setEnabled(false); + xia.setEnabled(false); + } + else { + shang.setEnabled(true); + xia.setEnabled(true); + } + } + @Override + public void changedUpdate(DocumentEvent e) { + if(textField.getText().equals("")) { + shang.setEnabled(false); + xia.setEnabled(false); + } + else { + shang.setEnabled(true); + xia.setEnabled(true); + } + } + }); diff --git a/src/myNotepad/FontSet.java b/src/myNotepad/FontSet.java index a047759..2d79bd9 100644 --- a/src/myNotepad/FontSet.java +++ b/src/myNotepad/FontSet.java @@ -1,37 +1,42 @@ + +//Ϊ ר + package myNotepad; import java.awt.BorderLayout; import java.awt.Color; import java.awt.FlowLayout; + +import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JColorChooser; import javax.swing.JDialog; -import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JTextArea; -import javax.swing.border.EmptyBorder; -import java.awt.Label; import javax.swing.JLabel; import java.awt.Font; import java.awt.GraphicsEnvironment; - import javax.swing.JComboBox; -import javax.swing.SwingConstants; import javax.swing.WindowConstants; - import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import java.awt.event.ItemListener; import java.awt.event.ItemEvent; -public class FontSet extends JDialog { +/** + * @author + * + */ +public class FontSet { public FontSet(JTextArea text1,JTextArea text2) { JDialog jd= new JDialog(); jd.setTitle(""); jd.setVisible(true); - jd.setBounds(100, 100, 490, 350); + jd.setBounds(100, 100, 490, 300); jd.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); + jd.setResizable(false); + jd.setIconImage(new ImageIcon("img\\notepad.jpg").getImage()); JPanel contentPanel = new JPanel(); JPanel buttonPane = new JPanel(); @@ -41,26 +46,26 @@ public class FontSet extends JDialog { jd.getContentPane().add(contentPanel, BorderLayout.CENTER); - JLabel lblNewLabel = new JLabel("\u5B57\u4F53\uFF1A"); - lblNewLabel.setFont(new Font("", Font.PLAIN, 15)); - lblNewLabel.setBounds(16, 10, 76, 26); - contentPanel.add(lblNewLabel); + JLabel lblNewLabel = new JLabel("\u5B57\u4F53\uFF1A"); + lblNewLabel.setFont(new Font("", Font.PLAIN, 15)); + lblNewLabel.setBounds(16, 10, 76, 26); + contentPanel.add(lblNewLabel); - JLabel lblNewLabel_1 = new JLabel("\u6837\u5F0F\uFF1A"); - lblNewLabel_1.setFont(new Font("", Font.PLAIN, 15)); - lblNewLabel_1.setBounds(270, 10, 76, 26); - contentPanel.add(lblNewLabel_1); + JLabel lblNewLabel_1 = new JLabel("\u6837\u5F0F\uFF1A"); + lblNewLabel_1.setFont(new Font("", Font.PLAIN, 15)); + lblNewLabel_1.setBounds(270, 10, 76, 26); + contentPanel.add(lblNewLabel_1); - JLabel lblNewLabel_2 = new JLabel("\u5927\u5C0F\uFF1A"); - lblNewLabel_2.setFont(new Font("", Font.PLAIN, 15)); - lblNewLabel_2.setBounds(400, 10, 76, 26); - contentPanel.add(lblNewLabel_2); + JLabel lblNewLabel_2 = new JLabel("\u5927\u5C0F\uFF1A"); + lblNewLabel_2.setFont(new Font("", Font.PLAIN, 15)); + lblNewLabel_2.setBounds(400, 10, 76, 26); + contentPanel.add(lblNewLabel_2); - GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); - String[] type = ge.getAvailableFontFamilyNames(); + GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); //ȡϵͳ + String[] type = ge.getAvailableFontFamilyNames(); String[] style=new String[]{"","б","","ƫб"}; Integer[] size=new Integer[68]; for (int i = 0,n=5; i < size.length; i++) { @@ -68,29 +73,44 @@ public class FontSet extends JDialog { } JComboBox comboBox = new JComboBox(type); - comboBox.setSelectedIndex(235); + comboBox.setSelectedIndex(230); comboBox.setBounds(16, 30, 210, 26); contentPanel.add(comboBox); - JComboBox comboBox_1 = new JComboBox(style); + JComboBox comboBox_1 = new JComboBox (style); comboBox_1.setBounds(270, 30, 90, 26); contentPanel.add(comboBox_1); - JComboBox comboBox_2 = new JComboBox(size); + JComboBox comboBox_2 = new JComboBox (size); comboBox_2.setSelectedIndex(8); comboBox_2.setBounds(400, 30, 60, 26); contentPanel.add(comboBox_2); - JLabel jlb = new JLabel("AaBbCc"); - jlb.setFont(new Font("΢ź", Font.PLAIN, 13)); - jlb.setBounds(58, 122, 400, 150); - contentPanel.add(jlb); + JLabel jlb = new JLabel("AaBbCc"); + jlb.setFont(new Font("΢ź", Font.PLAIN, 13)); + jlb.setBounds(50, 80, 400, 150); + contentPanel.add(jlb); + + JButton btnNewButton = new JButton("\u5B57\u4F53\u989C\u8272"); + buttonPane.add(btnNewButton,BorderLayout.WEST); + + JLabel lblNewLabel_3 = new JLabel(" "); + buttonPane.add(lblNewLabel_3); + + JButton okButton = new JButton("\u786E\u5B9A"); + okButton.setActionCommand("OK"); + buttonPane.add(okButton); + jd.getRootPane().setDefaultButton(okButton); + + JButton cancelButton = new JButton("\u53D6\u6D88"); + cancelButton.setActionCommand("Cancel"); + buttonPane.add(cancelButton); comboBox.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent e) { if (e.getStateChange() == ItemEvent.SELECTED) { //ѡ״̬ - jlb.setFont(new Font((String) comboBox.getSelectedItem(), //ÿ + jlb.setFont(new Font((String) comboBox.getSelectedItem(), //type jlb.getFont().getStyle(), jlb.getFont().getSize())); } } @@ -108,7 +128,7 @@ public class FontSet extends JDialog { else if(comboBox_1.getSelectedItem().equals("")){ jlb.setFont(new Font(jlb.getFont().getName(), Font.BOLD, jlb.getFont().getSize())); - } //б + } //style else if(comboBox_1.getSelectedItem().equals("б")){ jlb.setFont(new Font(jlb.getFont().getName(), Font.ITALIC, jlb.getFont().getSize())); @@ -117,66 +137,54 @@ public class FontSet extends JDialog { jlb.setFont(new Font(jlb.getFont().getName(), Font.BOLD+ Font.ITALIC, jlb.getFont().getSize())); } - } + } } }); comboBox_2.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent e) { - if(e.getStateChange()==ItemEvent.SELECTED) { //ôС + if(e.getStateChange()==ItemEvent.SELECTED) { //size jlb.setFont(new Font(jlb.getFont().getName(), jlb.getFont().getStyle(), (int) comboBox_2.getSelectedItem())); - } + } } }); - JButton btnNewButton = new JButton("\u5B57\u4F53\u989C\u8272"); - btnNewButton.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - Color color = JColorChooser.showDialog(text1, "ѡȡɫ", null); + + btnNewButton.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + Color color = JColorChooser.showDialog(text1, "ѡȡɫ", null); // ûȡرմ, 򷵻ص color Ϊ null - if (color == null) { - return; - } - jlb.setForeground(color); + if (color == null) { + return; } - }); - buttonPane.add(btnNewButton,BorderLayout.WEST); - - - JLabel lblNewLabel_3 = new JLabel(" "); - buttonPane.add(lblNewLabel_3); + jlb.setForeground(color); + } + }); + - JButton okButton = new JButton("\u786E\u5B9A"); - okButton.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - text1.setFont(jlb.getFont()); //ı֣ıֵࡢʽСͬJLabel - text1.setForeground(jlb.getForeground()); //ııɫ - text2.setFont(new Font(jlb.getFont().getName(),text2.getFont().getStyle(),jlb.getFont().getSize())); - jd.dispose(); - } - }); + + okButton.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + text1.setFont(jlb.getFont()); //ı֣ıֵࡢʽСͬJLabel + text1.setForeground(jlb.getForeground()); //ııɫ + text2.setFont(new Font(jlb.getFont().getName(),text2.getFont().getStyle(),jlb.getFont().getSize())); + jd.dispose(); + } + }); - - okButton.setActionCommand("OK"); - buttonPane.add(okButton); - jd.getRootPane().setDefaultButton(okButton); - - - JButton cancelButton = new JButton("\u53D6\u6D88"); - cancelButton.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - jd.dispose(); - } - }); - cancelButton.setActionCommand("Cancel"); - buttonPane.add(cancelButton); + cancelButton.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + jd.dispose(); + } + }); + } } diff --git a/src/myNotepad/Jump.java b/src/myNotepad/Jump.java index 61d5065..7ec4bdb 100644 --- a/src/myNotepad/Jump.java +++ b/src/myNotepad/Jump.java @@ -1,14 +1,13 @@ -package myNotepad; -import java.awt.BorderLayout; -import java.awt.FlowLayout; +// ת ר + +package myNotepad; +import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JFrame; -import javax.swing.JPanel; import javax.swing.JTextArea; -import javax.swing.border.EmptyBorder; import javax.swing.text.BadLocationException; import java.awt.event.ActionListener; @@ -17,9 +16,11 @@ import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JTextField; +/** + * @author + * + */ public class Jump { - private JTextField textField; - private JTextField textField_1; int rownow = 0;//λ int columnnow=0;//λ int nowtotalcolumn=0;//λе @@ -31,6 +32,7 @@ public class Jump { jd.setBounds(400, 300, 200, 250); jd.getContentPane().setLayout(null); jd.setResizable(false); + jd.setIconImage(new ImageIcon("img\\notepad.jpg").getImage()); JLabel lblNewLabel = new JLabel(""); lblNewLabel.setText("(1-"+text.getLineCount()+"):"); @@ -53,15 +55,20 @@ public class Jump { textField_1.setColumns(10); JButton btnNewButton = new JButton("\u53D6\u6D88"); + btnNewButton.setBounds(5, 182, 80, 30); + jd.getContentPane().add(btnNewButton); + + JButton btnNewButton_1 = new JButton("\u786E\u5B9A"); + btnNewButton_1.setBounds(100, 182, 80, 30); + jd.getContentPane().add(btnNewButton_1); + jd.setVisible(true); + btnNewButton.addActionListener(new ActionListener() { //ȡť public void actionPerformed(ActionEvent e) { jd.dispose(); } }); - btnNewButton.setBounds(5, 182, 80, 30); - jd.getContentPane().add(btnNewButton); - - JButton btnNewButton_1 = new JButton("\u786E\u5B9A"); + btnNewButton_1.addActionListener(new ActionListener() { //ȷť public void actionPerformed(ActionEvent e) { @@ -92,9 +99,5 @@ public class Jump { jd.dispose(); } }); - - btnNewButton_1.setBounds(100, 182, 80, 30); - jd.getContentPane().add(btnNewButton_1); - jd.setVisible(true); } } diff --git a/src/myNotepad/Replace.java b/src/myNotepad/Replace.java index 66b54ab..79478df 100644 --- a/src/myNotepad/Replace.java +++ b/src/myNotepad/Replace.java @@ -1,9 +1,8 @@ -package myNotepad; -import java.awt.BorderLayout; -import java.awt.EventQueue; +// 滻 ר + +package myNotepad; -import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JTextArea; @@ -13,13 +12,16 @@ import javax.swing.event.DocumentListener; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JTextField; +import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JCheckBox; import java.awt.event.ActionListener; -import java.util.regex.Matcher; -import java.util.regex.Pattern; import java.awt.event.ActionEvent; +/** + * @author + * + */ public class Replace{ private JPanel contentPane; @@ -38,6 +40,7 @@ public class Replace{ jf.setVisible(true); jf.setResizable(false); jf.setTitle("滻"); + jf.setIconImage(new ImageIcon("img\\notepad.jpg").getImage()); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); jf.setContentPane(contentPane); @@ -66,6 +69,30 @@ public class Replace{ contentPane.add(differ); xia = new JButton("\u67E5\u627E\u4E0B\u4E00\u4E2A(D)"); + xia.setMnemonic('D'); + xia.setBounds(262, 40, 116, 37); + contentPane.add(xia); + + shang = new JButton("\u67E5\u627E\u4E0A\u4E00\u4E2A(U)"); + shang.setMnemonic('U'); + shang.setBounds(262, 87, 116, 37); + contentPane.add(shang); + + replace = new JButton("\u66FF\u6362(R)"); + replace.setMnemonic('R'); + replace.setBounds(262, 140, 116, 38); + contentPane.add(replace); + + replaceAll = new JButton("\u5168\u90E8\u66FF\u6362(A)"); + replaceAll.setMnemonic('A'); + replaceAll.setBounds(123, 140, 116, 38); + contentPane.add(replaceAll); + + shang.setEnabled(false); + xia.setEnabled(false); + replace.setEnabled(false); + replaceAll.setEnabled(false); + xia.addActionListener(new ActionListener() { //² public void actionPerformed(ActionEvent e) { int a = 0, b = 0; @@ -93,11 +120,7 @@ public class Replace{ } }); - xia.setMnemonic('D'); - xia.setBounds(262, 40, 116, 37); - contentPane.add(xia); - - shang = new JButton("\u67E5\u627E\u4E0A\u4E00\u4E2A(U)"); + shang.addActionListener(new ActionListener() { //ϲ public void actionPerformed(ActionEvent e) { int a = 0, b = 0; @@ -125,9 +148,7 @@ public class Replace{ } } }); - shang.setMnemonic('U'); - shang.setBounds(262, 87, 116, 37); - contentPane.add(shang); + textField.getDocument().addDocumentListener(new DocumentListener() { //ҿΪ @Override @@ -220,7 +241,7 @@ public class Replace{ }); - replace = new JButton("\u66FF\u6362(R)"); + replace.addActionListener(new ActionListener() { //滻 public void actionPerformed(ActionEvent e) { if(text.getSelectedText()!=null) { @@ -229,11 +250,7 @@ public class Replace{ } } }); - replace.setMnemonic('R'); - replace.setBounds(262, 140, 116, 38); - contentPane.add(replace); - replaceAll = new JButton("\u5168\u90E8\u66FF\u6362(A)"); replaceAll.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String str=text.getText(); @@ -241,13 +258,6 @@ public class Replace{ text.setText(str); } }); - replaceAll.setMnemonic('A'); - replaceAll.setBounds(123, 140, 116, 38); - contentPane.add(replaceAll); - - shang.setEnabled(false); - xia.setEnabled(false); - replace.setEnabled(false); - replaceAll.setEnabled(false); + } } diff --git a/src/myNotepad/window.java b/src/myNotepad/window.java index 6762a33..c6a71d1 100644 --- a/src/myNotepad/window.java +++ b/src/myNotepad/window.java @@ -3,11 +3,9 @@ package myNotepad; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Component; -import java.awt.Dimension; import java.awt.EventQueue; import java.awt.FileDialog; import java.awt.Image; - import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JPopupMenu; @@ -21,7 +19,6 @@ import javax.swing.JLabel; import javax.swing.JTextArea; import javax.swing.ImageIcon; import javax.swing.JButton; -import javax.swing.JRadioButton; import javax.swing.JMenu; import javax.swing.JMenuItem; import javax.swing.JOptionPane; @@ -29,7 +26,6 @@ import javax.swing.JCheckBox; import javax.swing.SwingConstants; import javax.swing.UIManager; import javax.swing.JScrollPane; -import javax.swing.JScrollBar; import javax.swing.JToolBar; import javax.swing.JSeparator; import java.awt.event.ActionListener; @@ -40,10 +36,8 @@ import java.awt.event.WindowEvent; import java.io.BufferedOutputStream; import java.io.BufferedReader; import java.io.File; -import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FileReader; -import java.io.IOException; import java.util.Date; import java.awt.event.ActionEvent; import javax.swing.KeyStroke; @@ -61,6 +55,10 @@ import java.awt.Font; +/** + * @author 李锦浩 + * + */ public class window extends JFrame { JFrame f; JTextArea textArea0; //显示行号用的文本域 @@ -74,9 +72,9 @@ public class window extends JFrame { String path=null;//文件路径/打开文件时用 String name1=null;//文件名字/保存文件时用 String path1=null;//文件路径/保存文件时用 - /** - * Launch the application. - */ + + + public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { @@ -90,23 +88,21 @@ public class window extends JFrame { }); } - /** - * Create the frame. - */ + public window() { setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); setBounds(100, 100, 750, 500); contentPane = new JPanel(); - contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); + contentPane.setBorder(new EmptyBorder(0, 0, 0, 0)); setContentPane(contentPane); contentPane.setLayout(new BorderLayout(0, 0)); this.setIconImage(new ImageIcon("img\\notepad.jpg").getImage()); -// this.setTitle(" *未命名 - Notepad"); this.setTitle("未命名 - Notepad"); JMenuBar menuBar1 = new JMenuBar(); contentPane.add(menuBar1, BorderLayout.NORTH); +//以下为文件栏组件 JMenu wenjian = new JMenu("\u6587\u4EF6(F)"); wenjian.setMnemonic('F'); menuBar1.add(wenjian); @@ -138,6 +134,8 @@ public class window extends JFrame { tuichu1.setMnemonic(KeyEvent.VK_X); wenjian.add(tuichu1); + +//以下是编辑栏组件 JMenu bianji = new JMenu("\u7F16\u8F91(E)"); bianji.setMnemonic('E'); menuBar1.add(bianji); @@ -219,6 +217,16 @@ public class window extends JFrame { tiaozhuandao1.setMnemonic(KeyEvent.VK_G); chazhao0.add(tiaozhuandao1); + jianqie1.setEnabled(false); //起初时设为不可选中 + fuzhi1.setEnabled(false); + quanbufuzhi1.setEnabled(false); + yujianqiebanjiaohuan1.setEnabled(false); + quanxuan1.setEnabled(false); + shanchu1.setEnabled(false); + chazhao0.setEnabled(false); + + +//以下是格式栏组件 JMenu geshi = new JMenu("\u683C\u5F0F(O)"); geshi.setMnemonic('O'); menuBar1.add(geshi); @@ -236,6 +244,8 @@ public class window extends JFrame { JCheckBox shensemoshi1 = new JCheckBox("\u6DF1\u8272\u6A21\u5F0F"); geshi.add(shensemoshi1); + +//以下是查看栏组件 JMenu chakan = new JMenu("\u67E5\u770B(V)"); chakan.setMnemonic('V'); menuBar1.add(chakan); @@ -247,65 +257,224 @@ public class window extends JFrame { JCheckBox xianshihanghao1 = new JCheckBox("\u663E\u793A\u884C\u53F7"); xianshihanghao1.setSelected(true); chakan.add(xianshihanghao1); + +//以下是帮助栏组件 JMenu bangzhu = new JMenu("\u5E2E\u52A9(H)"); bangzhu.setMnemonic('H'); menuBar1.add(bangzhu); + JMenuItem chakanbangzhu1 = new JMenuItem("\u67E5\u770B\u5E2E\u52A9(H)"); + chakanbangzhu1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_H, InputEvent.CTRL_DOWN_MASK | InputEvent.SHIFT_DOWN_MASK)); + chakanbangzhu1.setMnemonic(KeyEvent.VK_H); + bangzhu.add(chakanbangzhu1); + + bangzhu.addSeparator(); + + JMenuItem guanyujishiben1 = new JMenuItem("\u5173\u4E8E\u8BB0\u4E8B\u672C(A)"); + guanyujishiben1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A, InputEvent.CTRL_DOWN_MASK | InputEvent.SHIFT_DOWN_MASK)); + guanyujishiben1.setMnemonic(KeyEvent.VK_A); + bangzhu.add(guanyujishiben1); + JPanel panel = new JPanel(); contentPane.add(panel, BorderLayout.CENTER); panel.setLayout(new BorderLayout(0, 0)); - JLabel lblNewLabel = new JLabel("\u72B6\u6001\u680F "); + JLabel lblNewLabel = new JLabel("\u72B6\u6001\u680F "); //状态栏 panel.add(lblNewLabel, BorderLayout.SOUTH); lblNewLabel.setHorizontalAlignment(SwingConstants.LEFT); - JScrollPane scrollPane = new JScrollPane(); + JScrollPane scrollPane = new JScrollPane(); //滚动框 panel.add(scrollPane, BorderLayout.CENTER); - JTextArea textArea = new JTextArea(); + JTextArea textArea = new JTextArea(); //文本域 textArea.setFont(new Font("微软雅黑", Font.PLAIN, 13)); textArea.setLineWrap(true); + scrollPane.setViewportView(textArea); + + JToolBar toolBar = new JToolBar(); //工具栏 + panel.add(toolBar, BorderLayout.NORTH); + textArea0 = new JTextArea(); //行号栏 + textArea0.setFont(new Font("微软雅黑", Font.PLAIN, 13)); + textArea0.setEditable(false); + textArea0.setBackground(new Color(192, 192, 192)); + scrollPane.setRowHeaderView(textArea0); + +//以下是工具栏组件 + JButton xjian2 = new JButton(""); + xjian2.setToolTipText("\u65B0\u5EFA"); + toolBar.add(xjian2); + ImageIcon tubiao= new ImageIcon("img\\new.jpg"); + Image temp = tubiao.getImage().getScaledInstance(15,15,Image.SCALE_DEFAULT); + tubiao = new ImageIcon(temp); + xjian2.setIcon(tubiao); - //以下是帮助栏功能 - JMenuItem chakanbangzhu1 = new JMenuItem("\u67E5\u770B\u5E2E\u52A9(H)"); - chakanbangzhu1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_H, InputEvent.CTRL_DOWN_MASK | InputEvent.SHIFT_DOWN_MASK)); - chakanbangzhu1.setMnemonic(KeyEvent.VK_H); + JButton dakai2 = new JButton(""); + dakai2.setToolTipText("\u6253\u5F00"); + toolBar.add(dakai2); + tubiao= new ImageIcon("img\\open.jpg"); + temp = tubiao.getImage().getScaledInstance(15,15,Image.SCALE_DEFAULT); + tubiao = new ImageIcon(temp); + dakai2.setIcon(tubiao); + + + JButton baocun2 = new JButton(""); + baocun2.setToolTipText("\u4FDD\u5B58"); + toolBar.add(baocun2); + tubiao= new ImageIcon("img\\save.jpg"); + temp = tubiao.getImage().getScaledInstance(15,15,Image.SCALE_DEFAULT); + tubiao = new ImageIcon(temp); + baocun2.setIcon(tubiao); + + toolBar.addSeparator(); + + JButton chexiao2 = new JButton(""); + chexiao2.setToolTipText("\u64A4\u9500"); + toolBar.add(chexiao2); + tubiao= new ImageIcon("img\\undo.jpg"); + temp = tubiao.getImage().getScaledInstance(15,15,Image.SCALE_DEFAULT); + tubiao = new ImageIcon(temp); + chexiao2.setIcon(tubiao); + + + JButton chongzuo2 = new JButton(""); + chongzuo2.setToolTipText("\u91CD\u505A"); + toolBar.add(chongzuo2); + tubiao= new ImageIcon("img\\redo.jpg"); + temp = tubiao.getImage().getScaledInstance(15,15,Image.SCALE_DEFAULT); + tubiao = new ImageIcon(temp); + chongzuo2.setIcon(tubiao); + + toolBar.addSeparator(); + + + JButton jianqie2 = new JButton(""); + jianqie2.setToolTipText("\u526A\u5207"); + toolBar.add(jianqie2); + tubiao= new ImageIcon("img\\cut.jpg"); + temp = tubiao.getImage().getScaledInstance(15,15,Image.SCALE_DEFAULT); + tubiao = new ImageIcon(temp); + jianqie2.setIcon(tubiao); + + + JButton fuzhi2 = new JButton(""); + fuzhi2.setToolTipText("\u590D\u5236"); + toolBar.add(fuzhi2); + tubiao= new ImageIcon("img\\copy.jpg"); + temp = tubiao.getImage().getScaledInstance(15,15,Image.SCALE_DEFAULT); + tubiao = new ImageIcon(temp); + fuzhi2.setIcon(tubiao); + + + JButton zhantie2 = new JButton(""); + zhantie2.setToolTipText("\u7C98\u8D34"); + toolBar.add(zhantie2); + tubiao= new ImageIcon("img\\paste.jpg"); + temp = tubiao.getImage().getScaledInstance(15,15,Image.SCALE_DEFAULT); + tubiao = new ImageIcon(temp); + zhantie2.setIcon(tubiao); + + toolBar.addSeparator(); + + JButton chazhao2 = new JButton(""); + chazhao2.setToolTipText("\u67E5\u627E"); + toolBar.add(chazhao2); + tubiao= new ImageIcon("img\\find.jpg"); + temp = tubiao.getImage().getScaledInstance(15,15,Image.SCALE_DEFAULT); + tubiao = new ImageIcon(temp); + chazhao2.setIcon(tubiao); + + + JButton tihuan2 = new JButton(""); + tihuan2.setToolTipText("\u66FF\u6362"); + toolBar.add(tihuan2); + tubiao= new ImageIcon("img\\replace.jpg"); + temp = tubiao.getImage().getScaledInstance(15,15,Image.SCALE_DEFAULT); + tubiao = new ImageIcon(temp); + tihuan2.setIcon(tubiao); + + toolBar.addSeparator(); + + JButton tuichu2 = new JButton(""); + tuichu2.setToolTipText("\u9000\u51FA"); + toolBar.add(tuichu2); + tubiao= new ImageIcon("img\\exit.jpg"); + temp = tubiao.getImage().getScaledInstance(15,15,Image.SCALE_DEFAULT); + tubiao = new ImageIcon(temp); + + jianqie2.setEnabled(false); //起初为不可选中 + fuzhi2.setEnabled(false); + chazhao2.setEnabled(false); + tihuan2.setEnabled(false); + +//右击文本域的菜单项 + JPopupMenu popupMenu = new JPopupMenu(); + addPopup(textArea, popupMenu); + + JMenuItem chexiao3 = new JMenuItem("\u64A4\u9500"); + popupMenu.add(chexiao3); + + JMenuItem chongzuo3 = new JMenuItem("\u91CD\u505A"); + popupMenu.add(chongzuo3); + + JSeparator separator = new JSeparator(); + popupMenu.add(separator); + + JMenuItem jianqie3 = new JMenuItem("\u526A\u5207"); + popupMenu.add(jianqie3); + + JMenuItem fuzhi3 = new JMenuItem("\u590D\u5236"); + popupMenu.add(fuzhi3); + + JMenuItem zhantie3 = new JMenuItem("\u7C98\u8D34"); + popupMenu.add(zhantie3); + + JMenuItem shanchu3 = new JMenuItem("\u5220\u9664"); + popupMenu.add(shanchu3); + + JSeparator separator_1 = new JSeparator(); + popupMenu.add(separator_1); + + JMenuItem quanxuan3 = new JMenuItem("\u5168\u9009"); + popupMenu.add(quanxuan3); + + jianqie3.setEnabled(false); //起初不可选中 + fuzhi3.setEnabled(false); + quanxuan3.setEnabled(false); + shanchu3.setEnabled(false); + +//以下是帮助栏功能 chakanbangzhu1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { JOptionPane.showInternalMessageDialog(null, "1.拥有各种快捷键,已给出对应提示\n2.普通模式和深色模式随时切换\n" + "3.状态栏和行号可选择是否显示\n4.默认自动换行,可自行选择\n" - + "5.工具栏可拖动,右击状态栏可显示菜单\n6.右击文本区可显示菜单", "帮助", JOptionPane.PLAIN_MESSAGE); + + "5.工具栏可拖动,右击工具栏可显示菜单\n6.右击文本区可显示菜单", "帮助", JOptionPane.PLAIN_MESSAGE); } }); //查看帮助,点击出现消息对话框 - bangzhu.add(chakanbangzhu1); - bangzhu.addSeparator(); - JMenuItem guanyujishiben1 = new JMenuItem("\u5173\u4E8E\u8BB0\u4E8B\u672C(A)"); - guanyujishiben1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A, InputEvent.CTRL_DOWN_MASK | InputEvent.SHIFT_DOWN_MASK)); - guanyujishiben1.setMnemonic(KeyEvent.VK_A); + guanyujishiben1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { JOptionPane.showInternalMessageDialog(null, "欢迎使用!\n Made by:李锦浩\n Email:1585739602@qq.com\n", "关于记事本", JOptionPane.PLAIN_MESSAGE); } }); - bangzhu.add(guanyujishiben1); //关于记事本,点击出现消息对话窗口 + //关于记事本,点击出现消息对话窗口 - //以上是帮助栏功能 +//以上是帮助栏功能 - //以下是文件栏功能 - +//以下是文件栏功能 FileDialog open = new FileDialog(this,"打开",FileDialog.LOAD); //打开文件 面板 FileDialog saveto = new FileDialog(this,"另存为",FileDialog.SAVE); //另存为文件 面板 + xinjian1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { //新建功能 if(flag==1) { //已经打开文件 @@ -479,7 +648,7 @@ public class window extends JFrame { dakai1.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { //打开功能 + public void actionPerformed(ActionEvent e) { //打开功能 if(flag==0) { //没打开 if(textArea.getText().equals("")) {} //为空,可以打开文件 else { //不为空, @@ -604,6 +773,7 @@ public class window extends JFrame { } }); + lingcunwei1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { //另存为功能 @@ -629,15 +799,11 @@ public class window extends JFrame { } }); +//以上是文件栏功能 - //以上是文件栏功能 - - - - //以下是编辑栏 - +//以下是编辑栏 UndoManager undo = new UndoManager(); textArea.getDocument().addUndoableEditListener(undo); chexiao1.addActionListener(new ActionListener(){ @@ -695,7 +861,7 @@ public class window extends JFrame { JTextArea text1= new JTextArea(); //作为中间的媒介 yujianqiebanjiaohuan1.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) {//替换功能就如同数组的两个元素交换,必须要有第三者来充当之间的媒介 + public void actionPerformed(ActionEvent e) { //替换功能就如同数组的两个元素交换,必须要有第三者来充当之间的媒介 if((textArea.getSelectionEnd()-textArea.getSelectionStart())!=0) { //用来判断是否有选中要交换的文本 text1.setText(textArea.getSelectedText()); //如果没有选中文本就不能实现 textArea.paste(); @@ -718,7 +884,7 @@ public class window extends JFrame { tianjiashijian1.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ - textArea.append(new Date().toString()); //添加时间功能 + textArea.append(new Date().toString()); //添加时间功能 } }); @@ -740,13 +906,10 @@ public class window extends JFrame { } }); - //以上是编辑栏功能 - +//以上是编辑栏功能 - - - //以下是查看栏功能 +//以下是查看栏功能 textArea.addCaretListener(new CaretListener() { public void caretUpdate(CaretEvent e) { try { @@ -759,8 +922,67 @@ public class window extends JFrame { +" 列:"+(column+1)+" / "+(textArea.getLineEndOffset(row)-textArea.getLineStartOffset(row)) +" 总字数:"+factnum+" 总字符数:"+textArea.getLineEndOffset(textArea.getLineCount()-1)); // 在状态栏中显示当前光标所在行号、所在列号 - } + } catch (Exception ex) {} + +//以下是某些情况下,某些菜单项和按钮不可操作 + if(textArea.getText().equals("")) { + jianqie1.setEnabled(false); + fuzhi1.setEnabled(false); + quanbufuzhi1.setEnabled(false); + yujianqiebanjiaohuan1.setEnabled(false); + quanxuan1.setEnabled(false); + shanchu1.setEnabled(false); + chazhao0.setEnabled(false); + jianqie2.setEnabled(false); + fuzhi2.setEnabled(false); + chazhao2.setEnabled(false); + tihuan2.setEnabled(false); + jianqie3.setEnabled(false); + fuzhi3.setEnabled(false); + quanxuan3.setEnabled(false); + shanchu3.setEnabled(false); + } + else { + jianqie1.setEnabled(true); + fuzhi1.setEnabled(true); + quanbufuzhi1.setEnabled(true); + yujianqiebanjiaohuan1.setEnabled(true); + quanxuan1.setEnabled(true); + shanchu1.setEnabled(true); + chazhao0.setEnabled(true); + jianqie2.setEnabled(true); + fuzhi2.setEnabled(true); + chazhao2.setEnabled(true); + tihuan2.setEnabled(true); + jianqie3.setEnabled(true); + fuzhi3.setEnabled(true); + quanxuan3.setEnabled(true); + shanchu3.setEnabled(true); + } + + if(textArea.getSelectedText()==null) { + jianqie1.setEnabled(false); + fuzhi1.setEnabled(false); + yujianqiebanjiaohuan1.setEnabled(false); + shanchu1.setEnabled(false); + jianqie2.setEnabled(false); + fuzhi2.setEnabled(false); + jianqie3.setEnabled(false); + fuzhi3.setEnabled(false); + shanchu3.setEnabled(false); + } + else { + jianqie1.setEnabled(true); + fuzhi1.setEnabled(true); + yujianqiebanjiaohuan1.setEnabled(true); + shanchu1.setEnabled(true); + jianqie2.setEnabled(true); + fuzhi2.setEnabled(true); + jianqie3.setEnabled(true); + fuzhi3.setEnabled(true); + shanchu3.setEnabled(true); + } } }); @@ -776,12 +998,9 @@ public class window extends JFrame { } }); - scrollPane.setRowHeaderView(textArea0); - scrollPane.setViewportView(textArea); - textArea0 = new JTextArea(); //是否显示行号。参考 - textArea0.setFont(new Font("微软雅黑", Font.PLAIN, 13)); - textArea0.setEditable(false); - xianshihanghao1.addItemListener(new ItemListener() { + + + xianshihanghao1.addItemListener(new ItemListener() { //是否显示行号。参考 public void itemStateChanged(ItemEvent e) { if(xianshihanghao1.isSelected()) { textArea0.setVisible(true); @@ -792,31 +1011,13 @@ public class window extends JFrame { } } }); - textArea0.setBackground(new Color(192, 192, 192)); - scrollPane.setRowHeaderView(textArea0); + textArea.getDocument().addDocumentListener(new DocumentListener() { public String getText() { settitle(); //再标题前面加个 * 号,说明已经发生更改,且未保存 - flag1=0; - flag2=0; -// if(flag==1) { //已经打开文件 -// if(flag1==1||flag2==1) { //已经保存 -// settitle(name1+" ["+path1+"]"); -// } -// else { //没保存的 -// settitle("*"+name1+" ["+path1+"]"); -// } -// } //设置窗口标题 -// else { //没打开文件 -// if(flag1==1||flag2==1) { //保存了 -// settitle(name1+" ["+path1+"]"); -// } -// else { //没保存 -// settitle("*未命名"); -// } -// } -// + flag1=0; + flag2=0; int caretPosition = textArea.getDocument().getLength(); Element root = textArea.getDocument().getDefaultRootElement(); //设置行号,借鉴,理解 String text ="1" + System.getProperty("line.separator"); @@ -840,81 +1041,71 @@ public class window extends JFrame { } }); - //以上是查看栏功能 +//以上是查看栏功能 +//以下是右击文本域弹出菜单 - JPopupMenu popupMenu = new JPopupMenu(); - addPopup(textArea, popupMenu); - JMenuItem chexiao3 = new JMenuItem("\u64A4\u9500"); + //弹出菜单 + chexiao3.addActionListener(new ActionListener() { //右击的撤销 public void actionPerformed(ActionEvent e) { if(undo.canUndo()) undo.undo(); } }); - popupMenu.add(chexiao3); - JMenuItem chongzuo3 = new JMenuItem("\u91CD\u505A"); + + chongzuo3.addActionListener(new ActionListener() { //右击的重做 public void actionPerformed(ActionEvent e) { if(undo.canRedo()) undo.redo(); } }); - popupMenu.add(chongzuo3); - JSeparator separator = new JSeparator(); - popupMenu.add(separator); - JMenuItem jianqie3 = new JMenuItem("\u526A\u5207"); + jianqie3.addActionListener(new ActionListener() { //右击的剪切 public void actionPerformed(ActionEvent e) { textArea.cut(); } }); - popupMenu.add(jianqie3); - JMenuItem fuzhi3 = new JMenuItem("\u590D\u5236"); + + fuzhi3.addActionListener(new ActionListener() { //右击的复制 public void actionPerformed(ActionEvent e) { textArea.copy(); } }); - popupMenu.add(fuzhi3); - JMenuItem zhantie3 = new JMenuItem("\u7C98\u8D34"); zhantie3.addActionListener(new ActionListener() { //右击的粘贴 public void actionPerformed(ActionEvent e) { textArea.paste(); } }); - popupMenu.add(zhantie3); - JMenuItem shanchu3 = new JMenuItem("\u5220\u9664"); + + shanchu3.addActionListener(new ActionListener() { //右击的删除 public void actionPerformed(ActionEvent e) { textArea.replaceRange("",textArea.getSelectionStart(),textArea.getSelectionEnd()); } }); - popupMenu.add(shanchu3); - - JSeparator separator_1 = new JSeparator(); - popupMenu.add(separator_1); - JMenuItem quanxuan3 = new JMenuItem("\u5168\u9009"); quanxuan3.addActionListener(new ActionListener() { //右击的全选 public void actionPerformed(ActionEvent e) { textArea.selectAll(); } }); - popupMenu.add(quanxuan3); - JToolBar toolBar = new JToolBar(); - panel.add(toolBar, BorderLayout.NORTH); - JButton xjian2 = new JButton(""); //以下为工具栏添加有图标的按钮 + + +//以下是工具栏按钮的实现 + xjian2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { //新建的按钮 if(flag==1) { //已经打开文件 @@ -1011,14 +1202,8 @@ public class window extends JFrame { } }); - xjian2.setToolTipText("\u65B0\u5EFA"); - toolBar.add(xjian2); - ImageIcon tubiao= new ImageIcon("img\\new.jpg"); - Image temp = tubiao.getImage().getScaledInstance(15,15,Image.SCALE_DEFAULT); - tubiao = new ImageIcon(temp); - xjian2.setIcon(tubiao); + - JButton dakai2 = new JButton(""); dakai2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { //打开的按钮 if(flag==0) { //没打开 @@ -1042,7 +1227,6 @@ public class window extends JFrame { out.close(); settitle(name1+" ["+path1+"]"); flag2=1; - } catch (Exception ee) {} } @@ -1106,14 +1290,9 @@ public class window extends JFrame { } }); - dakai2.setToolTipText("\u6253\u5F00"); - toolBar.add(dakai2); - tubiao= new ImageIcon("img\\open.jpg"); - temp = tubiao.getImage().getScaledInstance(15,15,Image.SCALE_DEFAULT); - tubiao = new ImageIcon(temp); - dakai2.setIcon(tubiao); + + - JButton baocun2 = new JButton(""); baocun2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { //保存的按钮 if(flag==1) { //已经打开文件 @@ -1150,115 +1329,55 @@ public class window extends JFrame { } } }); - baocun2.setToolTipText("\u4FDD\u5B58"); - toolBar.add(baocun2); - tubiao= new ImageIcon("img\\save.jpg"); - temp = tubiao.getImage().getScaledInstance(15,15,Image.SCALE_DEFAULT); - tubiao = new ImageIcon(temp); - baocun2.setIcon(tubiao); - - toolBar.addSeparator(); - - JButton chexiao2 = new JButton(""); + + chexiao2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { //撤销的按钮 if(undo.canUndo()) undo.undo(); } }); - chexiao2.setToolTipText("\u64A4\u9500"); - toolBar.add(chexiao2); - tubiao= new ImageIcon("img\\undo.jpg"); - temp = tubiao.getImage().getScaledInstance(15,15,Image.SCALE_DEFAULT); - tubiao = new ImageIcon(temp); - chexiao2.setIcon(tubiao); + - JButton chongzuo2 = new JButton(""); + chongzuo2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { //重做的按钮 if(undo.canRedo()) undo.redo(); } }); - chongzuo2.setToolTipText("\u91CD\u505A"); - toolBar.add(chongzuo2); - tubiao= new ImageIcon("img\\redo.jpg"); - temp = tubiao.getImage().getScaledInstance(15,15,Image.SCALE_DEFAULT); - tubiao = new ImageIcon(temp); - chongzuo2.setIcon(tubiao); - toolBar.addSeparator(); - JButton jianqie2 = new JButton(""); jianqie2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { //剪切的按钮 textArea.cut(); } }); - jianqie2.setToolTipText("\u526A\u5207"); - toolBar.add(jianqie2); - tubiao= new ImageIcon("img\\cut.jpg"); - temp = tubiao.getImage().getScaledInstance(15,15,Image.SCALE_DEFAULT); - tubiao = new ImageIcon(temp); - jianqie2.setIcon(tubiao); - - JButton fuzhi2 = new JButton(""); + fuzhi2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { //复制的按钮 textArea.copy(); } }); - fuzhi2.setToolTipText("\u590D\u5236"); - toolBar.add(fuzhi2); - tubiao= new ImageIcon("img\\copy.jpg"); - temp = tubiao.getImage().getScaledInstance(15,15,Image.SCALE_DEFAULT); - tubiao = new ImageIcon(temp); - fuzhi2.setIcon(tubiao); - - JButton zhantie2 = new JButton(""); + zhantie2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { //粘贴的按钮 textArea.paste(); } }); - zhantie2.setToolTipText("\u7C98\u8D34"); - toolBar.add(zhantie2); - tubiao= new ImageIcon("img\\paste.jpg"); - temp = tubiao.getImage().getScaledInstance(15,15,Image.SCALE_DEFAULT); - tubiao = new ImageIcon(temp); - zhantie2.setIcon(tubiao); - toolBar.addSeparator(); - - JButton chazhao2 = new JButton(""); chazhao2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { //查找的按钮 new Find(textArea); } }); - chazhao2.setToolTipText("\u67E5\u627E"); - toolBar.add(chazhao2); - tubiao= new ImageIcon("img\\find.jpg"); - temp = tubiao.getImage().getScaledInstance(15,15,Image.SCALE_DEFAULT); - tubiao = new ImageIcon(temp); - chazhao2.setIcon(tubiao); - JButton tihuan2 = new JButton(""); tihuan2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { //替换的按钮 new Replace(textArea); } }); - tihuan2.setToolTipText("\u66FF\u6362"); - toolBar.add(tihuan2); - tubiao= new ImageIcon("img\\replace.jpg"); - temp = tubiao.getImage().getScaledInstance(15,15,Image.SCALE_DEFAULT); - tubiao = new ImageIcon(temp); - tihuan2.setIcon(tubiao); - - toolBar.addSeparator(); - JButton tuichu2 = new JButton(""); tuichu2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { //退出的按钮 if(flag==1) { //已经打开 @@ -1330,18 +1449,13 @@ public class window extends JFrame { } }); - tuichu2.setToolTipText("\u9000\u51FA"); - toolBar.add(tuichu2); - tubiao= new ImageIcon("img\\exit.jpg"); - temp = tubiao.getImage().getScaledInstance(15,15,Image.SCALE_DEFAULT); - tubiao = new ImageIcon(temp); - tuichu2.setIcon(tubiao); - //以上为工具栏添加有图标的按钮 + tuichu2.setIcon(tubiao); +//以上为工具栏添加有图标的按钮 - //以下是格式栏功能 +//以下是格式栏功能的实现 zidonghuanhang1.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent e) { if(zidonghuanhang1.isSelected()) { //是否自动换行 @@ -1353,12 +1467,14 @@ public class window extends JFrame { } }); + ziti1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { new FontSet(textArea,textArea0); //字体功能 } }); + shensemoshi1.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent e) { //深色模式 if (e.getStateChange() == ItemEvent.SELECTED) { @@ -1383,7 +1499,7 @@ public class window extends JFrame { geshi.setForeground(Color.WHITE); bangzhu.setBackground(Color.BLACK); bangzhu.setForeground(Color.WHITE); - } + } else { textArea.setBackground(Color.WHITE); textArea.setForeground(Color.BLACK); @@ -1410,12 +1526,12 @@ public class window extends JFrame { } }); - //以上是格式栏功能 +//以上是格式栏功能 - JPopupMenu popupMenu_1 = new JPopupMenu(); + JPopupMenu popupMenu_1 = new JPopupMenu(); //右击工具栏时弹出菜单 addPopup(toolBar, popupMenu_1); JCheckBox xianshicaidanlan1 = new JCheckBox("\u663E\u793A\u83DC\u5355\u680F"); @@ -1509,8 +1625,6 @@ public class window extends JFrame { }); - - } @@ -1526,6 +1640,8 @@ public class window extends JFrame { this.setTitle("*"+getTitle()); } + +//鼠标事件,再点击的位置出现弹出菜单栏 private static void addPopup(Component component, final JPopupMenu popup) { component.addMouseListener(new MouseAdapter() { public void mousePressed(MouseEvent e) { -- Gitee From 36472ff4c743c4670457ea0449e3ebce61ca7094 Mon Sep 17 00:00:00 2001 From: ljh <1585739602@qq.com> Date: Mon, 23 May 2022 23:53:39 +0800 Subject: [PATCH 19/20] =?UTF-8?q?=E7=AC=AC16=E6=AC=A1=E6=8F=90=E4=BA=A4?= =?UTF-8?q?=EF=BC=9A=E4=BF=AE=E6=94=B9=E4=BA=86=E5=9B=BE=E7=89=87=E7=9A=84?= =?UTF-8?q?=E8=B7=AF=E5=BE=84=EF=BC=8C=E9=A1=B9=E7=9B=AE=E6=89=93=E5=8C=85?= =?UTF-8?q?=E6=88=90=E5=8F=AF=E8=BF=90=E8=A1=8Cjar=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E6=97=B6=EF=BC=8C=E6=9C=89=E5=9B=BE=E7=89=87=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- {img => src/img}/copy.jpg | Bin {img => src/img}/cut.jpg | Bin {img => src/img}/exit.jpg | Bin {img => src/img}/find.jpg | Bin {img => src/img}/new.jpg | Bin {img => src/img}/notepad.jpg | Bin {img => src/img}/open.jpg | Bin {img => src/img}/paste.jpg | Bin {img => src/img}/redo.jpg | Bin {img => src/img}/replace.jpg | Bin {img => src/img}/save.jpg | Bin {img => src/img}/undo.jpg | Bin src/myNotepad/Find.java | 2 +- src/myNotepad/FontSet.java | 2 +- src/myNotepad/Jump.java | 2 +- src/myNotepad/Replace.java | 6 +++--- src/myNotepad/window.java | 29 ++++++++++++++--------------- 17 files changed, 20 insertions(+), 21 deletions(-) rename {img => src/img}/copy.jpg (100%) rename {img => src/img}/cut.jpg (100%) rename {img => src/img}/exit.jpg (100%) rename {img => src/img}/find.jpg (100%) rename {img => src/img}/new.jpg (100%) rename {img => src/img}/notepad.jpg (100%) rename {img => src/img}/open.jpg (100%) rename {img => src/img}/paste.jpg (100%) rename {img => src/img}/redo.jpg (100%) rename {img => src/img}/replace.jpg (100%) rename {img => src/img}/save.jpg (100%) rename {img => src/img}/undo.jpg (100%) diff --git a/img/copy.jpg b/src/img/copy.jpg similarity index 100% rename from img/copy.jpg rename to src/img/copy.jpg diff --git a/img/cut.jpg b/src/img/cut.jpg similarity index 100% rename from img/cut.jpg rename to src/img/cut.jpg diff --git a/img/exit.jpg b/src/img/exit.jpg similarity index 100% rename from img/exit.jpg rename to src/img/exit.jpg diff --git a/img/find.jpg b/src/img/find.jpg similarity index 100% rename from img/find.jpg rename to src/img/find.jpg diff --git a/img/new.jpg b/src/img/new.jpg similarity index 100% rename from img/new.jpg rename to src/img/new.jpg diff --git a/img/notepad.jpg b/src/img/notepad.jpg similarity index 100% rename from img/notepad.jpg rename to src/img/notepad.jpg diff --git a/img/open.jpg b/src/img/open.jpg similarity index 100% rename from img/open.jpg rename to src/img/open.jpg diff --git a/img/paste.jpg b/src/img/paste.jpg similarity index 100% rename from img/paste.jpg rename to src/img/paste.jpg diff --git a/img/redo.jpg b/src/img/redo.jpg similarity index 100% rename from img/redo.jpg rename to src/img/redo.jpg diff --git a/img/replace.jpg b/src/img/replace.jpg similarity index 100% rename from img/replace.jpg rename to src/img/replace.jpg diff --git a/img/save.jpg b/src/img/save.jpg similarity index 100% rename from img/save.jpg rename to src/img/save.jpg diff --git a/img/undo.jpg b/src/img/undo.jpg similarity index 100% rename from img/undo.jpg rename to src/img/undo.jpg diff --git a/src/myNotepad/Find.java b/src/myNotepad/Find.java index 1839231..27acbf6 100644 --- a/src/myNotepad/Find.java +++ b/src/myNotepad/Find.java @@ -37,7 +37,7 @@ public class Find { jf.setVisible(true); jf.setResizable(false); jf.setTitle("查找"); - jf.setIconImage(new ImageIcon("img\\notepad.jpg").getImage()); + jf.setIconImage(new ImageIcon(this.getClass().getResource("/img/notepad.jpg")).getImage()); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(0, 0, 0, 0)); jf.setContentPane(contentPane); diff --git a/src/myNotepad/FontSet.java b/src/myNotepad/FontSet.java index 2d79bd9..3917143 100644 --- a/src/myNotepad/FontSet.java +++ b/src/myNotepad/FontSet.java @@ -36,7 +36,7 @@ public class FontSet { jd.setBounds(100, 100, 490, 300); jd.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); jd.setResizable(false); - jd.setIconImage(new ImageIcon("img\\notepad.jpg").getImage()); + jd.setIconImage(new ImageIcon(this.getClass().getResource("/img/notepad.jpg")).getImage()); JPanel contentPanel = new JPanel(); JPanel buttonPane = new JPanel(); diff --git a/src/myNotepad/Jump.java b/src/myNotepad/Jump.java index 7ec4bdb..b3a0c95 100644 --- a/src/myNotepad/Jump.java +++ b/src/myNotepad/Jump.java @@ -32,7 +32,7 @@ public class Jump { jd.setBounds(400, 300, 200, 250); jd.getContentPane().setLayout(null); jd.setResizable(false); - jd.setIconImage(new ImageIcon("img\\notepad.jpg").getImage()); + jd.setIconImage(new ImageIcon(this.getClass().getResource("/img/notepad.jpg")).getImage()); JLabel lblNewLabel = new JLabel(""); lblNewLabel.setText("(1-"+text.getLineCount()+"):"); diff --git a/src/myNotepad/Replace.java b/src/myNotepad/Replace.java index 79478df..929624b 100644 --- a/src/myNotepad/Replace.java +++ b/src/myNotepad/Replace.java @@ -40,7 +40,7 @@ public class Replace{ jf.setVisible(true); jf.setResizable(false); jf.setTitle("滻"); - jf.setIconImage(new ImageIcon("img\\notepad.jpg").getImage()); + jf.setIconImage(new ImageIcon(this.getClass().getResource("/img/notepad.jpg")).getImage()); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); jf.setContentPane(contentPane); @@ -242,7 +242,7 @@ public class Replace{ - replace.addActionListener(new ActionListener() { //滻 + replace.addActionListener(new ActionListener() { //滻 public void actionPerformed(ActionEvent e) { if(text.getSelectedText()!=null) { String str=textField_1.getText(); @@ -251,7 +251,7 @@ public class Replace{ } }); - replaceAll.addActionListener(new ActionListener() { + replaceAll.addActionListener(new ActionListener() { //滻ȫ public void actionPerformed(ActionEvent e) { String str=text.getText(); str=str.replace(textField.getText(), textField_1.getText()); diff --git a/src/myNotepad/window.java b/src/myNotepad/window.java index c6a71d1..babf78d 100644 --- a/src/myNotepad/window.java +++ b/src/myNotepad/window.java @@ -97,7 +97,7 @@ public class window extends JFrame { setContentPane(contentPane); contentPane.setLayout(new BorderLayout(0, 0)); - this.setIconImage(new ImageIcon("img\\notepad.jpg").getImage()); + this.setIconImage(new ImageIcon(this.getClass().getResource("/img/notepad.jpg")).getImage()); this.setTitle("未命名 - Notepad"); JMenuBar menuBar1 = new JMenuBar(); contentPane.add(menuBar1, BorderLayout.NORTH); @@ -308,7 +308,8 @@ public class window extends JFrame { JButton xjian2 = new JButton(""); xjian2.setToolTipText("\u65B0\u5EFA"); toolBar.add(xjian2); - ImageIcon tubiao= new ImageIcon("img\\new.jpg"); + ImageIcon tubiao= + new ImageIcon(this.getClass().getResource("/img/new.jpg")); Image temp = tubiao.getImage().getScaledInstance(15,15,Image.SCALE_DEFAULT); tubiao = new ImageIcon(temp); xjian2.setIcon(tubiao); @@ -317,7 +318,7 @@ public class window extends JFrame { JButton dakai2 = new JButton(""); dakai2.setToolTipText("\u6253\u5F00"); toolBar.add(dakai2); - tubiao= new ImageIcon("img\\open.jpg"); + tubiao= new ImageIcon(this.getClass().getResource("/img/open.jpg")); temp = tubiao.getImage().getScaledInstance(15,15,Image.SCALE_DEFAULT); tubiao = new ImageIcon(temp); dakai2.setIcon(tubiao); @@ -326,7 +327,7 @@ public class window extends JFrame { JButton baocun2 = new JButton(""); baocun2.setToolTipText("\u4FDD\u5B58"); toolBar.add(baocun2); - tubiao= new ImageIcon("img\\save.jpg"); + tubiao= new ImageIcon(this.getClass().getResource("/img/save.jpg")); temp = tubiao.getImage().getScaledInstance(15,15,Image.SCALE_DEFAULT); tubiao = new ImageIcon(temp); baocun2.setIcon(tubiao); @@ -336,7 +337,7 @@ public class window extends JFrame { JButton chexiao2 = new JButton(""); chexiao2.setToolTipText("\u64A4\u9500"); toolBar.add(chexiao2); - tubiao= new ImageIcon("img\\undo.jpg"); + tubiao= new ImageIcon(this.getClass().getResource("/img/undo.jpg")); temp = tubiao.getImage().getScaledInstance(15,15,Image.SCALE_DEFAULT); tubiao = new ImageIcon(temp); chexiao2.setIcon(tubiao); @@ -345,7 +346,7 @@ public class window extends JFrame { JButton chongzuo2 = new JButton(""); chongzuo2.setToolTipText("\u91CD\u505A"); toolBar.add(chongzuo2); - tubiao= new ImageIcon("img\\redo.jpg"); + tubiao= new ImageIcon(this.getClass().getResource("/img/redo.jpg")); temp = tubiao.getImage().getScaledInstance(15,15,Image.SCALE_DEFAULT); tubiao = new ImageIcon(temp); chongzuo2.setIcon(tubiao); @@ -356,7 +357,7 @@ public class window extends JFrame { JButton jianqie2 = new JButton(""); jianqie2.setToolTipText("\u526A\u5207"); toolBar.add(jianqie2); - tubiao= new ImageIcon("img\\cut.jpg"); + tubiao= new ImageIcon(this.getClass().getResource("/img/cut.jpg")); temp = tubiao.getImage().getScaledInstance(15,15,Image.SCALE_DEFAULT); tubiao = new ImageIcon(temp); jianqie2.setIcon(tubiao); @@ -365,7 +366,7 @@ public class window extends JFrame { JButton fuzhi2 = new JButton(""); fuzhi2.setToolTipText("\u590D\u5236"); toolBar.add(fuzhi2); - tubiao= new ImageIcon("img\\copy.jpg"); + tubiao= new ImageIcon(this.getClass().getResource("/img/copy.jpg")); temp = tubiao.getImage().getScaledInstance(15,15,Image.SCALE_DEFAULT); tubiao = new ImageIcon(temp); fuzhi2.setIcon(tubiao); @@ -374,7 +375,7 @@ public class window extends JFrame { JButton zhantie2 = new JButton(""); zhantie2.setToolTipText("\u7C98\u8D34"); toolBar.add(zhantie2); - tubiao= new ImageIcon("img\\paste.jpg"); + tubiao= new ImageIcon(this.getClass().getResource("/img/paste.jpg")); temp = tubiao.getImage().getScaledInstance(15,15,Image.SCALE_DEFAULT); tubiao = new ImageIcon(temp); zhantie2.setIcon(tubiao); @@ -384,7 +385,7 @@ public class window extends JFrame { JButton chazhao2 = new JButton(""); chazhao2.setToolTipText("\u67E5\u627E"); toolBar.add(chazhao2); - tubiao= new ImageIcon("img\\find.jpg"); + tubiao= new ImageIcon(this.getClass().getResource("/img/find.jpg")); temp = tubiao.getImage().getScaledInstance(15,15,Image.SCALE_DEFAULT); tubiao = new ImageIcon(temp); chazhao2.setIcon(tubiao); @@ -393,7 +394,7 @@ public class window extends JFrame { JButton tihuan2 = new JButton(""); tihuan2.setToolTipText("\u66FF\u6362"); toolBar.add(tihuan2); - tubiao= new ImageIcon("img\\replace.jpg"); + tubiao= new ImageIcon(this.getClass().getResource("/img/replace.jpg")); temp = tubiao.getImage().getScaledInstance(15,15,Image.SCALE_DEFAULT); tubiao = new ImageIcon(temp); tihuan2.setIcon(tubiao); @@ -403,7 +404,7 @@ public class window extends JFrame { JButton tuichu2 = new JButton(""); tuichu2.setToolTipText("\u9000\u51FA"); toolBar.add(tuichu2); - tubiao= new ImageIcon("img\\exit.jpg"); + tubiao= new ImageIcon(this.getClass().getResource("/img/exit.jpg")); temp = tubiao.getImage().getScaledInstance(15,15,Image.SCALE_DEFAULT); tubiao = new ImageIcon(temp); @@ -1003,8 +1004,7 @@ public class window extends JFrame { xianshihanghao1.addItemListener(new ItemListener() { //是否显示行号。参考 public void itemStateChanged(ItemEvent e) { if(xianshihanghao1.isSelected()) { - textArea0.setVisible(true); - + scrollPane.setRowHeaderView(textArea0); } else { scrollPane.setRowHeaderView(null); @@ -1057,7 +1057,6 @@ public class window extends JFrame { }); - chongzuo3.addActionListener(new ActionListener() { //右击的重做 public void actionPerformed(ActionEvent e) { if(undo.canRedo()) -- Gitee From 9c1e61c82608046172287adc141c450829c6da5b Mon Sep 17 00:00:00 2001 From: ljh <1585739602@qq.com> Date: Sat, 28 May 2022 15:21:42 +0800 Subject: [PATCH 20/20] =?UTF-8?q?=E7=AC=AC17=E6=AC=A1=E6=8F=90=E4=BA=A4?= =?UTF-8?q?=EF=BC=9A=E5=86=99=E5=AE=9E=E9=AA=8C=E6=8A=A5=E5=91=8A=E6=97=B6?= =?UTF-8?q?=E5=8F=91=E7=8E=B0bug=EF=BC=8C=E4=BF=AE=E6=94=B9=E4=BA=86?= =?UTF-8?q?=E5=85=A8=E9=83=A8=E6=9B=BF=E6=8D=A2=E5=8A=9F=E8=83=BD=E6=97=B6?= =?UTF-8?q?=E4=B8=8D=E5=8C=BA=E5=88=86=E5=A4=A7=E5=B0=8F=E5=86=99=E7=9A=84?= =?UTF-8?q?bug=E3=80=82=E9=A1=B9=E7=9B=AE=E5=AE=8C=E6=88=90=EF=BC=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/myNotepad/Find.java | 2 +- src/myNotepad/Jump.java | 5 ++-- src/myNotepad/Replace.java | 48 +++++++++++++++++++++++++++++++------- src/myNotepad/window.java | 4 ++-- 4 files changed, 46 insertions(+), 13 deletions(-) diff --git a/src/myNotepad/Find.java b/src/myNotepad/Find.java index 27acbf6..f96f39e 100644 --- a/src/myNotepad/Find.java +++ b/src/myNotepad/Find.java @@ -119,7 +119,7 @@ public class Find { str1 = text.getText().toLowerCase(); str2 = textField.getText().toLowerCase(); } - a = str1.lastIndexOf(str2, index - textField.getText().length() - 1);//返回指定子字符串的最后一次出现的字符串中的索引,从指定索引开始向后搜索 + a = str1.lastIndexOf(str2, index - textField.getText().length() - 1);//返回指定子字符串的最后一次出现的字符串中的索引,从指定索引开始反向搜索 if (a !=-1) { //边界 text.setCaretPosition(a); b = textField.getText().length(); diff --git a/src/myNotepad/Jump.java b/src/myNotepad/Jump.java index b3a0c95..03651b8 100644 --- a/src/myNotepad/Jump.java +++ b/src/myNotepad/Jump.java @@ -14,6 +14,7 @@ import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import javax.swing.JLabel; import javax.swing.JOptionPane; +import javax.swing.JPanel; import javax.swing.JTextField; /** @@ -26,8 +27,8 @@ public class Jump { int nowtotalcolumn=0;//λе int sum = 0; // - public Jump(JFrame f,JTextArea text) { - JDialog jd= new JDialog(f,"ת",true); + public Jump(JTextArea text) { + JDialog jd= new JDialog(); jd.setTitle("ת"); jd.setBounds(400, 300, 200, 250); jd.getContentPane().setLayout(null); diff --git a/src/myNotepad/Replace.java b/src/myNotepad/Replace.java index 929624b..b92e2f6 100644 --- a/src/myNotepad/Replace.java +++ b/src/myNotepad/Replace.java @@ -16,6 +16,8 @@ import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JCheckBox; import java.awt.event.ActionListener; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import java.awt.event.ActionEvent; /** @@ -31,7 +33,8 @@ public class Replace{ private JButton shang; private JButton replace; private JButton replaceAll; - + String str0;//ı + int c=0; public Replace(JTextArea text) { JFrame jf= new JFrame(); @@ -135,8 +138,7 @@ public class Replace{ str1 = text.getText().toLowerCase(); str2 = textField.getText().toLowerCase(); } - a = str1.lastIndexOf(str2, index - textField.getText().length() - 1);//ַָһγֵַеָʼ - // a = str1.indexOf(str2, index - textField.getText().length() + 1);//ָӴĵһγֵַеָʼ + a = str1.lastIndexOf(str2, index - textField.getText().length() - 1);//ַָһγֵַеָʼ if (a !=-1) { //߽ text.setCaretPosition(a); b = textField.getText().length(); @@ -245,17 +247,47 @@ public class Replace{ replace.addActionListener(new ActionListener() { //滻 public void actionPerformed(ActionEvent e) { if(text.getSelectedText()!=null) { - String str=textField_1.getText(); - text.replaceSelection(str); + String str=textField_1.getText(); + text.replaceSelection(str); } } }); replaceAll.addActionListener(new ActionListener() { //滻ȫ public void actionPerformed(ActionEvent e) { - String str=text.getText(); - str=str.replace(textField.getText(), textField_1.getText()); - text.setText(str); + if(differ.isSelected()) { + str0=text.getText(); //ִСд + str0=str0.replace(textField.getText(), textField_1.getText()); + text.setText(str0); + } + + else { //ִСд + String str1; + String str2; + str1 = text.getText().toLowerCase(); + str2 = textField.getText().toLowerCase(); + Pattern p=Pattern.compile(str2); + Matcher m=p.matcher(str1); + while(m.find()) { + c++; + } + text.setCaretPosition(0); + while(c>0) { + int index = text.getCaretPosition(); + int a = str1.indexOf(str2, index - textField.getText().length() + 1);//ָӴĵһγֵַеָʼ + if (a !=-1) { //߽ + text.setCaretPosition(a); + int b = textField.getText().length(); + text.select(a, a + b); + text.replaceSelection(textField_1.getText()); + c--; + + } + } + + + + } } }); diff --git a/src/myNotepad/window.java b/src/myNotepad/window.java index babf78d..651deb3 100644 --- a/src/myNotepad/window.java +++ b/src/myNotepad/window.java @@ -903,7 +903,7 @@ public class window extends JFrame { tiaozhuandao1.addActionListener(new ActionListener() { //跳转功能 public void actionPerformed(ActionEvent e) { - new Jump(f,textArea); + new Jump(textArea); } }); @@ -1001,7 +1001,7 @@ public class window extends JFrame { }); - xianshihanghao1.addItemListener(new ItemListener() { //是否显示行号。参考 + xianshihanghao1.addItemListener(new ItemListener() { //是否显示行号 public void itemStateChanged(ItemEvent e) { if(xianshihanghao1.isSelected()) { scrollPane.setRowHeaderView(textArea0); -- Gitee