From 9ad9efd03e80c8eb8b4cc1a8ea337664af1bc1ae Mon Sep 17 00:00:00 2001 From: Chortkeh Date: Fri, 16 May 2025 23:38:08 +0330 Subject: [PATCH] simple exe done --- .idea/.gitignore | 8 ++ .idea/JavaSwingSimpleExercise.iml | 9 ++ .idea/misc.xml | 6 + .idea/modules.xml | 8 ++ .idea/vcs.xml | 6 + .../RegistrationFormApp.class | Bin 0 -> 4817 bytes .../images/img-4-1.png | Bin 0 -> 17857 bytes .../images/img-4-2.png | Bin 0 -> 20406 bytes .../images/img-4-3.png | Bin 0 -> 34017 bytes .../JavaSwingSimpleExercise/readme-part-4.md | 132 ++++++++++++++++++ part-1/E1.java | 0 part-1/images/ClickCounterApp.java | 37 +++++ part-2/E2.java | 0 part-2/images/GreetingFormApp.java | 48 +++++++ part-3/E3.java | 0 part-3/images/ThemeColorSelectorApp.java | 56 ++++++++ part-4/E4.java | 0 part-4/images/RegistrationFormApp.java | 96 +++++++++++++ 18 files changed, 406 insertions(+) create mode 100644 .idea/.gitignore create mode 100644 .idea/JavaSwingSimpleExercise.iml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/vcs.xml create mode 100644 out/production/JavaSwingSimpleExercise/RegistrationFormApp.class create mode 100644 out/production/JavaSwingSimpleExercise/images/img-4-1.png create mode 100644 out/production/JavaSwingSimpleExercise/images/img-4-2.png create mode 100644 out/production/JavaSwingSimpleExercise/images/img-4-3.png create mode 100644 out/production/JavaSwingSimpleExercise/readme-part-4.md delete mode 100644 part-1/E1.java create mode 100644 part-1/images/ClickCounterApp.java delete mode 100644 part-2/E2.java create mode 100644 part-2/images/GreetingFormApp.java delete mode 100644 part-3/E3.java create mode 100644 part-3/images/ThemeColorSelectorApp.java delete mode 100644 part-4/E4.java create mode 100644 part-4/images/RegistrationFormApp.java diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..13566b8 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/JavaSwingSimpleExercise.iml b/.idea/JavaSwingSimpleExercise.iml new file mode 100644 index 0000000..d6ebd48 --- /dev/null +++ b/.idea/JavaSwingSimpleExercise.iml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..f03c948 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..2d16929 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/out/production/JavaSwingSimpleExercise/RegistrationFormApp.class b/out/production/JavaSwingSimpleExercise/RegistrationFormApp.class new file mode 100644 index 0000000000000000000000000000000000000000..380b4ee01aabca6a56dae3566e7428f35668bf5e GIT binary patch literal 4817 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 KDgvS$)&Buz=_A_! literal 0 HcmV?d00001 diff --git a/out/production/JavaSwingSimpleExercise/images/img-4-1.png b/out/production/JavaSwingSimpleExercise/images/img-4-1.png new file mode 100644 index 0000000000000000000000000000000000000000..137d23fefa613de69ed8b255e29468e673dc4a69 GIT binary patch literal 17857 zcmb`vcU)8Jx&|0gL_t7BM5#7V2}MDARaB%1NDCd2CN=a90o{PY29(}=3xR|poe&j) z4TRna1ZfEb2vS35R@~>zob#J|=iECpf56IG`P%z^Z+YI5^-)VhnUS8I9s~k0s=Ror z4Fb`4fIz3dpF0aYvAL`(4O~vSYb!qiA$vHNfSWV6k6%6pfhuAc4lQVb`|~a@4BbH> zrWWeosdi|w6$tc9U*+jzT_3a6DOkW2iUsk6B5fmB2(?c`D$1(_Oul<|~a>`Jp(R!V|r zD=S1YdhQ&s+j=>=U)I! zVe{VJx>$v_!M^Ma2=vuad|X{`UFlMs@2l5^KV?BB4kgYv=tzdV#K+?y(ah!JAx9TL zqDs6opzWOWK!|?!=D{cP^4B4R-Yk^wCc&;JT`HoLPb`7~m{a zwOWH#i3)*OLDAaprIfiImO??&$NJiqDjJISj4t>wI(Y29GOM@ZIwQt@uq3u5gVlp78bwfFsT ziCd+QZO`=gjT&!l@T;0%%lf!&dJMPW<0(^Niyqc57LS)>L?l_g%rdxcv+f_jcIljO z_#(ETeI4}i{<4i{|7*yjzLdur;}0nPF#%6GBqouqkylfO3#Ok&j`%-G1C|pmF_hwI zk<4Ww)KZG#A*42x-tzqL?#s1HW50XHLqY6z`}jcdg4nf_inKSvVWmFOzDD` zxh(4+c+%H$^X>*Py_CT)GDvU#d__9yvLgFq_ORmplvy?5C79!M4(6ckWQ)-=7FN#C zG}A4NHFfz$+prMH(3XK4m|m+k zJKnlS>8`?0a84X(lYTf)Q$5LfC`u4=MckD)(O<{rS{)DEgePO=I1C@$>?M*fWL)lp56$C4!)yh!1Akv`T}d9O;La~12Q6h zm#w68eC3iy>@GS?rW=L4MR?bwkmgDLV(+aeUnSFovS~&oJ9Y1D*l`pF-Uo)8!g7nV zB7{9<_cw99Rm$t`kLsX@MK(T3*PB+x3vEu}8W;>{ZhicOL0=J_YOx++f7A`e$3Vf?P1?p1{DG+T|G1pm%z zgXFk;>#jt*pJ4N0nWkw`;v5_C`8LMf=j9SaleDt;uu3}K7n*@+^ES)(mT1!16iQA@ zF>u^2y|q2)cVT#^wfm*ew*9a(bR?~5Rjpc&wkupUC?-8=93!f_)ZI(({FX_7zgFM^ zZ2J~=LbJN>=!&1Gl0+#JMxvsRLl11jqkcfYR~pCTF4uy64>9+DnRU43B<(i;!7!n{ zvh-I7xdee6XvUm8$3MbIH7gwInEujNgP@n)jeGE=37UHUB;i7CLig%w)xolrv8Slq5k8ebSZa_nI>QRCdV9Y1^;fJ(2D|^ zDYTtax>f$^mx~hX1EBtEmDpJ)^N4Z0jHVRsEQ}zZ^0}luB#8Ob8LrX6vdj_Q7vH4A z0!8m7_p{oZDmH;13+nNN?J>pJyK*X5sJ5hc$kAzL9)}Xp+k%w>YSDA^thgF6Y3UMo z6!&ob?dgHV#bQUC&|6!>L~4`$y(RN&DD5XdIlk$F_mR3us$8@S&M(JyoMkXOtt1xqk&M5DL$TAZx9=+O=n$^WYK&vjli)6ccKWTCHS!A`7 za+Z{T{v-5(oZsO`jM!Z^AK;?5>5q5N$P|xb@+jQQBZ>hNY5@~_98Vf%9E@Um|EOp7 zcGzn7f8=+ZPTd9td3hwzuDg|JxcxD0yYF_)yrxHf-tF5Bzj7lzJgoAwk=eT6O46Vs zp=_q{f(#xr&lu=O9b$!=-iFBg6N%UkJ(ex~8Miy#n71M1zmQ7FI~H}ThZAgww6YSP zvFGMwS+5PXSFQ5bUU@EXmgBv6DRXy*k1Q_6Kj_YSU%23Db6w^;P8`*w&|&wWH8Bg&{$rF>_bYy1Cf##D}&v5y*B^t1D-Qf`Yw}JSU}2P?nE@6#;HJ zqTmstcQr}a4xRmV(UaV6ieo?dZsvnDy%p-C&2Vl&vyC17VDalccn7om<)z$b946bf z?iJI>6trrJ-)T);TNuS>6wx=@v@r~}i>l(=_PK6aXpjcv#9cK_;nv@h%xe>*4Y-Eo zvBT&$TvwhaAA?WCdNSpTYL=0DIM309d!wY4ad*PX=gR#=&9}HLh0E7SlMiZFdwKdv z#_|^WnrS4uhLu29XIE5DR8&+)(6-??)HiKwO1PuB?r{Uz-A%|a)?tnb)36y8t$%Hi z{}O@oTs)6bYNF6^*!J@FR^Q{QnJ=kBd|_ISdkdIAEK`B}^!K4&v({)y-*={3jV@@m zM--2eBF|13rEA0ZG4%brwt^i!)==E4&RhCgxtO&~C4H@8#OQ+}qcaWe#9p>D^_#@r z<;i+?_AHD+w38Z2_O9)>h582b!&x?IZ?Xvz&9TyxAuK;{6wM&qd=COJNyf1!+rlU# zmvlaZaKnqnET1QAW*(pQrvlvZ0ihe3SZ_gJ2$HX=6zj4Q$|iWP&W{4H;gunO)R(db zDVWb*m3NR33XLPwMEBnF+$siG@3C{B0>FG*<1z|GY0k}tn{ud(>-;_DVfE>IY=V6+ z#}|^9e`>fBvta!+z`XGY_uBEJlfChGq~s}Ri_X!ELgVg?Y**jRKBHNankZ}3<}g8OEJ!;Esxa z^N!dm>7;V@*g*_XaudBW$c8kbNH`z##Viuov z*Cc=YpdKs*FDy_iaLgVbp3XWL=ZXyspqQ)0`jHzUjr*9=!h#gA-%GV5(y{+qhJlX; zVc!3EY}4MpQ$Q_q^*$l&2V=u_qOseWLz$qU?`B!^cARPfJ?5kIVqhP-lZZy4stcZR zjG#u%*Nz$C&u3 zOZZG|fQpM@l_rDx+QE9J7(S~gaSgnm@gs-Z>|?aM0xYjodjh+}p1D(Zweia_$QIV9FQXiN#^&}qUT>gnm1>g4v2u(-;YO3b5u+} zQfa^t&8B|gBtt>$ugq3bPfbBS(e4=uYzfs7XkKYE&>22 zzVFF7;O!hjnfv=68QzmQq6!N4t-}q_N+m3sMK)oUy@0?5ZS^XY?grR9+4WOR2TsBn zn|3^pN3)>f1YyU0N;fqozq4TMmb5dZe6^_zWFEM7qPGPfxsiq5bZ?kxOOOuS$k)h{ zh2N!+Mbm~d-Wp-9Yg*~?6hEx7O0aF6@4=`Epnnw0NG+s)Y?sFGzDlt!&Ls7&92mI%f zmeE~TyIlE@*ad*T_4wuR3FN3mmh@|l5lS<~wEDnAZep|6e9(N0;^0n^i_P~I6Y7^> zwjxqwG_iICJ@Az+szAZ>l-*lm*L_T;kBeZP(B(@|`vGsv!Bmr-CNty0(Fzd|wf>a2 zq75@}sg($oytss;X$Ik@*W%|t*-el2Wm}2Z>64an-q#~S@U>;-Pzz-CP70>h(7;%- z6=rnvWMTLnrTiiDO^jHw`pL66UpHTjd5@@6u>=j@!NUWLd_u)zu`A*l>Pr)0hBqO} z;z1?HBR@@FkA;TYy*GN$l8(q!GVM?#9xsHI_hj)TSQ}P487l|vmoy(LVDjXY6#7%# ziQ65_XiW$CLkA=DY~X$dbF=YWO&(8FQ$A|tsJZzlj%bbZ`c@fHzcbScrDa{*0YP7_f4(CMW#-K<@2Q~9^yaQ$^Y@Ng7d_? z#~51wtkZ1Cy?!|mke!?&YYR4C-z0K#E31QWo+*5%fb?>qM!3~P8LFA;8KgSg%PD`? z0Dnhxi1uDy)pr4=nJcS1*S&g8eDF>}6H2G}Q;NI@-HnQxa)DZ!az`E?-Ly6drmuUr z??1Na5#!1cQojnmzDUm+ROg?;BZrc5C%h$3*6%NPnpi zv6<(a`%e2O9EPJCw!K9|lwxZrt9_y4`_pTSeK99{;j#I<0|oo*%vt>evcH?Tsap$l zI#~kx3cuMcNg*Gua79Rn*$sC~P*r(9@;GS9WiG1Tf3ey3ry~B-FThM~a+iz^PosQf zGcj7sYvu)G!zb3&HD6wg-<@ zJ>H7J67(PetE#`eLh7@> zlh3c_D0BC3wntm9Re^a|7!n%aRXgz%R&(@-D3ukkLf4}FLbpS8n%sAXJF8ejw+ZnN za56F}a&Ze1 z*RAuh!-L5L@T@jo$Wa|YkKJDuDk)7@^520y%tGmU4q#HqwZpC|zq$GQ<24x!4y_T^ zhV^S%96UUu8~|XDIoT-1pLBhL6qj_+OHNHL1$jz2vt98DJ^6AmjEQT2;7(8DNh$rM@*@PY)_f~!Wx3m%6r>*`#KYb`hhBhQrh0(n$~={o#JLws2}8KDM7(3=o!#`L+d-4Azx&Bmhh_d+bW(5li;y>-B`z7JdnhNN z`;+_Kx;o|E&orA}>y+EDZkUUn01;mw3HN{`(#_Y>L-+dj?t9T(@pr$sO?Xw(>=ohk zd4BM#Y4?)h6#Fmd?D~qwlU^1${{*t+2{dO@WDWw~F~cVYx$nJ<3@$0%v0~G{7Iiw* z(I&OoJK{#`sEzbU?Y!B&T?E(7mkVuIrh>I6S+~K8fe6=ZF!9d4BB!I`UG(kLG~=hq zj2k=p$vb%Qpw(_WLNA{?G{GKlCToWFyRWv^pbav**1w2SUIl;ZE=+1P4Q=g|-@RBk zM7Ji-uM=9eaK`i9_$!?e3!RNyisSa2i&jma6D}7<*>(2JDuy_`c8;$7ymsN$96&(M z<4z~k#deM3b=ErJJ9FDzPCWTT`_B|z=yreYcvsgp{zd6bp&@nmdSOI756!z_q%E+C zaMqED^WC#6MJixhuFf~yf8Bl-XvQh?}IOss2i>_yYoKEnE+kK}%pr@Q6!1p(1&jC3f&?V*U z(;(0XNg6H?Nb$#||E`P4>uh(<_H-b(5o~uQzL(}S&>WN-@;@7UT9Ivw>n_ltSfQCZ zHK_mb|7g+=)1zJg?TY>jBI@2L5-C%B)QNa(%)r0t`*8I?Q1)Mp^Pe{3|3#NibCUHi zmj7;d|82k|w#B9xOlrh1a8$4NsV29FxB5-aDm8qXDd&&v0F^i{M^6#%fJDcLqto^p zG;YofOMG1N0b}XumWKL-lk*;mf#VI9wcK^fUhX2n*GWGVSNB_f)b)9e<4djsH7e02v!re*+-z1*)Er)F|e>%1>>R9dv2&fnBs{KK|*G z)zwuJ`wQY|0o_o-i+i6JhqXRTKLEIB@0>?*$;>Ln;l@js)1cS1X|~dEYwQ$>i@sTvc!9AP0Tz9V!{d=pAy9Hjrs$B&!?Id1W$kABE5B?BnE+fu zZ9uz)O6&_#fAIXhB%rGt#7W{+R-DGanpky9P339D5oyxIQQy4qex1a9RP zXH*5-WC8`J++kb%9?*XN;`6R4iuLK?Bfm-Ft(3X^1a9^|MJP%fi9=fLbQ)z63hW&} z4b|zo;u4+i4vpM`TYOAyS{=BZg7AXpH^}IhpwXsanTDz^Eb~VY2>Zx6XmjrlEnj=3 zktZc^HHGeu*J>}qec<$jPm6RJPV827*)ZX*=!~ZQKx|l3;a+M|Nq@Tj6M@8m51QF$ zK(7mL_T`8hjg*KwgA-L3$WC$jb95BjAZPo*)RE^)eLBaG#qS#?-`vAZ(AGL&rBZ+p z=;f?@#RpyXL!@pF5lZ9U2j0eE;6$UzR$i*sEqVHLsgrX4&&s5fX^Imy#+qTlu69hNrJ*4gGrCH6=3~_kkGN?vtw{Q(LBgn;FPH+njP( zpKXm+mAx_}8I5e-w_hEvYA>bHvNrZ!89D7eC8W|oNOjnnS_>L=qieNpN`yM zdRHU;0RmKJRIM7$%#)}$PZMfwXp%$KdeVREhKKX?Ln&o4Udx-y(C#CSuh{la;CFv; zx$y#GVn6delqzc1LYRWSpOp?X36Xx9d>R!09!%Aqo)Nzf;;BopS3d3M~L&ri5bg-K(8KWx5T@K`H3o(o1)nlS38gV|8kAz zUetr!%6XcrhE`%}Dd_17ZfM{Ob7uisys#yyF;*m&&;iVMqc6w)O+|hK1S!xIj`Y5V zG3AFhTk%uY1UV#1@`T~K0)++w1>a0#z^jsO08iIhH)_K_wmeEywLfT}JO360^0~P9 zV8Kx)C-XRPVl?j4omTDpynZ`&=CGpK8bQXGdx9PICV9$n9g}^l&Bq$Nj>ZG8xMZA# zsxK;40u=za+Pu4SjA+(!a6_rn<-TxsjyqyPdXqKQxbxN3FYFC+3l9_B(!UHSodyUS zZu7(?{JAc34)ofKKXH85WVfGUE+Upg3Z6ewxBQcX5bfOM|?JMM_LP-w5eTeV4rRqX^0H{73r)j03X z%=KGpfI}eZw~)F?DnEEtYPcY|Rpv(-u7FC5%I_Wlgx_o=_gN&3u&EEUxpAL_sJ89R zZ1MvQ*Lt=)%ejoM60AU?Lu}2vywn?M*V#V|Y2OZ)=t&3cx{z(bKaDx+p8N}3IJZx_ zOv9yBbS>x<=#N%84@E8FNJH3Q4bi+kb0X;k?Ch!3PAY*~ouqr6cWZ_I?d{ z%t?dh!TZ3VqcXys8@B(T2>+<7awF(!2vf1bKU9RX#@Po-8IrC~7}$h{KC;}!^55{t zw)~3~Ks7(~e0BfxlEPKo({FC`UABiph3}c7Ppfj6hlsM&2Y!07W&if7qcA|;#YHV0 zxK-AOQ$T?J9{{C=3?WQ-ySnEF_mD7bO2o*Mp^#pS|tW(3jm|o7v?M& zmAy@TQxX4sAjR$<(qa2sIy6ntYRuauU7`VLizL9x`T^!J8w^MixK`G-SORDBX3V=- z0`t=E^&8)hPm}!U!rYwhhP`SW!ll_Iz3?$Z)q*9a--kypj68(l@l8NM&(J$)w&=+U zo7Ts!4kt390Dntv)o z?EJz#U8fP)G4wRhJ1aJGn+BAvf9S@ZrC6M5AOI&PfZZXz(hUb9H;a8kkxrjV+r<1H zrC=F5$jfWG-)nfehAZY`2X3pjzNwtcAW<$%@x`SL*&FgMb0AG~0ORj-^0*-53lo{A z2MO7spIKM`s_UO-6s>?XeVm_ByoUXv!Y2XW4$U#qT3zWa zRfgH#LZSa@optblX15Pf3{S0Ct(*PGy*gQA6g94JXGPMkApGp3J{%%yxrS&yY;UJ? z3$TzRo%YTIRS)ZM#i^U4+S`mNH_ZSY6DV8u+2VfYi+j#E_5jkSXr4(FptyEw5=|s^ z51fn!C+^*6k%T(*3Xm2nKBgTz${<-s#pi>1(rO=8nKB}9l`~gB!Ej{&DJ3&MyAu~f z>VH|rVj(1#9VJmZ*kF2F8)xJcw9)K%uJb~O5ukYGQgvaPMba#;Vh)m`XBwRI&JJjN z*l$}YchJ_9+lh~@NKTy?v3Y{;x0IF?5x{8_m$jMz1zfpNisAR?%x>!F7!yjya?}?^ z#A=ZJsV`&faWxsFKXJaydhsPtgMm9Ls(f+dzecioUup{s7d2a{+XHG&#oi>1>#YsLWExCVb0FrcP%0JZc8z~tY~dHiA#@1x?9o8LJ> z*_^-OO0mxGOET~O%5i%P)Rt*m019`ASrqjf0)U-i~br zCEo-#k~9#BYC?uU19Tw54g=vvFeP_lk67AUM@RK(&i!a6p6mUjn9{z5B(pc-DW4~s z4VxX|Na#^_Y~W@`On^b8kbe zcAfo-U~RuX@Ls~PKYPM+I?fw0>|SoU43f0EZPesU-kp~>t4&l667SIte7yQhuBOL7$xNs;Z*B>j~+NhLqWgI_nyFDF;4DzeoYt{%BYldfhRakK3;w*Q zy{0vxqd;|7KR!i;4V)&ecGfJDx*G?Gl6H(+UJHrqKXbk_AOAuP7vS;gjR5SWi}4)^ zakm_3Yj;9#OmG;v?O96)dI@;cuMBi;bvi)b1~hqGt6HtQ{IL!obB71Z*D%-ap&Of; zI%M_5JM8RGf?UmEw6G4`60RM$l$K;3D5pCeuWgS@&%u9`ck8W3V(UNm^dzOUy9bS^ zoY06SNYnxVFpe1XS{&6^&1h3#RqZ^Gmo_p#rR2T%&67k{<4-`N?p{^9KR%U%3^|lo zqZ-X8UubQ*B$^bRJ!I#S8o3Ht~)cc zJclq}9Tl@%<_nbho@gcdYntN2m3LH=;<)>ek2|984h?2qrvbd_ygvZ*ePBro-C6I! zUL-eXKDGJ&>%%~-$6@vkvn{gI!zO8PI>jkYZ^?l-F3rQKR4*-71^85F(MS(eLzPwD z$&hl_C$_KjEexgET3HjB7be63P|uD>y>E|M{&|cYo-1Hsi{@4N+m9!NaZ|RvZ3vqe zM*R}}1rjVf_xTj1a5lIUaq`|ZwF0X21RkZ}z>}L*nfq+XjORR(o7xH%rqbdWgMrNk zOcMAk)!T-QY)r2>0fw7wjY(XgtL|cqU9DZnG;lOnoi1D%eKOpg!ZKK}R`;|$Xs7Zy zb$vy`&G~B6t{(~5^9NqTxivf3;f&Ak>BK}h1GdLp2UM9E-)7fBI7Xd>>l)IE{Ja8T$vujDOphXx* z?Vq_5YAMYtZj-_>o-Ya28<}4O2bgBMGh~zzmj(T1Lg)6sQ7}bS#3R)63^|1oo`4g7 zznNXv>VTgTkwNfs;oe_a(?{-R0Nx>tEos;k?J}>uBpA@Q;3Q5C-@62EhD;y6>`sx{ zt6ev8Hb!p&3td37_+VVeB2l7`?~^Y&z%-w%@BT=*go_4eF6si|B{|X_;W)9;yX5ZY z6ZGr#r$t`Q#$|26bA48ZQATJd0Q04QuTUMqcJ#X66EQP};i}z%+GUFT#?7O{ZHUL> z*KCdBEh*Dni6P08CZT=~>AgWB^=Z)YK6oD;6ZB%u+zVd+AyxpP=d?P`LqpDTFhCp1 z;Vp}(u4M{J_B=Ztv0X90)6IbjT~2dI6&~JDV>ppD;4MKrZI1y*uCtSM?8d3wl_X5m zgqQdfXF&;1)j`=5oi{}~PehWP&}%Ko3$+++0R?dQ4UpFk{` z0F;gb8$L>n2=jw3RRR9JySAY;>}1+*##p(#fS*J(X-I=?Jb;NHbS@_&+CGwi=LUA_#o@6jdfgb9+H7F2l;zBtd#z z`F_WR7DL-UvjA9CJ+t5_HYI!=dH{bPXaoDDS^YJI@cEEtdFZORuFwZAn4t zc#Bx;zfAKpDKe`6Dd^76Pi_)Ts7C|zK_C8~A+DjHKePA!rCDp8?0hgx+!Dsb$o&et z9mp6!<$T}!<)NgAzs=baF7QYWaGGNCzX>vr91W{w8v()OhNhhCtzf@K5v7|{0`oH_ zp~Hc2>`c;%8T={4X0d})Ugb{1(DHTZb*8!P9h(Vjv!bo0*m!P!&Qw<-qft?|@5X4+ zaX7lECn_4EJLwBv0Al7~e_5ZH^S;Ok4@Mt~x6$eG9rAGEo33Pm-@A=>d-TNw!P*VL zyn%kpl+`UJ&BmkknUllqV9UX(^0{#O9#Pa6U$YAr7LfFb(&mV7E2#3;jM1363rq0F z9W?;B+;grLx5?Uaa2zH%QSM*TeA^P}FwE|9Tk63e0Q^KN3;;tIsA{9|;SD^$X4*W! zXQ}V~Udvs;X#;d^6Z78WR=#a=LC#haU_U6(>jKwO$18<)Yj;%%AK$s>c|B{*sJ%=z zEwzpiet+4& zUeBti(2FB!c>)(Cw?=%TT)liO7(yJ^fp#Z})NAnE6 zQn5G7ap2fM0J<)Xdn#Y7EGqU65J90ZC@Py1_-zHoGtx%HJ~0iSEw())J*3-Ir677? zAnq^qYux>=h*yZ(RV-uV9lxFXdyDL1oG_Edvw9B#V#}Qvp|H}Qr*WoUBK0bQ7KE2E z_gEu4qPEbc$=4pd=B@%`Wgv>H@|&WCj>=DxLeM#vU=lH4Wb;j-io9w zw*($#0J(zvJZUdk9hhBmV|rZnqwJP^_Qm zi+@TE5tpMn^^5!ZC!4(fk5z$FFscw81?tu&FBMeX^n>j1>)UGXm|$x@@-{M%A8yK+ zBQ9BDkLiKY01154BdVjjb^FM(2gE zZ0W%b6h58Q2Vwxx3E+gqP9`~44*e3V%ySP=fBXULa>BobMyn2NpQsu8llc?8UvxL3 z)C4U>{wATz0_WPwA~#X*RLw4^X8+fPZ#Fcmu3R$wa9_B{X!5&puP3!-Jv*8$m&JU+ zQ+};%D(--45ATEA=y)u3V)maEqtr=o+#OI_T$VEo#*1ZX-fG>P}+!A%Y?E{gGUL{_@-!W@$I8${2a2me@ z0f#$l+TVXbCu`&$I+6s_j3NWd6COe>m)Xn4w~A}5!z=h`vU;VhX}ekU2z0i9=5g5A znfj>{EL=kssyDL0kz#@h=Tpqq}n_5e5Jln`x7|kmjAx81^?`90BqCi3w3mxfAB(+ef;D z0VThHxvRW7z^_lVeGq3K=;*CwTrB={Foa(Z1JY$vXes|$vpg(|cPl1%nCm&eIEqq8 z+}ZIeGa3K9*Lhk7S>cpVj0@}ht%M~$SXYzCPV&S+*&M*BcIw1S zoWq`_M)f&Wcu$^>Z7g&FL4EEjcEummC=yTO5({Bo>zKR@L&QvNofpJB+U+vSD>2(| zy-phLB>=Wn2%J%1{<1-@tvAgkt}t=VEJxTEO$X|IL@Ub()4=;nC9^WR}i ztF}99lA*%|H1zx%f&uk8KKFoN|NpMY;6K5ie=TJ==gt}a8>anZ#{ZCI`@=Bt88sdE zLE51|_gQqMxhk7hh2`3$Vq*cxobUM`6ENHTylPJS5tGFFa$lU-Ad5c{{E)?WPq>38Qdz3*UFj6ySG?BhX4ns4 zVn1w#3+Y5+&yxt?ac|8~#9==IanOd*eqofl^oCsqp2!BAvO#X)YzCA{RS{_wV_? zT3wPV_eYdZw zDwwDO4+K`HNH>&I;hLsRTrj5KON3Vfg=%}>R1hESF4}vNRaw6X>N~2$=DB7ys7BUf z`*l?{w*!nQa$;tEiP}80$rsvPfpn4_do7nLS5n0~bScfB7w4?sjx4J7K6$)qFfE|s zN9M^I_^ZzJK@9Bkq=Tr&V^ix^FXSK(k7WM0)0D;2(T~LCb1@{tJpZ#JI+ZgbCAzwSK-5$>?yRqq)48T-G(ZG9-~1V05zFues!A%+7U?=!b&7I@qR=mL3{g z&PA_1qU6bLZv{^H1V%cWxRwFo3Pe$i4RLP-U2g~TJ#k{$wycQ`+BS1)YJRplI$el| zvNpHXK3Cp?aEuh6ydabv^GKK%?QFwx^2SFChcy4OK@V|-L$24ojfMv@$05oG;!8U} zY`1Lbl>hYV`O#wOUaLmTB!hXp}kfbP)7Y{GUe+PHAWJ6nWs;|dM(Et)i{RV`_s-#yfkpbn?qE=yk4J2 z-D*Ns!A-sXU?E9xI2X(rW!|j2R_QeE)hNHq5#5F|C^?&Dt#Md7sVBYWr$s`5;;3T! zY0pLzK3%yhaguTT6T{s%(!J`J@yHZIPb_Vu7#SHW zrCa6oel(iJ`w375|2l*!dt@u*4=vJ{!?tbvYNyucnL{nG zPkj?<@}-(b-)y-4Y|Y=LN1xCu&-ElU+{zr!qC4@(7{PB@9IZp5=XWYHOcM`Y1+9S7 zw%d6$=Myc3O;IsNVRQ9Qh&`6avK4=3XH9`U=uRHxOdqV6^E=@}aZgi5Xw<1mQmR&o z-{+4W%w;?|3Yr?I5rAUEYCK8bPAZKexjJ0gw`IJYwU!6e(<@i4?T<7w?5kH-7OJt8 zBA(}`HnJ|;W93)h3cp-*_qIv2B+jP9HGU_Ug}B4Kfa2?|<3oos4!5qI9%XnIjd~(A zk$d;;UwWA{V+&nL4!xOjHe$j2RQ)9H3x?%$B)>fNqc{f!$r0t~sp0=#`Ge9QpTHO8 zYUZ^5R;j;bI)EnnNe*`9pX)yo`=?d}3Na`nr;52Y&r8yWic~RNd|qLq|ETX&GWY+b zI;n|kku_9~);-b2e=^S*&d?_*N zSQ$MYPkRG6Ab9^3u=&6s$N#CG?@jEyWVDnizX-L!PzQW3Nh-R9m0G)4{2welb+Sb3 zlsKT<1ICDj%G}?ThTAd!8q0}<|40@98jzCySpn407vdZcV1h#Lq)J@}z7hL1;efIW z2$)P?L6j;=$jUlWOV$(_FEBGh6#A&|U{H?ce0Z0-A7`UErE;rmdsE{A6E1j=PqRRq z_xPxjzK-COa(fEg6<(P=H4+=r<4GF2&n4-i=uaVwA%ID=o&leRLr&9q0AEyfLKYS8 zst98aE4^06a)7rvbd&-+rpVf~I~zGsVHs`~v}aw#-Xw)u0^s0wO)a|H5qOzLFg+URLt0)Qr2f=JtEJ32gDPk38H+%`=<2T#^wBDGGy!4; zXXFrHY~z4p9jIKou{zZV!PP=XfnUF5kD9~eB+xb?z^ef2e$trwEfq8XFH9JooGhjO zw0ykM+K(tRoia)-;tVwl+}7g)C$|H-S2(8uHs`8b0JH#uJmH`}*dkOrmrL*Fhyk z6FeKmnyowT71FG5)FL(3c&@#PUcVHS!0#8TaTED9z67OPmKd25I(O!)$Blq)=jw?Q gi$sng!Ux?oOACzT1vQL7{Lr{H#?laJb;5uc`>D9AsVx8kg*zYCi>ms^hNxd3hOVUv*c5 zc!5CF9p|45-EJkXKpDfDhdl@c0Fj3VRCk1&_gTYVpeVGpp* zx|<;W4-Qw1B_BP*eCJNwuh-fjbrE9R3}he&J_9$eC}deD^e;+oO4->CW@k*CtYv4+ z{1^j6UCN$0H@_;o2m;+DD(1y!ESvu9=YH=pb;%u=!evIC>tf~iTqT)+Nk35(5;7|J zxjw2WaVc8WjN*v{m7U|&yMli#C@xcY1lwz0XSM^~W&1;ZiCf_)*8J(yY%Im`DAK^E zhcnH-H~CSfs6*n{`IiGffWEY@q}n*RyX&nE!ZD_9twkbsgXu<|2~ujNO1 zf1?Ah6*IYw)}hM0U5rvnOH22+{aT$$64B;W{9*cMj}oyO+8vOypF+g`>1(LzC{%QA z6F1k&@PS}5!QXD>ed1KLTyHXhZsitwBQ+U4?>tSl+pI-y_octJufL~gjhwc~Y|>ay zrr$RGTF`a&=&LAm*O1I~r=zO_n=Ohmy=L-vErL#bT7P(HsRjk^f33C-+{icyB#eQ5 zPX8R$22Na*fkFhUP(`Zmdv3jw> zm!4K$`-%(p-Uvu})Q$LnC8f}JULGtFotXZvmuo9?akifj%@^vzbR>S{q{_;gt7JXs z)Lmm9=-xv-wGobM#d_Mpe+3<-wU3_7)|;OZBk=y@o+EmX(+K3^RiN$sD1i}ReIAB_ z>`te6hstEPEMK{Xau1dD)3oCR6)a|!mjY63Zu6i>w@qiSebrk#aym9~ny8L3)aclb zw_-H1Kbh}q|Mo{La=C@#dUILP?)6_w9&B%yBMbu9UT%VP zn%!eH_a0WZ^5nSIg)GG-O>Ykb7H}_3eDsW8D}Q$ESp@ndR!@O`alu)*cL?aA%)#beW#a-RN^L|h zJN0I#&9z^}I`Gmg*A^k7ocp$ND|itv#{mv#TlPvhN_BdG?o~-Wn*D`nMlm2sI&$p< zuKHlr$IyTf-`!A){yk**AxrO$LH9s2ujlu%cr*NE9Z3Cdg0SdQd1H+ltOM_NpX*&8 zFdS8vXu@)ChK;l3(x2_Ht*tW?N$SIuni= z2WBN^(O0*9Y@x(w28M!5n{8&@AnTzP@|H>pB3BHgyG*_kE@zr%<{6OzPo(d(VG2ts zd}L63cx^$W2R0CB-oCw(sVxDe$-+{q)?ILDX?l?5%%)`#u={+jtY0&akYYW>9rKw` zkxPDzTzqt*)X~a_Hws+Mf2MN4f7?11hq&uiS}JPOODiJ7N$_^81nDH&4&_wDR)s3z zJws`-!{@T`*n~6-@SGFEXZ!1G$Yx)1gRb$nW^)mGAT(OoL;eb_fy z+oRMz8e8x)9^1SGV!+`1}TetFi_dr4V;t+HLbzp?0f7NKV^w-(j6uZ z|Mr}(JNqVD|C8X)556)xA64zXbF20D*K4-*OInDPYrkrQXadwms?$P?7{EH1Z#}v5 z!UmGeI+xw@^tcOxM+()O{CjDQ%%rq;pe?S>U&7;gwLxLqr4w?#Iek55?aggL=C+>L zq3&|LMR7droy1;xv?k}zr&ZxkYT#JwitNcmZ55`IHilPxYrjz!X$7HYE4;*x;P7tu zuqdiuT7y1*q>4HF-l@4_J#LPvdQ74XWCM@K9${l~f2#4w_I7Bhjm_w_FvZN>gNAji z+ez0?4OWQY>2T^Eyo7IA<{IS;Q#%13XhHBw(Kb99ruyWq}TP7%I8uP^D{9qRan z(44teRAHH{a45p4Fxhf|<#iK1nyFtM?!K~n;_WEDavz6h`+dDX8&nB&cOn=9B~!4+ ze*XNLoPxq@RPc9>bo=VWhlNXBKhyQ>X0JeT8E>+Wq_3!)MRRY_tKN6_kpDdGpoJ!4 zThGvpX%%rAQ=z5}_#ZOG(4weWA%4{+GkkhTO1KnGHO4 ztYB#ySNf8|qxjm%9Z^Zi^aOHpa_{*+Qt&fkYXoTf!NA7ZIx7JxDcDydyg@@vy`gw^ z*^A(iIvtY5I@uy6he?ek9&9Z131D_+XQOMP4KHfCHf!I3`a*=Y$G)X$4>)5Vn+H!A z!fdzf1~wCW4i0{O;xzZ1Fsx9o|Dp?1$o_ljIAvYl3Hq>1tv^DTvAyR;E9$)PYi;TF zNbfxr{Z4O`S%q3I^0B=@@zq=ch7M{wREC|Ra*eRJ&m`W*#4FXPecv zb0JA0@j=eSMMqLUvi~1X&Ht{gXc;8v& z7i^H&aakcqh5-ZI8)cMsxF(xlSjp76iDBhP!>2 zoB~X?vT&;$%doJTKR9QtMEt&NdPg?E$FwbJZ2UWgyNw{2;%FXmMmg7o_F6Ua>L8S& z=ike&2f}6iX3b>vQfEDy>rb~<%HL$){_JuxHDD6hy=A*o!UMaJ)-p7pKFB={7*9Di zCyh|AS)>F_A;dC_Q01n;j`|H*>>S4+fSG;2S9v#N@VIl(QvoY0PZU zF{#YvS<(KxAv)szoLy$_ZUirufeZXNtsSJ!kZ!q1(fTj3k{&-#lNaw-LPI$Zf{RjTd?(=U4a}}z-XjUe=Kt{?0zvl${lx|A2 zAH@Ktb4&4;yjBI5a&-7Rzu_DCQshy-6@C*o>ozkKG=JGtf9s3t=Fly`*FRD{E?eV=q3dZ`B4B!*^1QR(EM{&1#g8xg;}LkipF!q3_{ zGV~a4A6NL*D*WzBWLV-z#A0gKJyT*HL%HlCF5dCuOLS{K>QyzrdZ4g4{hbpkHQoQD za{8iV%(EMQ_Zd2+4Dwfpau9-M!T5o1W%L#wn_()q6c&23y#HSc-7Bu>0md7rOgo2wA0O1cf!|i zO%ZzNc=yNGMVj_vWxRj?dOG917=!dFH$e;2?W3`Kz&E6WhPLI2Zv5FV3Q;Fx8%Gx1 zZJgm2f7HlDDRsva{Fym$uVGWfko`;Vmm6);AMGu;Ug=n{SwzT+kpI^BF5tBGIFlt! z@IAv9vVdV30YUBkDpPsrvk4;J|IZn3H0Gz%eO~krQrw2CPzge3-Uf!$mh@o@S z*-5k2x7d_zilD8o-`AQ|i`sI^G|IS(&N6}^kHuXWO#(C)-UjV-MrDfeRtumHxYELg z!~W_4Z!>m{zL39Re=v@hb?A@Enlm0YXrFT|-@0-6TCL-<2Fwd9LFef+v?3S^@%5C; zHLF$x9`+X5i2BM@WOIL&A}+2j*e%au`RP>mh~|OX7nb?$p3XZ&`r5Y1VrWG|wgYDrDP0q;ho#fqR7Bq{3qpaff-fnS9O$gl>4-Pd~+} zdN)5gNMOcxX_anS!7II#FO7rSPU^Bhe=oJc0)^?lVpJv~yW`d?Nu=5>=czWiI_E!! z9s{{&Z2DE4NUN^sTI@DeC8Sk)VjG#E`^$Eon#8>QXf~{YPapUlDl)v2R%fm!DN?1t zHqW)B&7wOF(a_y$q0Pu8v!j($j_Eyc=tT30MR&GypGz8yW`yYLFOIvPcH zc7zLDuY=<1BxXmV+GUHtbN-qNGCP{)5_=ja^Azlq;T=dD)XeQP{JVbhl}j{E*z(~C zXl`mE2C=<9l84Z^ZBTK(UC#~{b7^5zMuIOs0tPWMqpj_5q`N&OQ44=XnhIy#^{BSB z*hKO0`W);#Y&joihOCmEK?f1fQAhogLyqVBc6=QZh}(CNLswzS^?f~Ai1)4p9;@oE zNacdxz)dX)&+W+f(IaZS69AH+S=w9e$%B>6?%bu{W0l-vMSJS)-rH96 zq#Q#dwx-cuHRKd@XcByb?b9f+mnm?*2)m!Eag}VhfkZ@`ijlQ7zW|^(JG#PxO(z!#KN`+Rx&^mVy+(+$c z7J)tGiOTsQ-=Y~JzggMl0g))4k>J&CbOf97d{vfv21W2bXwBl7u5M$xWW!oa z9%r9kd$_mY8G4q*D`V>Rs^`G!AT)r-GF&Bo?uM12DGu?JTEV9!`A@}{R>gK+q5;K& zFV}xDFVlZtrdr5`>ix!j4GRfVybnn&vQ`Myh8_>n)FO`Uq=Qc1%7NX#=mla8b z>am@?BRc%3A-J`+k79`|4npC!L6{L02 zNCXu%J?-Q-JMKA__FNEp61-fjh+DO;AD&6F%}5JgUJUQPoSJGw?g^p&0SPgt2=(+m zmTaaNR3OT)ZszetLTs0`GCUIw6oQ@{=fcEwr9VD05D>mYlk9vU+nVnp+PV70>^%X4 z6^f>*u+wYjw8%rE`P_$-XK|f5m4rSmXOs*_~Fu-I06{-0h=c;Zh&P5cnHFI-PK&d1^ zP_;`yXkTUVv$r$NqM!BD+{kG}!`h?eeC5X+D(?{LUyyQs$WdPd=y~Y=%o-F1y$xF zr|;cZ?!rFf(6!&M6hd2R><&m*C;Iwu{Qk0!6=+fW?y1g#v#Qh~%aW8=S=pp7_n>z# zzG~Of?4O9Ai?Nyd;(T;O+iVs>GacG~y3z+V-s(Q(up?yw9{>Cl+W%wlPSu&T6KK`_ zBHD-PmPn8_r}vlA zyR81Yly`aJN7E5PiOqOQW;ucZxQ7&i%k-3Jyi_B`hkcLYH;A71re>~pK`bPAegZN- z7P&w}fClj7wc;4$-+PteXZ}p#5W7m~S{JF|$a<0t551LV)K4gkX)*WrGd%8;M(;;B{Bq9X*%v6v~F3~}=) zr8OiUHW7;e=Op6#EK19r`ulep+81-ZDoK)dtqfh)oNG-A-cQPC>nl?F8tU!=IXhxU*nluFs!4?S^MhLT`d& zD;l&zvTV)e%tJ{DG)@O%;0!vIWDJ8v#o)wqYP+YX8Z2cJkSalN62&w<)Y_W#y{-3A zH+yH|ZmtJ9RxeimsAn_YI!QKQm*&K_j2ddxGQ!KR=QFU z7akad+6Q7ZZC$t5e`pLm5k0->q*}6$7O7&isFAKP8jOS|m(8x?XO}#pv zVRlWrdl+f3=E46fIbpZ9$TG}XGE319blbf0o@+V=S*)njuecGLqnG0(4~7J6CYnD} zQYmel3#9ftQA{J~uSsjP!Z?;T`pj%@hj|Uqdu^pgu}@lbvg^O;TMF)A^Yzvuk~t^>T^P z=EBXE{eBHUvTf)MY03)x%FdUB`{0a7XVe4O)Jo=`I=2?aFxX(gyp04UKX0O6 zUyGNj?zZd7pFynBXM2XcdxM&lN%B}G#WsoP;N=HgSXOmbx@_B6Z7U90Bwa;qiV)8<$n5!NUw`8 zdyjKZxq-0?x(cK;2z7Qpb3e(J^4i~W3zey01|)|EtK+6_+9y`;l26O1Y~*iI0OtfR z0m=*L!m}GdjvbVn{BY&oTS*Y;HR!)?>|S3u zj6MI&?g~Ta1rX?C%gyt{r5jIy(LVwGmyOqw(95d-tqCwZ&EA`N0F07bx8B8${Co+x zL;tTQ|Nrd`lIc4q>bF8N9)cNw;j4hxO3NxWlzt}uje`z0g-{ogf4-aY%YcBo zs)s6CF#Q+xU0VspKu{a)Prb76dUx;FfqB!}o?q4ks0(R;&~ccob&&SiNQPWmy1vlJ zMGbl_)VU@Tsr;X;ZQI*MGa6Z-W6M`R>)~S5dvyPNVmCTp{&a3Otr#wGbaEQ|Ihf7lmZ>;qq)^$;p*4lP(2%B>1uB65iYj=Y8#L#I@2m=E>R|QYsPy|@fDaKwMds+#ia1GuEPn#S5Kg6guB7>nJ+-Kk zipHN@%NH7+Dei0_EAPD#wkYIMrdh=n+glE z{-`t1Bh0BvW<5Y)Ag*4vaBEJjnkb8t_f`v+7~^sHlb@Ca??ElD% zXq~*}Hj<|l?tS?C;nHMHTPb9|%*Z4$!i4D?j>cK|6OPJ!A$(^W2 z^rnanJ$w5HPd)R^``qT(D?-e&91{bMr)rnKTe;}i7?xH#RM!%F-d-&Jb`8FKQi;+? z=pDU=tkH>Mm6shAP>;&mSTaPmI3!dW#4X5ffr0WYSynwaYefOkGW|X>U;k!bqK&c<>d8oSM&@!Q7Mpb!9@RZ+)~;4p zS7%~4mu+SjXnEI6bw8yJIy~(D!pLDbsSwAWxgH`XqHp=x8_o`hK&Zi9X)*rUvbu?4 z6HdGjuyTWonA>-A^h!*K)23Pe-(Rj8IM|#&Yx;4dt6h~LN)eZ;rl;S`L|{!1?F}pt{^9tw2I^lzXf6M5-}G*D%YMet8~4k zbNujvvU?F3G{&*M^agRO%5Kaa;uGfW-cD4@hE^s>+eweX$BihwNut_TugYvOw*2xn z%20O&qtgyot6Sr;CMGT=ZSBgURY`+G^H_g zKuL1Ed~(ucOrkqc>YFy~Jx^-U_7|^WgYcZdExlZqxB`TMlVLkanq^`)tP@itMlgZR z+;nm9l0!E6RMq=)%|>7*CdN8pD66e zN@?P91tj83zaRv?+-b>%u*wDy*B+fG9232JmhW7qGDYlS4>l*P=`V0sQ#9a5PIB9) z`pF;bz;@i)N{(&JSe0qqPp0em>CR-KWegOOy-gI+uHITwn&>V^diGJYg^GUpHF3{?Bj) z#f8J7zs z+u=Nq7KsK|7hVhhFTFT0Mv!InjmDRfSAa3zeSj&}UZkg_jk!k+0^NIkehzezn~#k~ z4EWfUWVu4~8k^9iON=_L00dPC}5r1JlAg)|DKO&X{cWf9@0qj7+_o zdE=+rcYIxtljTa`)ayU;!VT+|eTSa7o^=IeDuhj^gw zMe69785p#iU|H5jF+Ibj6+u;)4H6^5kWf~INf<<6RB(Y)X-?X@>^G*D47HJlGX>#3 z{$45d({0afgdbAedvayrvE%0Uc;~*Ob(!>k1gTOXMkCS5lJV_4q+WBgQcR4JLEUhd zvClqd@1Az<3NKCctS`Sr@q+lapUQmwn*Cu(o2RO$bX9|S->QpYkRwT$f!V+Oftcfx zR_>N=RgyeLLX<^P&gUEcC7<4R_h^Oth1>CNv~)&apc|fn z7};{jfZlMy-l;cq*emFH;(pdud$Q#M%}LL%m?#{GB06fDgs-mQ`MRCf4(+7ghYVhT zK6on?Yu>hNHAVgTHn5lvnPZUw!}HPub%M-V216j22rej+TXTLYXisoFcHN z0n%mr9Xi^HsdQ93s{i>X3%QwqXV{9$Ayhf>z_q+ZJ*rYBpC9V3om=lRoPeWWe>n7+ zU&yAV(ZPPnHFS#J!Kc+R`O2@AigjSjTn%g!r7~@vhNY1uBMi&92(E^ds`ll8me`PG z>Vad$SnG5m^Y4z$zVKRqJR|tCO==L!l;RZiJ*Kyk(b9d9r9~A6aQ^4&`jV{R+9CtE z3svNc)KN^Cyn0@wO`s&brgooiy%@J6Brz7(sqR&g(KY1ll)}FKIq$D{x+x?l@oGmA z{1UG<#zf$CGbzN47Bo67ePelDn1T=052|~ijl3r$wb-Ta zKQeR10;d^_G(A+{O@x3w5RjIbG&4SN?OgBkH}UvF>XWB-oh76t|o24b#} zv8~qXK>H$Z*LR(Rpz**(xe=e6MHRcn%AQ{%XZ_>8&f^Ow)76{^aQ7E-6Y^m(1P9yB z!yh_sy0b1Es)N!=&&}`{IPy8Fr7zHVC}Ys<0ro>;{n|n8qgO?5ThHB(yFqYCi$o=> z-KYRVa?!UB>Hxk7P;5KZc|4WHFW7^X`qdH97@Hnym`*8MKd}c&?@xDm3uDjcGcqdu z+Mjd_gS>__Y(RlaA$bJd*(~OWtfCB&{>eq~z(YGqJ|Q2mxfTR()w3rHIfF8_#~2m8 z$Fk$ux`>hz}d<0`+cdewPJ)ds|D7oyxqVGan_4!wK9E}Se=tmDu;-BDp7YHvR?eX;KU?m z(s=lxt>%DNdch*C%7&^3=Bpr-d0?re-D(WAyEM}C1liUlB@kiB<$xn6(e%0^2s3o&0l>rTYj>C(CA2ed<1yb8k;@u~nVp+8TJ2zp=)Wlr? z;OPG5;#37mlsWco^&qD!BFil{d8&Yb66aL+p7mmSL$PX^fr}_7j>u8`es!o_$+T3Q zE7xqGYfjve{^4ZGQM}@*4TkezBBL!QcgIr63Z76=SvB&L(IW+05>j{Tiwu-~E)556Jp>v7&pUb=ydK!7_7=#^5zWdx0 z3A;h&tqBxY1@n`2xkgyp_Sv5qTi<|*_Teig@eXTciZ!!At7;*a)yF?4p0Z-w4ke&t z0O&GB=)i@eK>U!JXR2|m+O5>+HkUUEk|4B=mfS)Y({WFSjXz>Z(>@s_3z>iGEhAj`@$UHJcs zK6}a3*`iKlpx5*FK6HG@sQwi=W5yZQ;Xydy+}+%!789q|ZdGA29UGPq)xctBN>#9< z&b8G>GxEJIKtdn$T)7|yNtl?a=#f@3Xqu^5_aRBYAHNeLURqZmW8`NaS^K=AA|i0O z#3`sE2D!{C>CZmawQpmJ*}VYbrUMEL|Mc*Gyvs$y`olmDNc0RL_a|U1j+39XcMg9z z+yQd!itP(NQ}vr|)H4lvnmg`+N91hF6kHyGb)lP4!P{qj1H5K0C8e6u>9sAgD`*wlQxI zfr(qdU~{xCrIc0-zfFpBumiJycD8rWtmCqRPV)=Q>Zm)0zyvI4GIs zv$#+V*OKz|>c+oW0qC}9`A#Kx3;Hv^;2ek*OxDzyw@U5(HT3g2?4?`)0npTnk2hbf zR(Z=bt(5)9y7ga^Y*W(O*jq;B2dQ6oSW2O_YQtSi`^6&g%&K4&E0VEX>xRq(VwUyM ztr#9F$i`%-9v6*lk-ud5Waee$YrQ%@2OyO#d=?)7cCj+**1bN{X$QGE6MPaqimSEZ zy>%>R?Vv4u4@gVAZvbZ3Pr+nW9ZvY&w2=p@tWwhcw~%-}_!cJXd|qdFdy@Hc_v-N=k3F*ENfc{=bXT2=K!fP!83^F2MkOD-%rr{6dm^2FrB;h>tgqI2rem_H&YbEd z@79+O!OJ4HgNYp9tg2sq7FQCnQ=dPi-ue($RH|X5rmt+X&@)j9-&oV(b0+!}7Qeu# z%xZ1hBo(~oVw+k=3vxb(AXI7C#^*cY91UXP{+QVm0cEbnrGJ8LK##w~{6J90n@f&o zx7Z1!_N!0dUX|6}C{&KxsC&T58u*x97oD8#=~FD0bYbdk<`Ofqur#X*tjwL9DNPl= zI5}*V`vMBvWtGQ@A`wfqE&yQ`OX`$+O^~@oBPHoCO$T~Ba-M$t&y0N5j{dKVoI@;; zzSIIypIXA6kQdZfu4Y&^+29CK=5|9T($E%K)k8#X8=!kW4>G?rb=Pe+VZ24`e>7H1 zUpJQ&)Fwt-`eUSG%h4UL8MPM=l&u#$5QUNUqw%+QNRbIrUMu!PIdZn*uWtqYt24WE zwo-OZGU5QYW_$DF->%QLUNP^+U-|OWzq#lCXNmWJ$rJy(!?wBPVFBI0c1}0Hobt6j z=Qv;Q{`Y9)|1RNc*$=6&faV5hrn+P)-)4o8-OKv1zmCDoGHmj>(R!`)59i1Q^*e*O zdq4mB7_yIHJ=y$uwRM-og#5!h=YyV=2r3T2`<03Yj1<<|JftL%zqam4SICi*+)bH#JtNajRb#*_2uMwVwr6f|m}dLoH{QV0usa-Kb-!1b3_X@bwKGKR zE3Kw^3f(Hvo|)uZ@x?l>4{r}5WpM$3l0Mra+(rGXKm*)y2McSa9{f& z+Sb^3W6P~wjf{*eu<4jWI?+5Da)lrEcew;a7rj^8l-w{asx@3AzaQTu}&ZWO!8SesGb zZgyM&Odtc66o-*0GoBWp$`*+-=x-BJHkGcc417f#=(8sZ-Y`VJmBg1Za>u(6kp)7f zq?H#uK>a%qXZ)SR#Ye@E1w+R)m$aA_NJLghYQ@x@le`eG6{?f8t`sCtXwBC*q99)l z4ke_8=0(lPt2YRelqP(w&~LrBzzsN>k+#{3X>4TMZD{Y_sojSNx6>`VS+{Lamjb|t zclLB|V`BYZ{KY?KH8nMjj*S)7r;;o4Y0kTwO|eSZ3%tL&V%M#+_6{Gl_UB{mk=q$U zCs*FZIDtcsIPFCWciS31db;j6rvO%v@%>t!*zEzA%s5PQ@pB4Id!@_{WSWp_=f>le z0WY$EB#eXtY5m$tsVv0UkRJ|5I$_kUg(xXLijKT(bT&Xf5vZT3P^~9i*ETQ$7xwa$ zra9nR>mr{qdE+B5SK5$9XNF4w#vhwC+w;1rxO8j}8X5U0F6BtY$iCnK8k7mT&bnRt^cTLoHjZ zIH)^TgVl^@%5iq-VfrP3a8`>3zO9_bcQm8O09CD>C73j@^wleYV!nm#FT*>8#ISfh zJ}G4;0F`XDb&uLj)ojVjjT<6ZsykbCB78Q#Hxj$g>K7uvz2E4uhU&F=-4Xbn>b>*L zV1NAR0$eU=ygYGbKw@shbd{n|-7N`jHXGO5`>bSqZ}b9TqF#s9Ut`DpMV*+K0|9_L zVlF>ZBEMn=>DhivAKU%D678?W zl$mLmYbL-PTjpf9OX4dyz1+q7R`NO&ir4#w|R+XNQg3NJ9w7ih;r;;`)skf=8f(ll?t>1N(=+`NR5MUKX~x9cY~_*?GWa=BgsU zn^l;#>ZF-Ti&YGciP&ynh|VKRQ6ZYEgTyk#YB~@*Y)#<7JUnF_>eVbg>ja31h;8>4 zU`qVu1~Y>eNZYV+g#fo*n%7^4(E8b$+imM?wda1w*6^-UG-s;cTq)1;*jrB=)KZrH zL&v9c388V&N@(wgCe?N-CrL$}f# zO}QiHj<S-U7q<=Gu_zVn|w zVjjVt_%8g}b?PEWAWr7>OhxwfVmi=Z9hBoOnnmX6+@M1He++S=+;%w;ZalUs{YG@I zmkuhXNq6qXd73?c9V(Jq30C6RF=DS?A&tV^qc(73*)3O_O6yg|^5PZg`nYp66TrNE-m@*{Dv~$VGs;>&{<5a^#OVR*~eoGU|y?W;)&{KOWV1{OuK30rt z5Wez4xI1XWRdO|vZM*GgC+-%^I<}2KW8whYo2P-PB|W4$a|z}kR+ybnVWjd@FEy*- zXyfM6qE>Ew-7~s~>oKoi7(Yv}e`hi&P56Xk+P^c6sZ6ye5q*{amRKNzN(O-K6q!zq z-O!GH2K;)MesyL2e$h{Qjnz`#S){`8Pi+#R%3|z`U6VIyRdCI-H7`;b-qFsKIHvTX3jm&XDN?)byQji*bP;ZBLEevXa&$cYFfh^C!0!P}Knk|k zg*zqLhK$i=1}U%TdeIe(9vjD=T#J@y3-Rr%cNu`oq~*?B)DtFq_l`8I8?=wI=GyPY zxfSkK1!I>3=QcA)t#incCH2d(pJQ(CQ-M?~b7ufG&^3&`SBN7fCxJEI^pVfhMu0)yR9i; zLlx8hF_fkJ2D}l%;QHG@;C(Y&(KgsJzlW}~sMx^kvOB0NEozotfJdq?7QAvw(jKh& zZF`V5x5RhtvkdFv#^+BHz6~Y?0A*0IaUj{F7b1`;i!52Fteo~K#$*u6lU)x1H9KeB5WyQD<*Q<-A z#qb{&+EK>O96Vt+}zyJ$w9BPrZ5NL{i_fnWBy}E8+G>Q zq1}WtwY(mJWd|S%4EbFm+P0jXo-1`Ga`?FTf811k^adbelzNJ^_x62C>V$*_Zn`)d zspi5-xByjI57M{HJC7#Q(~X4@D*3}Ibxp;}(+1w>3`@k;64W@6)Fgs1&$dC;J(?0; z-+FZRh`(X)m4Jfz?~CTlhqPd@#ZR*j{;|7_X;Xm+IOI9tM)pZSy?GxU4U4c7Pn= z!MV(Y4hgsFp~-cZEp{O;=SWK*J|T^&0im!QEx+|nE``lYJFowHdpV#o9gBP0Xf->R z^qpb@h59aiISS!T>6f)jR!?keKC@IYCklssI+h--eVMh;v-fmRDq*va0XtXz!3MdC zBvV@b-a{5x$|V$Ogt~Vo{l0G+>}P>IUS4`?H^-hShEn{Wlv4Cd^kn9oW)OV6(Ra4t zKF()+hS8`sz9H#WWK3P7YNIuysI7!(8V9=>fJoy1jdK1MZpj2VWzLqfK2aQ*Bxq}1EKREs z{G!teiGAu3V)-~_IsmZzd+MZaynI>cpKX)_A-ieYhVo|Vi{fzWYD2dF(3pCj9hui@ zWLd}_eisK+0;39z=#nMVZugAijir=)=s$@sMoQXDKaPuKuWne8SHoK6YRXGo%MaQt z63KKa!xu*ewveZ4TEhpWf((*)typ8RT8^r3ui(J67juNFaCNl(r@L9eQgK$F_RR3iH@zfF7&LaID8Ec)sIUKiizj6=Gj-deuqsZ@?@d_&r|1 zmY$P--!To2v26bkP7+nYaa}q7n%ro zUxZIK>lf%FEg>TwSY@N%1QQUd9oW4PUAmNr*JI&&geJpZb3k|;l;NFB><#jVgjGpD zK|h*lW{ZEBYRiaW{syeh2EV6x2Si-x+pT{gw<-*=$%NTltJJG+uaOz^pkaFv2uyGP z5}(s3TykRR zu-q;y_!;6M!sh(p8|!!nuJrbW>_WZoaz%kpTIKY|2C#@;RSO5wkEjV~ND``?i_4PW z|G2Zhd8`*3ZFv!3eABOl@ra7Je79T^bn0Wwyyb)N8IzLlr+iVLADEF^5%j_|$-q$Q zX^v`EVh#Uo!xf4m4%p(<+`!=tG2nhZGk)gBG!M7CJ+~nm3V`anc=8zRHpI?9CK`2YrYTZsBjt-06Ky#QO3hYnbq4K?u!DwA z7IUn$nFd&&+J+th@xwwf&k=y&r)pEab7V?1OavcXbum>Wphwr=-xI%XDSN)&dK{|` z%}FAu8H^F64tA42<*44*#6S1YhIo z?9vwXdc$)`-QDp(S-45{=6t8xTGK{tu!MroYtJV)!i7*DZH>C*`2Q}aNo9)=zdj?8 ztkh`;zh%S`@UAi0|ArNywT*^nOceik8?-BM``O7mV;&eG3r^aQkiqQMaN0ox zk*C_1EpI9_nv90%vfs+6_HH%F?+J=2|Bz4R;^_3@RkULhe!`R0-u=*AwOS<~N;$8E z)W{%qWULlL|LR_eJcJAmvQuDv#9+srX$?(pqS4+^tf?Aaolz z15O{NnH_np4vw7@TUMY8=d~)NBvUsD6zr&dF2pR<6SoE6#REZ0s#1NTX0-ydn_q+D zb1$ug_w_Z68ErpL-2cKIwg8q1JUv?FRKIWi_}x9~bW7Ihw!VIz?`-_12CZkM4H*;X z$m7w&LyypP@7f{}BJ5*9Vfu+XuTT5M+kpP_Iyp25J=f3k)BleizfU_Y)8 zL-x{j?$DiAk^cV$6!NRryJXoU@`i3tqbE^zagggDJO5gzi;ph^yDr0R>Hnf%k5+Tj zIKmY3YK7lQe(XPoa@&=rFKx;0cDGHQUU|wa3vh`ScF&)bAXV;T)P-p4v!HH?D+|9K zfp2unc|2jrWTs9~E4-Tg+6pKbO3pYhvzjb!28heWpGu~F!nY`NmE(Z_-mnRZE?1ww z5%DbZ$<^N-(S3lD1?uWrQonyILiEioJ)lzdB9PVNdAt zyBL|U_l4Y#l|~#?um}`md7rJ~#m@%<{gYL-Ye^=HW^<0;aVLAqtY-^MP?O&Y3>1rY zRj-8C-|qZk0BC#bh99p}U7zH*<#3Vn<6S^uV_^K`te=56{bC`9*}XcWck=T5V|4a~ zYqSO>QD9Lys?Z4K5B+^ydiu^*PQ>0O`A(9G6}&J(_lXctD=RGe*gm0G7UqV5lNQ?U z=y&rmhdec>5j5%;^jDcN>q+F8VBF{C70`jJ*xtBAmnSdeMH%)c0#$Mx`B1i6DxUBJ$n~zvrL8*xbs>UYOmjH=*j$xKalLg!0|{T*{S2oR#mJ|C z0-JZCk3GeMv9_%4f@PO59+ywwiBS0-CrD|H#W-1voW$lcqr*^ zv}NeaJ@=JH`sS+)#-|Fjrc%Q$2~Rbw&#NCuiZ5kyTRNYMXhb%krU>$Hxsl5h5V7Spv@Ti8umBD2xEk3JovnHO@>xDm8M6iWSjd`-5YlyjPIz~Zp5tv?<+MvxH;XIDV>b; zt-+fSGvHlWCpVmGE@F3`IO?DI^lIW*6)X%YnRL}?nYcqAtnTg1er3reTf|W- zU)Ep99$NuHZ0<})7y-3gf}XuUCT8WpL$xR559~P&@!NZslT6EHWv2YWIs8c?JcnU{ zoI1`(4h8}R{Jq=IudW7JW6GL_q3ZOZAcT@(3n@D5ebd_mJUjx(NpVdx=8T0-3wvYM z2BbUE`h|pJQxs^J6i8qA9c z@D+vTKuOule>L|msJN9ZC=z@wD55fw4G79jeKH5u?NUze`fVMxmeq`Xaal#|dn!Km*q2(KoH z%(|ob8xF}qj8|RK^goBhwTFq)Qu><;Xx5AdwXgBa-B|z1U|-Z-t@?4EE*6U|1qCj` zfjXQxdFvTtw;BjM7j%3CriYB*0Vcu+gUMD5s9|cb!XAJk0S%zeOzSR3Pz`Ed^nIfO z8+@jM20dC=EFL!2WX}QRj069tWM__r2cSaj6Gkue5QjFjWvq;rLjme#4kxx(;SCR4 z+{k+V++h(fJ5WEu*_tA=mJ869FvFDenD0$01NHr#ty7MAN(eZi4X933 zsKyNDr-V3+`~a@2ZOIvGTC&o;Px_Q!V|laHRo#xXBC5#S5kBulc;~n&ImgDkts!ul z!4|v^%?Rcj+fS+VEgOiHN{AgQDJNs>Zv`fuso0?$)wg(dnUV>ObYd~u+>bJCYCbsa rEUSe3A;9`T2?sbuX@C1<&dpJZ&2{iU?{~q08B%iJ=IP3E*`M++CTnMe literal 0 HcmV?d00001 diff --git a/out/production/JavaSwingSimpleExercise/images/img-4-3.png b/out/production/JavaSwingSimpleExercise/images/img-4-3.png new file mode 100644 index 0000000000000000000000000000000000000000..7cdaa57f2ae867d9bb433a6185bcd1a9f9b4f5fe GIT binary patch literal 34017 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 V_S(9L8wdPRQBapJmVNr}{{X!KkaGY4 literal 0 HcmV?d00001 diff --git a/out/production/JavaSwingSimpleExercise/readme-part-4.md b/out/production/JavaSwingSimpleExercise/readme-part-4.md new file mode 100644 index 0000000..2b65f53 --- /dev/null +++ b/out/production/JavaSwingSimpleExercise/readme-part-4.md @@ -0,0 +1,132 @@ +## Exercise 4: User Registration Form Application + +### Description & Goal + +Design a comprehensive registration form using `GridBagLayout`. Students will arrange multiple Swing components—text fields, password field, radio buttons, checkboxes, and a submit button—in a responsive grid. The goal is to practice advanced layout management and component integration. + +### Code Breakdown + +**Part 1: Field Declarations** +Define all UI components and layout constraints. + +```java +public class RegistrationFormApp extends JFrame implements ActionListener { + private JTextField txtName; // User name input + private JTextField txtEmail; // User email input + private JPasswordField txtPassword; // Password input + private JRadioButton rbMale, rbFemale; // Gender selection + private JCheckBox cbJava, cbPython, cbCpp; // Interests selection + private JButton btnSubmit; // Submit form button + private GridBagConstraints gbc; // Layout constraints +} +``` + +*Explanation:* We declare fields for name, email, and password inputs; radio buttons for gender; checkboxes for interests; a submit button; and `GridBagConstraints` for positioning. + +**Part 2: Constructor Setup** +Initialize components, configure `GridBagLayout`, and add items. + +```java +public RegistrationFormApp() { + setTitle("User Registration"); + setSize(500, 350); + setDefaultCloseOperation(EXIT_ON_CLOSE); + setLocationRelativeTo(null); + + JPanel panel = new JPanel(new GridBagLayout()); + gbc = new GridBagConstraints(); + gbc.insets = new Insets(5, 5, 5, 5); + gbc.fill = GridBagConstraints.HORIZONTAL; + + // Row 0: Name label & field + gbc.gridx = 0; gbc.gridy = 0; + panel.add(new JLabel("Name:"), gbc); + gbc.gridx = 1; + txtName = new JTextField(20); + panel.add(txtName, gbc); + + // Row 1: Email label & field + gbc.gridx = 0; gbc.gridy = 1; + panel.add(new JLabel("Email:"), gbc); + gbc.gridx = 1; + txtEmail = new JTextField(20); + panel.add(txtEmail, gbc); + + // Row 2: Password label & field + gbc.gridx = 0; gbc.gridy = 2; + panel.add(new JLabel("Password:"), gbc); + gbc.gridx = 1; + txtPassword = new JPasswordField(20); + panel.add(txtPassword, gbc); + + // Row 3: Gender selection + gbc.gridx = 0; gbc.gridy = 3; + panel.add(new JLabel("Gender:"), gbc); + gbc.gridx = 1; + rbMale = new JRadioButton("Male"); rbFemale = new JRadioButton("Female"); + ButtonGroup bg = new ButtonGroup(); bg.add(rbMale); bg.add(rbFemale); + JPanel genderPanel = new JPanel(); genderPanel.add(rbMale); genderPanel.add(rbFemale); + panel.add(genderPanel, gbc); + + // Row 4: Interests selection + gbc.gridx = 0; gbc.gridy = 4; + panel.add(new JLabel("Interests:"), gbc); + gbc.gridx = 1; + cbJava = new JCheckBox("Java"); cbPython = new JCheckBox("Python"); cbCpp = new JCheckBox("C++"); + JPanel interestPanel = new JPanel(); + interestPanel.add(cbJava); interestPanel.add(cbPython); interestPanel.add(cbCpp); + panel.add(interestPanel, gbc); + + // Row 5: Submit button + gbc.gridx = 1; gbc.gridy = 5; + gbc.anchor = GridBagConstraints.CENTER; + btnSubmit = new JButton("Submit"); + btnSubmit.addActionListener(this); + panel.add(btnSubmit, gbc); + + add(panel); +} +``` + +*Explanation:* We configure `GridBagLayout` with padding, add labels and inputs sequentially by grid coordinates, and group related radio and checkbox components in sub-panels. + +**Part 3: Event Handling** +Collect input values on submit and display them. + +```java +@Override +public void actionPerformed(ActionEvent e) { + String name = txtName.getText(); + String email = txtEmail.getText(); + String gender = rbMale.isSelected() ? "Male" : rbFemale.isSelected() ? "Female" : "Unspecified"; + String interests = ""; + if (cbJava.isSelected()) interests += "Java "; + if (cbPython.isSelected()) interests += "Python "; + if (cbCpp.isSelected()) interests += "C++ "; + + JOptionPane.showMessageDialog(this, + "Name: " + name + "\n" + + "Email: " + email + "\n" + + "Gender: " + gender + "\n" + + "Interests: " + interests, + "Registration Details", JOptionPane.INFORMATION_MESSAGE); +} +``` + +*Explanation:* On button press, we read each field's value, determine selected options, and show a summary dialog. + +**Part 4: Application Entry Point** +Run the form on the Swing event thread. + +```java +public static void main(String[] args) { + SwingUtilities.invokeLater(() -> new RegistrationFormApp().setVisible(true)); +} +``` + +*Explanation:* Ensures safe creation and display of the GUI on the Event Dispatch Thread. +--- +### output of the code: +... +... +... diff --git a/part-1/E1.java b/part-1/E1.java deleted file mode 100644 index e69de29..0000000 diff --git a/part-1/images/ClickCounterApp.java b/part-1/images/ClickCounterApp.java new file mode 100644 index 0000000..be5f9a5 --- /dev/null +++ b/part-1/images/ClickCounterApp.java @@ -0,0 +1,37 @@ +import javax.swing.*; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +public class ClickCounterApp extends JFrame implements ActionListener { + private JLabel counterLabel; // Displays the click count + private JButton clickButton; // Button to register clicks + private int count = 0; // Stores the current count + + public ClickCounterApp() { + setTitle("Click Counter"); + setSize(300, 200); + setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + + counterLabel = new JLabel("Clicks: 0", SwingConstants.CENTER); + clickButton = new JButton("Click Me"); + clickButton.addActionListener(this); + + setLayout(new BorderLayout()); + add(counterLabel, BorderLayout.CENTER); + add(clickButton, BorderLayout.SOUTH); + } + + @Override + public void actionPerformed(ActionEvent e) { + count++; // Increment the click counter + counterLabel.setText("Clicks: " + count); + } + + public static void main(String[] args) { + SwingUtilities.invokeLater(() -> { + ClickCounterApp app = new ClickCounterApp(); + app.setVisible(true); + }); + } +} diff --git a/part-2/E2.java b/part-2/E2.java deleted file mode 100644 index e69de29..0000000 diff --git a/part-2/images/GreetingFormApp.java b/part-2/images/GreetingFormApp.java new file mode 100644 index 0000000..2b2789b --- /dev/null +++ b/part-2/images/GreetingFormApp.java @@ -0,0 +1,48 @@ +import javax.swing.*; +import java.awt.*; +import java.awt.event.ActionListener; +import java.awt.event.ActionEvent; + +public class GreetingFormApp extends JFrame implements ActionListener { + private JTextField nameField; // Field for user input + private JButton greetButton; // Button to trigger greeting + private JLabel messageLabel; // Label to display greeting + + public GreetingFormApp() { + setTitle("Greeting Form"); + setSize(300, 200); + setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + + nameField = new JTextField(15); + greetButton = new JButton("Greet"); + messageLabel = new JLabel("Enter your name and press Greet.", SwingConstants.CENTER); + + greetButton.addActionListener(this); + + JPanel inputPanel = new JPanel(); + inputPanel.add(new JLabel("Name:")); + inputPanel.add(nameField); + inputPanel.add(greetButton); + + setLayout(new BorderLayout()); + add(inputPanel, BorderLayout.NORTH); + add(messageLabel, BorderLayout.CENTER); + } + + @Override + public void actionPerformed(ActionEvent e) { + String name = nameField.getText().trim(); + if (name.isEmpty()) { + messageLabel.setText("Please enter a name."); + } else { + messageLabel.setText("Hello, " + name + "!"); + } + } + + public static void main(String[] args) { + SwingUtilities.invokeLater(() -> { + GreetingFormApp app = new GreetingFormApp(); + app.setVisible(true); + }); + } +} diff --git a/part-3/E3.java b/part-3/E3.java deleted file mode 100644 index e69de29..0000000 diff --git a/part-3/images/ThemeColorSelectorApp.java b/part-3/images/ThemeColorSelectorApp.java new file mode 100644 index 0000000..f06baad --- /dev/null +++ b/part-3/images/ThemeColorSelectorApp.java @@ -0,0 +1,56 @@ +import javax.swing.*; +import java.awt.*; +import java.awt.event.ActionListener; +import java.awt.event.ActionEvent; + +public class ThemeColorSelectorApp extends JFrame implements ActionListener { + private JPanel mainPanel; // The panel whose background will change + private JButton redButton; // Button to select red theme + private JButton greenButton; // Button to select green theme + private JButton blueButton; // Button to select blue theme + + public ThemeColorSelectorApp() { + setTitle("Theme Color Selector"); + setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + setSize(400, 300); // Added a default size + + mainPanel = new JPanel(); + + redButton = new JButton("Red"); + greenButton = new JButton("Green"); + blueButton = new JButton("Blue"); + + redButton.setActionCommand("RED"); + greenButton.setActionCommand("GREEN"); + blueButton.setActionCommand("BLUE"); + + redButton.addActionListener(this); + greenButton.addActionListener(this); + blueButton.addActionListener(this); + + JPanel buttonPanel = new JPanel(); + buttonPanel.add(redButton); + buttonPanel.add(greenButton); + buttonPanel.add(blueButton); + + setLayout(new BorderLayout()); + add(buttonPanel, BorderLayout.NORTH); + add(mainPanel, BorderLayout.CENTER); + } + + @Override + public void actionPerformed(ActionEvent e) { + switch (e.getActionCommand()) { + case "RED": mainPanel.setBackground(Color.RED); break; + case "GREEN": mainPanel.setBackground(Color.GREEN); break; + case "BLUE": mainPanel.setBackground(Color.BLUE); break; + } + } + + public static void main(String[] args) { + SwingUtilities.invokeLater(() -> { + ThemeColorSelectorApp app = new ThemeColorSelectorApp(); + app.setVisible(true); + }); + } +} diff --git a/part-4/E4.java b/part-4/E4.java deleted file mode 100644 index e69de29..0000000 diff --git a/part-4/images/RegistrationFormApp.java b/part-4/images/RegistrationFormApp.java new file mode 100644 index 0000000..1322e95 --- /dev/null +++ b/part-4/images/RegistrationFormApp.java @@ -0,0 +1,96 @@ +import javax.swing.*; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +public class RegistrationFormApp extends JFrame implements ActionListener { + private JTextField txtName; // User name input + private JTextField txtEmail; // User email input + private JPasswordField txtPassword; // Password input + private JRadioButton rbMale, rbFemale; // Gender selection + private JCheckBox cbJava, cbPython, cbCpp; // Interests selection + private JButton btnSubmit; // Submit form button + private GridBagConstraints gbc; // Layout constraints + + public RegistrationFormApp() { + setTitle("User Registration"); + setSize(500, 350); + setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // Corrected + setLocationRelativeTo(null); + + JPanel panel = new JPanel(new GridBagLayout()); + gbc = new GridBagConstraints(); + gbc.insets = new Insets(5, 5, 5, 5); + gbc.fill = GridBagConstraints.HORIZONTAL; + + // Row 0: Name label & field + gbc.gridx = 0; gbc.gridy = 0; + panel.add(new JLabel("Name:"), gbc); + gbc.gridx = 1; + txtName = new JTextField(20); + panel.add(txtName, gbc); + + // Row 1: Email label & field + gbc.gridx = 0; gbc.gridy = 1; + panel.add(new JLabel("Email:"), gbc); + gbc.gridx = 1; + txtEmail = new JTextField(20); + panel.add(txtEmail, gbc); + + // Row 2: Password label & field + gbc.gridx = 0; gbc.gridy = 2; + panel.add(new JLabel("Password:"), gbc); + gbc.gridx = 1; + txtPassword = new JPasswordField(20); + panel.add(txtPassword, gbc); + + // Row 3: Gender selection + gbc.gridx = 0; gbc.gridy = 3; + panel.add(new JLabel("Gender:"), gbc); + gbc.gridx = 1; + rbMale = new JRadioButton("Male"); rbFemale = new JRadioButton("Female"); + ButtonGroup bg = new ButtonGroup(); bg.add(rbMale); bg.add(rbFemale); + JPanel genderPanel = new JPanel(); genderPanel.add(rbMale); genderPanel.add(rbFemale); + panel.add(genderPanel, gbc); + + // Row 4: Interests selection + gbc.gridx = 0; gbc.gridy = 4; + panel.add(new JLabel("Interests:"), gbc); + gbc.gridx = 1; + cbJava = new JCheckBox("Java"); cbPython = new JCheckBox("Python"); cbCpp = new JCheckBox("C++"); + JPanel interestPanel = new JPanel(); + interestPanel.add(cbJava); interestPanel.add(cbPython); interestPanel.add(cbCpp); + panel.add(interestPanel, gbc); + + // Row 5: Submit button + gbc.gridx = 1; gbc.gridy = 5; + gbc.anchor = GridBagConstraints.CENTER; + btnSubmit = new JButton("Submit"); + btnSubmit.addActionListener(this); + panel.add(btnSubmit, gbc); + + add(panel); + } + + @Override + public void actionPerformed(ActionEvent e) { + String name = txtName.getText(); + String email = txtEmail.getText(); + String gender = rbMale.isSelected() ? "Male" : rbFemale.isSelected() ? "Female" : "Unspecified"; + String interests = ""; + if (cbJava.isSelected()) interests += "Java "; + if (cbPython.isSelected()) interests += "Python "; + if (cbCpp.isSelected()) interests += "C++ "; + + JOptionPane.showMessageDialog(this, + "Name: " + name + "\n" + + "Email: " + email + "\n" + + "Gender: " + gender + "\n" + + "Interests: " + interests, + "Registration Details", JOptionPane.INFORMATION_MESSAGE); + } + + public static void main(String[] args) { + SwingUtilities.invokeLater(() -> new RegistrationFormApp().setVisible(true)); + } +}