From 80a09556e728e440c2143a3611927f3b341ce6c3 Mon Sep 17 00:00:00 2001 From: masihjalali Date: Mon, 2 Jun 2025 23:06:23 +0330 Subject: [PATCH 1/4] /~clickCounter completed~/ --- .idea/.gitignore | 3 + .idea/JavaSwingSimpleExercise.iml | 11 +++ .idea/misc.xml | 6 ++ .idea/modules.xml | 8 +++ .idea/vcs.xml | 6 ++ .../ClickCounterApp.class | Bin 0 -> 2641 bytes .../images/img-1-1.png | Bin 0 -> 8490 bytes .../images/img-1-2.png | Bin 0 -> 8182 bytes .../JavaSwingSimpleExercise/readme-part-1.md | 67 ++++++++++++++++++ part-1/ClickCounterApp.java | 38 ++++++++++ part-1/E1.java | 0 11 files changed, 139 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/ClickCounterApp.class create mode 100644 out/production/JavaSwingSimpleExercise/images/img-1-1.png create mode 100644 out/production/JavaSwingSimpleExercise/images/img-1-2.png create mode 100644 out/production/JavaSwingSimpleExercise/readme-part-1.md create mode 100644 part-1/ClickCounterApp.java delete mode 100644 part-1/E1.java diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/JavaSwingSimpleExercise.iml b/.idea/JavaSwingSimpleExercise.iml new file mode 100644 index 0000000..f29f585 --- /dev/null +++ b/.idea/JavaSwingSimpleExercise.iml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..a346fd7 --- /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/ClickCounterApp.class b/out/production/JavaSwingSimpleExercise/ClickCounterApp.class new file mode 100644 index 0000000000000000000000000000000000000000..7482d3504a92f1f3141f8af9fafc8edad3aece5a GIT binary patch literal 2641 zcmcImX>-$76g@9Ck?jbQh!Db>Ktt=elt4>Miy>`dNC|a-k`Nl`f?~fUBC_O4av*f2 z`$G5iZ*&Hn4$Sm(r_)LAfX|t zV*^?RjH~9Nd415oW;t_%r$;@rA_ZEHS&kJ92_&)uQ)#4-){xQB23?@NU|Xeyf?IO} z=?zz_0vk%|K|qY9ut{KJsLp2A1mxB(n|OojP`5 zH$73e=$1n9d1-T9l#{N&)AqB$e&6!r?F!`%F%eFru4 z3v7>rH=!UbxQ-u~PT*(Ii$@j4j|p_IlPsfDzz*oh;c)>y#87&nD}k;Mot3hLyLk;y z5Zw?q74)d<1St#>pJC53?F{zgkaGCsYHo3KBMf_SSjW?NCc;;lV6rhJ)J_P(vjUsr z*_|G#1%d0NaFlh7Dm*STID%u!r=fBg((ycA5NInYhD7?re{Cw!c3z!4tS$u|CvZ}r z(=3;VOR9!N%MYX@J%PQkz~my!Gq_eG4D?01Sixk(^~wswCASu2Fp7j?)M*_rp~&JX zCWIn^9Wm3<-ni+QbJC;D6wa^(3iKyEb^e@=mvNrWzz_unVkcL56Jzt)nX9s-Kulqh z#hG9z^9FlwO2#&Z*RqW8N8318a`0m`B0!g1T}2ys925J8PRE!NVwjTz^@Ge;);>c zQ>Ih4rQct4-Gy2;-<(=(r{N(wIJs1n>!`=Gzfb&T69v<@C#*o`Q}{SGLmL!nqBi~x=!wMHDm81K}EbOoUfv=WtX z)ZF=2#|`z0*2f%QD-^w`3&vVa6vzLYq! zTGT)fSHAkWCMoAv1Fsc6{S)2+w{pu6xx^i4Ib&lT?YT~|zY~Afu{qaT$JU&vV@K{D zdZ&#&iDm4&gKX|LviGom+BlHx=vl_WI-a7!k!j<(W#sSRIOWG9d7{Gz<-=+#SH}qT zMyHo?s*bUoGGmO_aaP?OHzs)ZTNtgw>k!&`ZDY)7{&YTV4b$o_K#j)JSY#Lxz(=^M0Md8yD)2k5teR9`aX>$7 zwl5ZG8rQJ|bYv898b8EoCQxx45?8ZM?(P;N82Fe1uOZ U`3hh2{~h-;-1{Cs;%99851VxN01!a%?Of8E z_%nGL2|fOgz~hyYETCeLWeZOb*~w_g0031ma;yb0p1$R(Y~%p|PO``2CRj%MVjk+4uLGBs_4Rvyf>% z3yr9&r$c8)e$rkGXK86Z0+;=$CN=xM-@orD=nx4-CIC5$yKHN!G*aw##tOB1Uq5{W z4@K?D5)RT2 zy&p!+7whd5uet;~%_ZdwBZ}28kH_>O-%^C!CwY;&B?vZWOPY>dHH|RC6f1w0>yA#` zjQO(owZJt&$uK;}p#Q0`@W>Ab18ZyRT)9Zf?{fuDW93OXQy!8MHiHF?O-$U@dV!|! zz%-3pjhIMN%uN15u`c)V_5`_AcU)U*yDY_H9(fB30{>G~ac?LoM{U&y-z2TlN%5!K zsc9|gt0xR=4o*XFC7Vwol1gP9fWK-*@_#6n2Ra!$sKzZG%r$UP46ay?`If4_XwL86 zi>f-J7g)45lhPcYSh5b1I%O4$^4J*6D=*jhM6Y^4RgA7tKq$f3HZzh##cOPrOwN#n z+hg;f8Y^LctK?0KAz(m%{DqODbgY^5XkY>4fr!DkdI~uQ;Ki{>ZoOj5+W7J0U6=K4 zOUU)B(uZN+%{l$guFiBCAzX0D06Ka>uyvCL5}*!*)Gc-x9J4oEL;ACxleYw%**5(+ zoAXsq`uO5EZ-SHoN=S6uz|zBSdM!RhsP|vn#=no}Ex&XB+Z)CXBF38eKRok4Gs7B# z)TF8wDiM$qAOsG%0lCUpaE}F1I0GVR4x0aq<-qR`F%WN31@@aksv=_sRMBB0=Zhyt zv$=OCrW)IP z7fs3+UfZ4C%%l9+=6otZi~mVGi_M6rzg2brYT~rzLV%-})ujwP3 zsnWs1QVaip^E7I9pp1_Z-ObpX+9tjg3soOidVnDfFZJ;jSs#3?Pzi3C768niF#Cs_ zJLL8EtH-el-#lCBOB>q|Y^UD|%#W8!K>g@BEiCwKs-?(hLsiSxa-uvP;C1}_vV+`4 zv#k3AS?wVGei3@M{irqQ%yRzoNKb#ibraz2l-odi@D}owck@ z7e4GhRP-%Oy8d%}wfd^rOFr1FMcqMI@m%pr)wnTfICW95W7Ie@&E~vzk^!_`#SM`> zxQi3lW&f%?NrS?MllvaeY30J<*}JcFaJ}5C?I731mx1WLCP!gFhP{t;i9~GNjuV4e zF4YT%z@5h~YCCpHQ?s+K%j4$5lLE^*B|n8Xn23c28_kKUab)}3FUJq zjWNji6NgN7J0#DjANO55d}Iz#@t2KK*>b~uJVBacxcDyGj4Mp#ew|FU+1AKdSkjnUpWZY()GLKy6o0^^=3A;?7{K51^6`nTs_MsA;YQ@d+ zyy}k%v+D3WCokkfvqt7D8~S*E&)IPS(~ujUi6t9RS`|m$Yq4+Lo22F~1?Yq7=Wd@B zTcHCR7};PX;7SATg+&QMKC?)FS@C%PA4-*i^2J{E$IjyZB=Qbvo3RTiamr9XCGqUu z+suidkjz=tKX(-MygM{nFT#rIH)X_iV;BmEY3gO z)B(KoQy_jQeM}9=&8xa&_R~wwPa)i$-}HylS1)(o*!vz?J$=Q$UIpk0o2Tl)!R*oZ z%5My$v=EOBWQ{1qLZZa>dUuFS==H%(z(j;@mj$*sy5Repth6M(KxLnrWu`o854 zLqG`j!xeocM+=E;qVl6oy+s}GU0dpuf))cV_nCEs!$CD2$-#+ zuJ+9m_T14xPd#vxlXk&_3eUmFIXsRy_AxQo9VysM`sy|oBZQmd1Tw@+hR`HwJ6eeP zYcZab{-~?7JT~)5itImI?hHXDK~>|-Bk#-m|hzbZ^*=cGo`PbrF}EShc9herpMkV_)B&W`TEF;faJ zYn8g_vwZ1V8r5r7$a?Y(YeouJ@nKtF=4I%x5V6lN+yi4lC%qBWPDj@ z7O&=18j#K`S7nrQr-4y?29@o*-j|4JAQ8bXyq#)dPRJF#CXUV5DZn}bf~j5X@!8x_ z0_4N$3JYfkCTYmXS#f257P?_lQZk-%Kk!Cr`2+)b!RfTl{8LAs(`LjRLaK0#7YG%e z%DrcIiWuseSf|6MSX8h&&HfW@vuca$Gg6tHOTK`wobp=mWZE){V(6s-ALLRL?q z3ne&FpLtq#t?;1Yc|F6PnkU0Zbtb;)fpy+n7V19VK)C*q+*;4; zX|dVVE;FtoOy<@&tS45c59Ij`rNY*Pp0blbFuPUpW@7L@*IG!m|G z3rRE-evRo!qfE-dtZgyr&>pN_aiLELW*UNA&F96f0efuek;`)=OLc8QU!iAwgh2te z#p`FpGKr80D|GO>{aaGK7tDyotr_Sd050XkG*|Z2din|8^>#G5g@N3SIoi%OcZ=1i zJC4FJS(<@D$WR-Y3&I;Dv5Q1tIJYwclM-{s_l5C z!b-@k_NLZ;fxd1Nt3%Qa!-yumdtJCqzCs^g58Q$6H*m%y>{8+eW{ptbwxT?&U%)l1 zC0KAsbOrmBPwZr3!EJ98h&?|xXlT6FXb32};oXEpl({FEtFeb#(ra8&vAoI9TNbB# zP*B}-YKG69=MNu(+AnF7AH^lSlqn&0w*M*TcS}hRNB4yz?1`?ak0U;ug-B_uN6(EC>^+ ziH_c(KDp?zXg~5m^STI55Qsg}!Qsa3%%=4Xb|^(^-`aIO;1L{)ha6gotWkPIrdJOO zB}u~7o{yvO>G*iAi>5hLQ+JHfS`B0H$)p>Lm z-J~_|_uo%$9^LiOoXHnd3twh$YG2rk7_bfHAT0s~uw_6lIlU)vj0SVF2bO@JBeX1CJPxVIH*@|R=_#8|x6w2}*j zHnK}!Jxlq>uM1rCBd5=w-Z~yChp|fC#3%0gWgp+8kZ;y;JfQbIP^EX?Tk6-9LDv4= zJm=qCJl7oRv`YDr2hK57pFVte9~w!O5u<$__q`6YSD;?H*_YIUVWxu!A1O%g?s1Y9mED(?>XG+JykvGWVz3(Uv|U}o@R!EV%O+Ggg&0DGIqMIK$kTj^3JpgUW^0nPtKEAtDEYJL zPM3Mr5oDwxbr4kksSz#c$sKOZOzj_A@mgom3q{&Hjk~ra(pZ$3zzR&(Q<{D z9nF(Oz1D!_?@ric!L{FQ)ov*(Yacv0bKGq1N4W2xqNX{Ph96^_3$JSL?s?JdxeI-j zG(h={F+I*G>=Y>Q@<`lr0_o>N?@cG=)Bk>Oct-&qVfaM&k+AsW*Vo<8$w4D+pcEZ? zno6;N zn7^8+B)qN<3Zs_2yVFL(zKZKJW4sjfZPdaV|6S(d`AO{cXc}2k6?0A?#DA7MEOC`9 z#!~r2{7btQDd+tYVjxa?kLjPB$y6vAh%+qlSTQ_@TJ~|oU&1hMt9@wj&K~I?v1ej zctv<`l+#B7wn=~xS<))Dj&>K%4Gw%aV+!(r)@A?KI_onS-be~(%sr_C8ri6c|16L2 zW1kVr-<6@w&~9>izAl!LrjRxttpoIEh{ ze5|VK*BW%Ugtz1PxzcO#u=|8SNRnPcMOs3OE0hI(nZDzuOb0}BJj_M z%P{8}poN>pZF_sVf*xC|rWH+E2e zKsini?hF0ZI5J-JsP>My2hrs=tu8;io<*Z>FcKWfKR3j4m-)L*#j}=Gp7QoS-5^oA z1w$ew-V*7=ZN#eM=;9>`CpDslm=9y;e+CfGc`9nGgA~|xMuN-jiSl-ze-+bMtrnBvtOYK!O zV;HeDwqXy^%2lGxc*#zvT%Fsll@u|cA2#w}R2Osc+JVsgi^znk2O1wCb0(fa{|lt} z;58ppqxO_@GJMmkqT*!ZRtOCrA77QVKBpZMX%ByTOmVEaqRpD^#}`D?y8_SB8_#-j zz$H|wmwBK4nWSPg9^QxJBlzX1{fO!Ut=jEgTlJUte0|u@)1kQFsUH2S(m#X;qEItZ zpIsdRkjDn-2LP&Z7BIpt9XE8L?e8gGWzy zVbv^3XvU(e<>b1m`pK2L-fvsJ_WVx|MhoMo6591^8D95gxngiv0E(0i#vjVFRB0WJ zEE)8~3!bFWq9)$n-sqK>!BoP~o44C5%$lZcWl1@2J#|}_&lGbDak>eZ7R!0^4}|bY zqHMo3;oIJaW|BF>lh+P2pJR}9MI zLy5ogJJw(bzYB#|b&>x+pz|L>QT)RZhDX>iYD*!#f4CDu2HF?R8GiTIBunk~vpKfE z{ID;g|10#LjsG9Y{#Pqt4Yd5f7F%s=&aX561IFU^A>4cRzux^;ZxMO@&j8gw0|dvV zYr0)|&Eo@!M-$5+1%>Mv(!`ROd`nV7!6=wq=1U!=ZJIH-0 zM=FRZ1F!P_;G`2o1COaO()l_Vgvo{2e_ROsU}BmU@<(sz%x=V!3Lm}Mp-Gqc0X?cp zv|#3C*rQ0idh90y=jbxDTmj~Y?0Re=tD=|lKFdBEF3zd?Bgx(ccU^R1Vl(<^;2RmD znjh7E-BFmWw?=(8!G|(12Ffb@(W#DzZ(kxhn;lWhTirgycQMR^RonPf;!b+2doYOI zYP7**##Zh7Av}50=zRGXCaAF~a7q0&CFjy~-3IKlF;=5)=5AT@{(b-6UeV4Q_W-G97^QUXvu~7)~Jp3OIy{|WF#5NDw zSAc}!b9}9Q^U(^C2^RZ#HVm9mGINXJ?tXPJ`jU2-e*@DO@A?hEDV&5f{DuyPvJs)3 zA2|4r60Httiax7BUF22gKJZK71F{%pS$K-%AGv7+Gj*73zv)j}F88nAoM!^+;4{Ks z^z)%7w$xZ}{dQwk4V7E<70(+xWiPFXooEY@;3 z$1{9!iJ1iyyynzoLhvut-j^yU318K1iHYEwfF7SW!L^D}`L&tdb5UF-saAC^$d!E@ zWj1J>p?05^_Jh1wy8sp?Nkgn4wuDGwGJ8e9y4lGpzRgnU$_+suzLI=ejX-F?=lv>? z*^13V4v$Joc2@g4hpZmT6EIU4!gVb zVG3Zg3OG@U$&^T~-~{SH3y$ zCGfsQ#;;1@#wk;QQq62+11WjYsC9tTVBSO{}g7T~0v+GAP&_#Fg3wXA6QnEk=MAoGaxD z)cnb#LU7Odq1+s#1y4qK`2)6lI5SIbXg{H>-{A3(_sw7$d0XGHSMqCn#_FIa$m+?v zQ<&?pGs$9m@z}EoxjR{;ktOJib5=wgQtZDQ<$jZc9)frIqzbS)5Z6a;D|hr)T5zs9LicE`0NM^geFP6RtsdS@6Gi^(4GJj@FUkTV=yiRAj9)37uVBuH}Jmjm}T?eScdf z_*P%4pwHG;x?h$Dx1t!JDTwONak<^@q(7-F!8dg_#*aByXiwT(giQ5ioe~=bUUG{pu1w#A|@e!(Re6B!u#{Z zPG;{ZrRcnCM@VXVAPktP(jbRfHt7SPLqQ0<%ceQrT%u zERB9uds#*X-5AUoX;Bi4Yw&O!2JrC6#*;%`6k&TtGQ0Yu_{mA(czH4V%=NUE{2J2@ z0wjko9J7D|gVNH{7!C)P46#@>M^R4BQWvoS5hGO@2=woiSB4wW#b9CV%lLiXbOrVg zbPzz#z(CiE2i@~>>s zs(1LMk|k=nu@XHR6E5bqEH*nk8%#|G9cDqK5x0N^CD}x0E6ijN&F_0QN1tzI*plIo znCZ@N5A&sZiTcGOE$OG3b0md=o6+n~&c>+#QvSy;b28x#E{C4;5QC~mF#HUDe6@sT zYp%Bv#<`!WU2BQ8@$RWQn#+f?!{6nATm19PaWAdC_oMswq+I3nsXVvmUw=}<7Y&|H zQx%Ks1N3g^qY9>QPc}Oy&E@$<58M_jqsjcIX?P+z=-Gwv|9cH>)t&I24+qjsW^^&f zmtQdch~KKzM1NmX)YUEbe&TBgJb#*D*&yf$sz-O^azxD0m%Od$v)`Qlp#44ky}VK_ ztaS3Cb~bM$bsV-Pk`d3`$q>-rPox4xi5GgXv!V{-y4>Q|FP`OKEYRZ&&gPFF*f;4b zbW0rM8&O16$+Nn&>~5dP6o86zFmhdgoUGiY9uT11zOArIpoG3z{XJ{0t&~5vMRG$J zBqze>Qq^DCWa@vU+)&(!SGp_sdNBTv*vUoin9F%PdxUVL(9x+|0Y-pxK8?6>%HJ(rPT4+Ahy}B&A1fVq;#Zos jRa%={*e}^A96J+=XwY6vSR4O+13*PVQ@%p>P00TNm>W#XqN$ z-NIi-&%K-QHv-q!s)~ThpKR;+2Jw3Z4Fv$8I-c^%oCMz{cTzKQ1psIee@_CGWAQrx zfHV4qvVxwc+4hW&uikPx>E7HOZ9)-ZemXMZq!)w@HE&JnBYrsC28|)#C^%I!kvBR_ zxU8d6^zXT#6=%W>p?|*f26z%E*p*aRkUny>4f2km0!^1nGth^(8@SQ){?DV28e9+`W}BN^f&tO0}y5U>1l=I#YA zFh6Y-^^tkS1g#HBNl6JE9DMce-McTkMVd|$+!+ga8Qh3N8DBZhsi`Ta^8+iB7Pm+Z zkvH?y(bC44R=4$_*>)exX-xG4VF5*FbNZ+#3UrwPNQHwK(6`AK$(^lV;rebAgl_kK zSFp^oY*#V-!Dlp;RkQL|g$m1WaOC*y`h$8KA$}3X#$4T*o?kL=>@%kFlH$NNIaG32 zcRg6fV6V^&JR~7KMrxj!PAp@H2&tDyR$wb(D8>y+keuw$7jWl zkHcP;Fr+VHT#+2E`7lW_18V8n4>3CbE9ZXx)9KG>in>($Cz=IMrE~@z;+y@{Wvl1l zov>pjSjR_M7%p?Jl-aYG@jM~YrM_pjP#t(QJj6ulqsbD=e#_4#Yh5rz8L{SDd|Xzq zP?XI(EGpXf08*h54X!NLXxXacR{LdWSWs?ewiq(oFw#+-sHq75^5JNxzZ?2~=&w=S z)<;6O^$Q>D*oLwLyia#xB@cQ&x*b*zE+t?rc0mn6)wqWza$^H;7ZoU&>8VWilJM9l>2A4gS@=A0Pj9~>WKy$9&4cTwZXC#phAlGU?u zdSBc-M&qKu#_x7oS3kyZO5ZXvGO`B(tk`MOQ_Zcct@E0S$-XeWw7(}t@_O?*t-+d$ zMQuBpVn#DjzjcPkLq3|4GBG{9UyM|ZWR}bS>p%DJBOuekyYtS?zmj&N8sIFP@4W&a z*9zqOHb8__^RiKLiO<#TjJ%ECzp^W-?&c6Wb^sa|V)F?Q1T;RaA&Svc@<<@TTl z!+qQLuW{E@D>XRVfe6A@&&YAxn1k4h0~rRq}O&W_T$CfQ~uyl$3A+h(pdF6$`Pem)kMVtc;joM?%vYJQH>c?%RmgG2wi zWR`xVnnQ@PW5KM%i#lw|Q7SX%4+l-W8cJuY{5daoGb0%IG^>Uv!d!Qzh@EPjZjNPc z9W`^zT*<3;g&`Km7~SKriWk!E8zCR>-1)xgDm(2jiK>iQdoi-94JRu;E~$SZ!GIgN zxx3tFmXt$hktF*Q!iY32IX-yv&cugWA})CTCjBM9XHGZ@t8h8_Pn|eN2ntIue8}a+ zhT_6b**WbWyz$sqNSv)-nB6Z)a$J#ml6;?>&megGTg_4^=2Zv%@?+xQY_zdu0d}e2 zxHd6raHp2NU_+9^%Ec-Jq;2h;pBA=HIA9w(P#~Z3`KC3Mh_8qx>#4U!2HpE#_&M;dI=xTxbk||g6PsDfE z{ytz!ih#AzT93b8f*Ng+E`!%;%(Ho-2kn=_Ce5BY zG2{AI>&aSG4woKcOeE*$O(RoLp@*xrrm3ILy6~emg-vW6s6)mZSVra?OpjILz8E+3 zvFgT@Kn_Z}J`ChbaFHXK9rJyD6hlfXDyS_#cFyS4)z?=ek|Xxzw9=30N+HEbOrE?Y zRR*2fq5R1l?^-Q;il5stpE|jpt)dGPa;DnNKxeh6E{H4pUU>a{Eh(T86!6RP?LF0u zyu>~)8IDQZH(2)@{Wsm)9@rnq=%|yRE8jM4qmmD`pI)+)*{j=?<+b0F=LD5Ux)>`$ zP1}VOw|*P#@oRKKgcj9tEo3#`Wf(%6I+*47Llvz8RKSdCMHSKE<=2OMjwDkII+&rV z@}@?pTL|NETpUeZVS-3+ zAXvB9=3OaYiH2Rw*AK~BU#ZyTOwfFj9hRgm?z?ebl)xzJ!7w4S7Dl_WvXoetYhN2% zH9J4sKjQn{q}t8TvtB0kscWsi#ybrWU`5CzVx)DK5a2ej6Zch|Bn@KprcmnEh*W8* z6IKI(erjw2E3o3aE*B6hsczhVht$zvJBd{j93)%ONI&|L*TrXN9-e}1$3tadNy^EI zhe@*w$>ohFRgn}BA-x3i%!c-yHZtsa%19j85H;*v1Jd9ofha7w@8=(fGE!Ga_9$av z&wxV7<0N!GkplpbEw3}`wmHi#m`F*M|9-$!L%S)y~TGCx;!;T`K> zKFTQ@#2QYE*g5qe8DDj2?j^*>c=Gb#^=WgHOEr^$aD#>Z`Kv)=d`Y&aXvOQ%*+>a+ zTDB0ByIiyEf?({#9H?R@O>~1y$8mXg4L}WdccP!hcuW;TV$C|zS*2PC zLG4@~LqBN*EkG@}m$Kfg60f`MRL$m->#Gny7H4M{$Ylb3WH`=z<@9b2=xpWBsjwR@G%(6nON+Tj&?-8p%|YU7jch~HeFMCfqGi- z<8TIIl}r<>H%u>0g^_GmJzj^s;$%iUv4}A9<%8wVGB&Tj2&u^|{0t&Qh^M}hKPT50 zHWp^qym3G1(GpzvXiL#%lwN-V?C!k%?Nv_9jJrD*O7WvJ^7YllHiX1X3-;l576}Pv z-+B)oGPx{@)f;69loj8yv#U34E52j!CMdyBTWH5S`3PLV2eq+Pp(B=o?W+0uY14eX zGs4+O%^o5hww!;I+TG-(=D$DJNb&5(Y%=QHBWD%qIKU$Fp*b@nXe>q-Wb1vhJs0n& zmDwjIh<8mk{7i~p(T&fH_KJl%wa&0Sb>aCF^E!bRroq^Fg^$ zI+?-o;uYQ%;OYBZL(S?cV3V%_IYu+{a(*G3t0#Y^m9Tz z;$x#xeOvDP(^OqPILNxt@A9-(gJOT0Su%eFbz<6#i7I>b3Z}LVPt-GaBkoCTpypk?Rh}avfC}9y_drfh$6L{#|zhgMtXzO5wC(#ch{< zCumi?r2=<<2%a5M9vtdyxI}U`ls;5ibdz#Ef_7SFR<~Bt;9M_BUBKWD?IZD)nW%{c zf$zhl?{akwQES!|r(vQ$#=to`ua%R{SqIezC9No1d5kFA-0>O{#bLV+ zW$tR_BKziG0olj?eJLk2GBO_}zG*g*>-N#28lU^I%b9h(AA*<1i=4d?fzC} z8RCkBQgP*gS9;EyvUPLA=_Z&~z$GIygAfZlTS_)Gsn*kZw~7a&*J*-}CS*Sj8a}Kv zyt@W3FQrJA6XCv5SG<_X#d|H$TwdZDd;St)cJN@rK36|;rlfrzssH@>EgCkdcLIY~ z$`z9PGpdpL=4m{ZfwcTP;6w4}QZnpoqa_Sd(4838TgM1YW^^|t+limcZTP5PjKQW{ zcbR+ce98_dPneaR5s2jTL7&N>3_xbe3NX1Ak74Hf(yVhV za?_)y)07kk`{#U|SZPt~FLoYcEmrTbOC`GYcLDQ<@$!9B)U0?A6|XiWFeq?H^rKYl z5aP{OwLJA{)%HF$t%2VcGha3Cq+31GHcdhH17r~^o<7fSl!V>w?-uPTkVp*Rf zvca#l0~XF~MQ8PDxx?XyK;ijtP)A(FaOn9vez@pG8B?|Uiz{D)Kn?TIT*puJ0$22J z8wLk&_YBddp$}r?c>d&GVPqrN?cz1A8jOEV`9+X)-yp*J^Nu-sGIV-c;gq^D#T!+ILyk&pt8lNIuB~ zu`IpBc}qS*4^xQCdn~1;=ol)&Ue))2$3bWgOiwxmqt=csa%L;p2b%_2*p^jAAEkA6 zV~>@cA}O1`9X@@qHbHtLWzI-Jx}-L=@}WZ0u1y9a$oCU7L^f0Si<#Gh{1J<#SniOe zD+c!6W%S~$g1>LIPZrC*B=i2<#MxF__Gd4b#`2~=nuNBLtpdlHuiD49*6xWxdg62k zM3XH+TO54)TX9f}6H$*#O9NXZ`>R0O^JghM()Fx?4!>JeNQ|l^Qk-qQdW8!_h2wh@ z;Mp_WVi87xiQe183#60*&i^hFm;W(sJ5F6%!_w{^;2dGOIjhw}`28kAQWa^YLr`Ede^zW!Pd-TvVMc$i~ZZkxGC$hiK&G~&1)u0AD z#&C)~-~&`*YJWlf+Ac-N|#|9XPY7skI$Km*h*V@Thzk|MyO(sAlWJ^2Q&(Qc;3WU*0Z!A#~Dti<)Fy zV#JnyX`wMS8lYXsw z{0p)d4u5-jLT!fXw4L!RS^vY5UvqmsJ4%`>1f#9yY~VwB53dPW@$ZX-QPuxQi}+73 z9TQZMteWe;#V{hXJ8r$Wtw0CX?sR8bX)<{rD5zv)bjQS1-`vhG`e6}AnTc?dNtrf? zj0+wclF1p{)uKOEYZ}r^W!$;mpUv~>UftV2)9b|;ZPLd3o|012?ig(mqOuK3PP-e5n{M~t zP}*k-YGz9e*i{vW1plgG5=CF(LQ>d+$?dfjxZ>4&C z?zZ8~x49QLfEZO-nTsKdtnbQ3!bV=I4K6Pu`lDSp(HDz*X8W;u_EawqB%Dk*UNVn; zZD>`k0``9!i;P@aP)wR5|;N;j9BfT49_mi!B3LMWIYs0RXl-L$mX0ja8+aD14 z01yz?F7eR6DRreO9j*ipg-R_fc|9rjdHQIXTa#$)tF@8j4^vIXuLSO_0+0MIOoqIC z6qD{SL6aV_83c(~E&e`gNhu5FG;0`*c3s?&DmT9Uu*>__w3ykI;FptUUsxs_ndD7U z{O7V(O$~KSW0AE{df)5=+LB5>x2*B%88|97Cx;^zp4T4lf1|2*cpH66CE5`fSNr@mg+vv-P~>rEHS80rh)kMBkvelTpj zZEQ?Tc3eg{m&7k9h{%Tir0dMRAGb64}C^KxN(B z$(-6QCLG`N@Y)ETJyo7v?;D`2Xag=h4m@8gOTdGI<$r?$-nafY z^8W`+{)eg3rt}UN4?~Jc!TQ3UcUUVSwebm>It zzwnm-UuYJw`MXH#dq}J=&HL{OTr8sdf1+S`Yec%fU1esI_IS9Lft65^uZxm?M`9+h zQ(L5Esf)+W-pMHqxIk1Z*j!ZtiECYsui?ilzqqx^Y8KhnRHiZD>(8t)gqNC!v!6-* zUSu^Ib=lJ#&+qb=7Gia5Z5Mr+JeOVhor~x8F5AT?hnIqaddP+=`!w6| zJ(7~O9QVw9vL`)?O_96W{ghLr{wUMl6|A=E$2VS5Y~twP?0?cf`L}ofMqC>LV4T}LI`%ph2B_}fluSGtRSyUXu?qXpPM_&z5 zn>=uy06^$l3XkO;@$H0eR?YD_L=8RcY!egZ~%wO$|IVcWZyKi=u@fO3~g)IG) zT$|dI=bjB(LX1fESSRtwZH`^omKSh7I!fnzv{Bm+&w9X&DkC$oy2Hy`3ye@sklZm| zcZQMrrDOKq4pYD|(0nC{mnEIA;n1tm@?dIJ4=@PCMIGK#;N8F{*w$lXEZs|7`DGgMTZ!Di+lx0u9rj6Mcp?bhBW8=aQ^wbhHwfZP* z72WiafyTo#_)=4WUgdKkczUeL|1N&=ZU@?xK;&-iFJ6(tlTcw#em_|L0cm8L4Ym#^ za*9O^;RwuFA~OA*0FGDIoUq3>Z|}`5e0WxC+_pqwc9W61vgQSQ^1QjXnva&VxBnI( z6zi;BDWe(yFT68EL&~-TF3*sqp`8(BPPV=wBW0rje9V$j`Tdx2{9l`NejBO`2;xp6 zGf{62P9O!u`Z(38q+^fSdxo#EMr~fb^20){U*15}K{(erTdoC43XzCabe%ILY&92d z5dEy<-WM%15y1Sf6?cgxCqVEmuJC^JrQPJh2ju~v-ZXzXc`CR)OyAi6ak$7pL89`6 z%Tzr`JBS{O>^Z&ISlzqSmGLwS*c~-*!{Im=v~`8dARQ!~r~7;I^Q1XRlM{Zbaj0iG zq$gVl5N_Zc$11x2y)y>&=|+m}`|A1YtG7d7-`#2p3ATDn2Tt$%34a<024FSpm}BS7 zS8_Rn1wTqy?LI6t+>>|rJT~xQ+~2+5JN?UDM>_;)jV})CC84?Z{tf>1Z|B2#Jh|cd zUgG1v!=W~(T3z{b#xdd<$bo~CqN0V&Yv1)G=G>(8iRMQ00tP1u4=nYK%ecJ_@i5Th z$C3`$xg@QoD*14}*C9pQOi#Fdz6^w}xAXBWHSD?K(n{FM9*(n{2#a(`I8ljGU1<+v zzR4tN<)Dai3NF-#e|>{@hh2`pfOG}E9fJOR{9EI*_%}MQ8a`~BFYq5+)va39CH}rh zhNG`=5-!@gi}inA-MtU1B>|lI0y(aCZKpE@E49+)@7CrB2P4oC4vwSY_Lh$zz5>7y zG>gd3xp}tm%*)V~y|#eN4tNd7@<;VWk?yaF+@F=FLDU6AEy4e<2A@57Nv0N@OyHXcq6jC z|7rSc7k*4;qZN(^`l2dfxr;gZ`KA3~r|T=Pdl`#4+1ar0U%lfIWU`Fwkmobp|T>S<3Xr3V?IfbRnXhfUdkTEjFL90w1h*Z$<^_Yn zfb1fV&q6z#Pa%bkTl3aJ;7yJ>SktKb|1Z%YvmAgDsLNt4vT{dN9u_#_nvp z$d@lHMzY>qWvW^xX)_F_E!F}D`0O46$8A_$VHdqjTAVo2gtL%94L+xp!SpV@7#=)r z3Lz~3Z=>&ngUa~j7W`rgRrpqCVEW+bNhqC#zc=zx`ko9ed?FfO5u0@Q-boWSwa}$H z<<*`x*FNIjrc6s2cq#6-r6v&*MHCq`hI(V?1>R0L<{iU|p`1$ new ClickCounterApp().setVisible(true)); +} +``` + +*Explanation:* Using `SwingUtilities.invokeLater` ensures thread safety by creating and showing the GUI on the Swing event thread. +--- +### output of the code: + +... +... diff --git a/part-1/ClickCounterApp.java b/part-1/ClickCounterApp.java new file mode 100644 index 0000000..bd2c4c7 --- /dev/null +++ b/part-1/ClickCounterApp.java @@ -0,0 +1,38 @@ +import javax.swing.*; +import java.awt.*; +import java.awt.event.*; + +public class ClickCounterApp extends JFrame implements ActionListener { + + private JLabel counterLabel; + private JButton clickButton; + private int count = 0; + + public ClickCounterApp() { + setTitle("Click Counter"); + setSize(300, 200); + setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + setLocationRelativeTo(null); // Center on screen + + counterLabel = new JLabel("Clicks: 0", SwingConstants.CENTER); + counterLabel.setFont(new Font("Arial", Font.BOLD, 24)); + + clickButton = new JButton("Click Me"); + clickButton.setFont(new Font("Arial", Font.PLAIN, 18)); + clickButton.addActionListener(this); + + setLayout(new BorderLayout()); + add(counterLabel, BorderLayout.CENTER); + add(clickButton, BorderLayout.SOUTH); + } + + @Override + public void actionPerformed(ActionEvent e) { + count++; + counterLabel.setText("Clicks: " + count); + } + + public static void main(String[] args) { + SwingUtilities.invokeLater(() -> new ClickCounterApp().setVisible(true)); + } +} diff --git a/part-1/E1.java b/part-1/E1.java deleted file mode 100644 index e69de29..0000000 From a07edd9d376e475f09c98acd7210a5305ba0755d Mon Sep 17 00:00:00 2001 From: masihjalali Date: Mon, 2 Jun 2025 23:10:57 +0330 Subject: [PATCH 2/4] /~GreetingForm completed~/ --- .idea/JavaSwingSimpleExercise.iml | 2 +- .../ClickCounterApp.class | Bin 2641 -> 0 bytes .../images/img-1-1.png | Bin 8490 -> 0 bytes .../images/img-1-2.png | Bin 8182 -> 0 bytes .../JavaSwingSimpleExercise/readme-part-1.md | 67 ------------------ part-2/E2.java | 0 part-2/GreetingFormApp.java | 46 ++++++++++++ 7 files changed, 47 insertions(+), 68 deletions(-) delete mode 100644 out/production/JavaSwingSimpleExercise/ClickCounterApp.class delete mode 100644 out/production/JavaSwingSimpleExercise/images/img-1-1.png delete mode 100644 out/production/JavaSwingSimpleExercise/images/img-1-2.png delete mode 100644 out/production/JavaSwingSimpleExercise/readme-part-1.md delete mode 100644 part-2/E2.java create mode 100644 part-2/GreetingFormApp.java diff --git a/.idea/JavaSwingSimpleExercise.iml b/.idea/JavaSwingSimpleExercise.iml index f29f585..55b1a14 100644 --- a/.idea/JavaSwingSimpleExercise.iml +++ b/.idea/JavaSwingSimpleExercise.iml @@ -3,7 +3,7 @@ - + diff --git a/out/production/JavaSwingSimpleExercise/ClickCounterApp.class b/out/production/JavaSwingSimpleExercise/ClickCounterApp.class deleted file mode 100644 index 7482d3504a92f1f3141f8af9fafc8edad3aece5a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2641 zcmcImX>-$76g@9Ck?jbQh!Db>Ktt=elt4>Miy>`dNC|a-k`Nl`f?~fUBC_O4av*f2 z`$G5iZ*&Hn4$Sm(r_)LAfX|t zV*^?RjH~9Nd415oW;t_%r$;@rA_ZEHS&kJ92_&)uQ)#4-){xQB23?@NU|Xeyf?IO} z=?zz_0vk%|K|qY9ut{KJsLp2A1mxB(n|OojP`5 zH$73e=$1n9d1-T9l#{N&)AqB$e&6!r?F!`%F%eFru4 z3v7>rH=!UbxQ-u~PT*(Ii$@j4j|p_IlPsfDzz*oh;c)>y#87&nD}k;Mot3hLyLk;y z5Zw?q74)d<1St#>pJC53?F{zgkaGCsYHo3KBMf_SSjW?NCc;;lV6rhJ)J_P(vjUsr z*_|G#1%d0NaFlh7Dm*STID%u!r=fBg((ycA5NInYhD7?re{Cw!c3z!4tS$u|CvZ}r z(=3;VOR9!N%MYX@J%PQkz~my!Gq_eG4D?01Sixk(^~wswCASu2Fp7j?)M*_rp~&JX zCWIn^9Wm3<-ni+QbJC;D6wa^(3iKyEb^e@=mvNrWzz_unVkcL56Jzt)nX9s-Kulqh z#hG9z^9FlwO2#&Z*RqW8N8318a`0m`B0!g1T}2ys925J8PRE!NVwjTz^@Ge;);>c zQ>Ih4rQct4-Gy2;-<(=(r{N(wIJs1n>!`=Gzfb&T69v<@C#*o`Q}{SGLmL!nqBi~x=!wMHDm81K}EbOoUfv=WtX z)ZF=2#|`z0*2f%QD-^w`3&vVa6vzLYq! zTGT)fSHAkWCMoAv1Fsc6{S)2+w{pu6xx^i4Ib&lT?YT~|zY~Afu{qaT$JU&vV@K{D zdZ&#&iDm4&gKX|LviGom+BlHx=vl_WI-a7!k!j<(W#sSRIOWG9d7{Gz<-=+#SH}qT zMyHo?s*bUoGGmO_aaP?OHzs)ZTNtgw>k!&`ZDY)7{&YTV4b$o_K#j)JSY#Lxz(=^M0Md8yD)2k5teR9`aX>$7 zwl5ZG8rQJ|bYv898b8EoCQxx45?8ZM?(P;N82Fe1uOZ U`3hh2{~h-;-1{Cs;%99851VxN01!a%?Of8E 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 new ClickCounterApp().setVisible(true)); -} -``` - -*Explanation:* Using `SwingUtilities.invokeLater` ensures thread safety by creating and showing the GUI on the Swing event thread. ---- -### output of the code: - -... -... diff --git a/part-2/E2.java b/part-2/E2.java deleted file mode 100644 index e69de29..0000000 diff --git a/part-2/GreetingFormApp.java b/part-2/GreetingFormApp.java new file mode 100644 index 0000000..4acdc6d --- /dev/null +++ b/part-2/GreetingFormApp.java @@ -0,0 +1,46 @@ +import javax.swing.*; +import java.awt.*; +import java.awt.event.*; + +public class GreetingFormApp extends JFrame implements ActionListener { + + private JTextField nameField; + private JButton greetButton; + private JLabel messageLabel; + + public GreetingFormApp() { + setTitle("Greeting Form"); + setSize(400, 150); + setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + setLocationRelativeTo(null); + + 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(10, 10)); + 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(() -> new GreetingFormApp().setVisible(true)); + } +} From 6f301a82bf8c6998fa1e16dbb20752d048c9722a Mon Sep 17 00:00:00 2001 From: masihjalali Date: Mon, 2 Jun 2025 23:20:53 +0330 Subject: [PATCH 3/4] /~Registration completed~/ --- .idea/JavaSwingSimpleExercise.iml | 2 +- .../RegistrationFormApp.class | Bin 0 -> 4961 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-3/E3.java | 0 part-3/ThemeColorSelectorApp.java | 60 ++++++++ 8 files changed, 193 insertions(+), 1 deletion(-) 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-3/E3.java create mode 100644 part-3/ThemeColorSelectorApp.java diff --git a/.idea/JavaSwingSimpleExercise.iml b/.idea/JavaSwingSimpleExercise.iml index 55b1a14..ab9bca8 100644 --- a/.idea/JavaSwingSimpleExercise.iml +++ b/.idea/JavaSwingSimpleExercise.iml @@ -3,7 +3,7 @@ - + diff --git a/out/production/JavaSwingSimpleExercise/RegistrationFormApp.class b/out/production/JavaSwingSimpleExercise/RegistrationFormApp.class new file mode 100644 index 0000000000000000000000000000000000000000..cc39456670519371c662da6eca4b918f3032dc31 GIT binary patch literal 4961 zcmcIod3+pI9sj=FO?I=HHp$Y`23i^*g&Zy6K9W*Q)21YB($cg^(;_&#J4vRQ%q+W; zCZ!4}2q>bWh~Rx7wcaS%)JDMjK)e-2#aq0^14UH8?|UDY0^Q5}V*VG$M!92Z>cc5)M)*{nb;Z@Ak{*CNlQO-U)L z&C)4oz|B!!NAsZMQmdg334tg#517|*Z$(p2PxD|DO9V~~>NjNC8E2}?vGcBOyLox| zcn!<2Twpm5Z!|{qNz3iBoV>9mYj}DJM4HG1d#~>b7A;(I9ZVvPvG=oHH{U^wFfg&zW@NScPyLD{-m> zx{-zin0s6LbXy-aa!SByzNKveM#|2dZYoPxBV0ujnl-ebm5v!rr3F@ckd{Bw5ye`8 zntAnlY?@8X)}T$QbS42O%o6A-tj5_I&cV5Ky{Wd*<41UVCp+Y}^EF(63yJB7X;}iI zM-tmLbVy>wC=r;Jl#4a2pQr4L;srSxHc$8iZZO0^bC%(^vf#-+4U z&twFe1IQh5OCXxIr1ltT&r!X;L*^rTyD{x{n}(H%qX$VTVY$SyU&9t`B?RuYD-~b> zDTWKrb;PiZuxy&pO{-lV-L7GWJR0LsMU7!dplYk0&rdnIOnVf=0w)B+wzs(EE3y+w z$><6VFT|As)nruMA+VxUkK%$lN?l$=oi`hH#>i1nifWe#+NNhrXTzlHI(7_%F4Cu4 zMjSdeN`a#q#$eKzTuRcZWvQ&dX-XRB#%^PR8|B#v4YoWR%cVSG6wL2sLFt~{%{gZ> z8;2vK-$7n_(iK?c`LGCYXG)flwCf#Fbzr5JE>rTrv_MN)r#E|EFHO)Gt`Ug$*shT? z@@}5EyqGy2)U3B_%t()KaHeCpmZ0>q4#lzG1LdU}UWOZJYdR(Aw5b%7;!z^6Ax|;gt;8uGUt$`YH{#$<>NCl|%* zST#$uEIRHEZW@?OO_;1Aw|iQ?QNvxhn_-r6ZEuMtmMZFFDUZBa!&~rH<}mZ8GcBui zl6Bj#jhw(K0bq^2EO2e5JN%+NCG+JS8s3R_G2%v9#+gV0OPYKa1k1P#uzNJT2lvts zW`4l1n2rX+kJrbp7~abe-(lyoM%o-PjZ75p^8+V%7i^d`Ee3TQ2W1@W$2~E8i0Da| zG)Uq{G~9=eO7yZ>hQGjC-;SUn3w86^(s}pO49`yuF%%dDbd=(JNW;gakulftuB8Mo z$~g_6zys8CLLWC+hy~P1?4evW$*6zKlnr_=<+F;%i5h!U5T5>~KxXbWJ1Az%cE-&bX1( znY^?si0M2(@A76;#PLlH-@>;UWxUD;&Adr*^kma6c}G9W`%tEnxBM&&8+MJ=%&&%RGk5rLn#7Y zU$Pb`klau`s>-<9FR+N$ysBURyoS|Ldez8{u$hv{{i70rMl*w3HvS`57)8l=5Rsk2q9|dZaCjyy3(d4dz zX7@tjQu~OW8>OJ*$}CfarB9?XdZXmg$kru3;7sPyMz<-wx4evl&X5XFj}4CF%DX1p zXRvT*@->zCM;y=KpHciv=J>w_8jtAeMWf%IdTHNHM>x5C0(S+2)8FVZy;Qd|mXU8v zI?niHwqv1r0ZPfi?fbGune9OYioMN37G1h!4VbRMV)2~7>8g!t5OLL#wDZI768LrG zYHScS?D^wDh)`67H4zaNyb%`IpHyJeIDMpOef30e_Q?Mqi(>*+vgpAd#Ia;qfgG%{ z{^~q_wWuU2G1eDRrQxsgRiyRUyezvc_H;%*Dl~!B3qUI8`>0qfaMH22GQqq+!O5&> zAy(DzsFD3BFP@NWF4f51P>pQa)X4TrjqFy`$mTdgeGyaM@_6bI0WnJzBObyQb10Q7Dox{EGGNcdi1?R@`DR|hg#)V5uzdj(Ru0n z%1YlqoOsDBuA9O2l+MYGYI2h|d4-zX>WgfT)JG`cdMQhN-8BDotCFvXMFo_Ps85Uv zNWE&~Gk7)G-aedo{Vd)vgF8vRv!#GHN#Nu}oop@OZA15|$on3DzmN0zTf_LPWmMN; z2@?=jttdFW-Sva1Tz!3>xtOJLZRR8XiS6 zp5UAJX-4()SR*t(YM1lz+Jv*jML1h@;vCV>hwE;fC(<}yjN<~4XPdnr7l|9uE^b4I zxRZbPxEGg*S-wLbLZ^6y@6N~2C7!@W@gz2hXV4uAV{>Q`E)6ZiWueoN44sL-(8cHv zZNiq&<+waFM2#P#W#@W%L_2@L+1gMmeu&2*DEn{t5q^viB|naz@L!m`P5hK!G8cb_ zpL@9|)~LJ$ZYF|#1-xCR!2rj8j*Odk-;G!zeE>^1Wt6Dto&%^z9B7Zs;UGil{p}T8 zqgOw0H>&F^5+5w!!$YLdyFTS(K80TPDKm<)W^H|>zM_EH!#E5i9*i8qr={z{kghue z)%+a<-?MbyPMnQlzUz0P54&*{uE5nSNYixM4IFPmM!~V3C5EQ>aLBJ;;FmNshU@6I zU$LCkVhX?JSD5^E;5Yn=kZTgZ#qS8j?|J$}R6dJUQT&1bFYe^evsj^K2kYukg(vYR z4>|tjfjtfnR2|0WfkSxsNZ83j3XD?jn9@u0Hsa6t3&6j5v8ww_8r4ofn?synemzpa uHzXgSFp#?>pD>={7@|}E&N0ESr@8VhLoh5VMU?;Iq{r#_YOzSvp#DGg*;YpY 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 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 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-3/E3.java b/part-3/E3.java deleted file mode 100644 index e69de29..0000000 diff --git a/part-3/ThemeColorSelectorApp.java b/part-3/ThemeColorSelectorApp.java new file mode 100644 index 0000000..39a5a68 --- /dev/null +++ b/part-3/ThemeColorSelectorApp.java @@ -0,0 +1,60 @@ +import javax.swing.*; +import java.awt.*; +import java.awt.event.*; + +public class ThemeColorSelectorApp extends JFrame implements ActionListener { + + private JPanel mainPanel; + private JButton redButton; + private JButton greenButton; + private JButton blueButton; + + public ThemeColorSelectorApp() { + setTitle("Theme Color Selector"); + setSize(400, 300); + setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + setLocationRelativeTo(null); + + 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(() -> new ThemeColorSelectorApp().setVisible(true)); + } +} From 0db808bb6507cdb765ffc236b4405609eebdfcc5 Mon Sep 17 00:00:00 2001 From: masihjalali Date: Mon, 2 Jun 2025 23:24:29 +0330 Subject: [PATCH 4/4] /~Registration completed~/ --- part-4/RegistrationFormApp.java | 105 ++++++++++++++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 part-4/RegistrationFormApp.java diff --git a/part-4/RegistrationFormApp.java b/part-4/RegistrationFormApp.java new file mode 100644 index 0000000..150f8f3 --- /dev/null +++ b/part-4/RegistrationFormApp.java @@ -0,0 +1,105 @@ +import javax.swing.*; +import java.awt.*; +import java.awt.event.*; + +public class RegistrationFormApp extends JFrame implements ActionListener { + + private JTextField txtName; + private JTextField txtEmail; + private JPasswordField txtPassword; + private JRadioButton rbMale, rbFemale; + private JCheckBox cbJava, cbPython, cbCpp; + private JButton btnSubmit; + private GridBagConstraints gbc; + + 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 + 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 + 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 + 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 + 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 + 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"; + StringBuilder interests = new StringBuilder(); + if (cbJava.isSelected()) interests.append("Java "); + if (cbPython.isSelected()) interests.append("Python "); + if (cbCpp.isSelected()) interests.append("C++ "); + + JOptionPane.showMessageDialog(this, + "Name: " + name + "\n" + + "Email: " + email + "\n" + + "Gender: " + gender + "\n" + + "Interests: " + interests.toString(), + "Registration Details", JOptionPane.INFORMATION_MESSAGE); + } + + public static void main(String[] args) { + SwingUtilities.invokeLater(() -> new RegistrationFormApp().setVisible(true)); + } +}