From a07a385593adb4e0e65acdb1cb0a96ca25e975ac Mon Sep 17 00:00:00 2001 From: Ryuuji159 Date: Tue, 1 Nov 2016 18:26:53 +0100 Subject: [PATCH] Subida grande, no queria subir nada hasta que estuviera al nivel anterior que la v. antigua --- bin/.directory | 3 + bin/utiles/Archivo.class | Bin 0 -> 3913 bytes bin/utiles/Cifrador.class | Bin 0 -> 3166 bytes bin/utiles/ControlPrincipal.class | Bin 0 -> 6137 bytes bin/visual/P.A.M.v2/catola.png | Bin 0 -> 2019 bytes bin/visual/P.A.M.v2/logo.png | Bin 0 -> 27644 bytes bin/visual/P.A.M.v2/resumen.png | Bin 0 -> 2205 bytes bin/visual/Principal$1.class | Bin 0 -> 732 bytes bin/visual/Principal$2.class | Bin 0 -> 834 bytes bin/visual/Principal$3.class | Bin 0 -> 732 bytes bin/visual/Principal$4.class | Bin 0 -> 732 bytes bin/visual/Principal$5.class | Bin 0 -> 732 bytes bin/visual/Principal$6.class | Bin 0 -> 732 bytes bin/visual/Principal$7.class | Bin 0 -> 732 bytes bin/visual/Principal.class | Bin 0 -> 23132 bytes src/utiles/Archivo.java | 165 ++++++ src/utiles/Cifrador.java | 104 ++++ src/utiles/ControlPrincipal.java | 191 +++++++ src/visual/P.A.M.v2/catola.png | Bin 0 -> 2019 bytes src/visual/P.A.M.v2/logo.png | Bin 0 -> 27644 bytes src/visual/P.A.M.v2/resumen.png | Bin 0 -> 2205 bytes src/visual/Principal.java | 922 ++++++++++++++++++++++++++++++ 22 files changed, 1385 insertions(+) create mode 100644 bin/.directory create mode 100644 bin/utiles/Archivo.class create mode 100644 bin/utiles/Cifrador.class create mode 100644 bin/utiles/ControlPrincipal.class create mode 100644 bin/visual/P.A.M.v2/catola.png create mode 100644 bin/visual/P.A.M.v2/logo.png create mode 100644 bin/visual/P.A.M.v2/resumen.png create mode 100644 bin/visual/Principal$1.class create mode 100644 bin/visual/Principal$2.class create mode 100644 bin/visual/Principal$3.class create mode 100644 bin/visual/Principal$4.class create mode 100644 bin/visual/Principal$5.class create mode 100644 bin/visual/Principal$6.class create mode 100644 bin/visual/Principal$7.class create mode 100644 bin/visual/Principal.class create mode 100644 src/utiles/Archivo.java create mode 100755 src/utiles/Cifrador.java create mode 100644 src/utiles/ControlPrincipal.java create mode 100644 src/visual/P.A.M.v2/catola.png create mode 100644 src/visual/P.A.M.v2/logo.png create mode 100644 src/visual/P.A.M.v2/resumen.png create mode 100644 src/visual/Principal.java diff --git a/bin/.directory b/bin/.directory new file mode 100644 index 0000000..a281b3d --- /dev/null +++ b/bin/.directory @@ -0,0 +1,3 @@ +[Dolphin] +Timestamp=2016,10,31,23,7,53 +Version=3 diff --git a/bin/utiles/Archivo.class b/bin/utiles/Archivo.class new file mode 100644 index 0000000000000000000000000000000000000000..c37b2eca113efdbd5ce8984da445215707726c42 GIT binary patch literal 3913 zcmaJ^`F9iN6}_W{5%L&}j12*d1q85Ud5KF1#fA`!Nl3i_rgqGdbTk^nfY6xn2t!Dh zq;8v}d(xDKwxm#6cTFLU8@uS8_FdS<`S8sJb6#!k`zm z?5=}M>{Sq%bQG*!a`&jI7feTDdB)aOWBbdKlcr-97UPpM59W?Lmh0s%>$6IhyH`O| zn_s{KH0nB5>2z;qOhK&QE|^I~u}VWdQVODNnK2cs6=<~(lW0VV3~Qzns%qX^y3oPsG(H?^@d~Wt~qSZNT(_`DQH||X5f-xPPvv{Qm}H+Dw)IO z^Lf)brss>Mg4CdG=*2PJvE+AfGv=PLxJ|?0Qp!nF%qhFNWG$8t`Xq``S2xZL=~G@6 z71<^F_{$X36;0C#G$f;KnTJay*?p&mE@5i9o_8!~kU0rFp#UmAqhQU0yYDYsMe3MD z22X0(iKpm;i+Ztaj!Y`pR;!9{lio+}+JojKdazqVFZxKgJ~d^Q3JN-E3xu*h1Utac zD<$@7cp5nc3D@@5i=fYFSdL^8{TNVjKtXe;{Zg}OIOwHP(t^mf9M9o-6^E9xd3oA3 z&ujP`25ASoOyf8Ch-ml2G@i?SP5pdt0>j*Cz;SFRZI;q`r!%bEmPz6;j;c5kx@Bpq zhEc2_k5f{uSQ1e_uVG9?NgAf(=$Wd_eyiEgR$FAiEIy{JH;>lU%r zWYAtK&1u82@>XaN+4Ln1Uyx1fJtqtV3xv?ThB{~oP@+h7QxcOnqvAB(84@d}!9S%U zsih!Wt7QKf-5E76l+BW1hK3*o!Ld%@9M52txXGE$89DE5u6fC|Nu2`HUlL#|d^SR4 z3gX@x1*^;wML4ZHhaKB6r}cs@BO-I+A?wgH3Z^x*BbPv#f}WIiGMLeD371)Lda7tq z;_bEYLnA(-95V{KYx4*|ynE?u_%l7=Z0}hgdRrO~Y3)D--8JSue8A zlF1gHALbm@U)qY_6 z%$RueR~koFB7xuhpFP4_{rH{K`aNY^tmOy!7*X*D1ueDK9=6?scDYojIdiSmAt2x% zT0n7c;(7vqyG>|7Gk>q;{dL%e7Hna>84)Ru$C)F4wllJwRoZynh{%23j;K&no&bKN!4OYx zfbMVHL^|3_bRDVg!BqFq9GdT^& z+e#~8iZcyX{Nhk_?;KilEj_6(vvjnFO1}Co>T)fq?oswV8&z6z_io((XYO9C@MmO( zqdQ~Ko$)zr$Th`#D)?IL7FKjL#pKuMY)qMrD@}1p_*b^0f;aAP8{eOMJ)0lkp%@_8 zXZZqnh%!G<&;yiuhyo5%&Jpav5xyUc@=1P-pCeRj9C^IpHTN7%LfBOn4Sd^UF^(7U z9kv-^d@H`o!xUw`E_|Q&qO6+3TiyZN%_=GNEjVK%1Ny9&w;`yZ>SsFR?%VuvRoM7dX zygEhG>x}1V^HaoIpleL8W8XJ@)sFk<8<8`~TGEN{8x67lqF#B4-r*fZo+$zPH;G=% z)4`E4IUy4yx`3Oryi&uDS6Hz>}QDqP>*XE|8T;V~2$J5NY9 ziM`;#^oL7F0Q2#{)c$axsSVH65qSX)aLuxF!PQP&H$7YnxHXTt5XP_Nq}@fogyt6T z+j;EsQLSW&_XA5cvpL`*jWxp&cA1vCLK0u8LDU`~YV;7v{E?|ZM0`tpKS2b1`wI}g z$6ta-q@AnaPKe|KLE=rd55rsY9!IiRr4Zxt9~utXP}+^2NnhpXYn<`3jK0qJ8`wxw zZKGjj82hq@!?>=>*T(9V;H0d4PaaPk3h3ioV*u6(WNoR+8uMihAuh_;KmZ}Ml;`BP zDC65$jd!pCS8K>>3CLQ#1O&+%4ff~DVX(g&khNai^A|MBSB;4l0u!kmIjgF>`*K|) hG1qyYFD$r0Vs6zSSRWurJ&53lhd{xf$Vvns{|`GPEC&Dp literal 0 HcmV?d00001 diff --git a/bin/utiles/Cifrador.class b/bin/utiles/Cifrador.class new file mode 100644 index 0000000000000000000000000000000000000000..2ef09ceb317cbb6d1e63d4f06abf5824a9ba9554 GIT binary patch literal 3166 zcmb7GZBrZ989gf`R>+GZ%QguyDcFe}5a4xM8#^e$MzZW+116T^hSH>2Ru{ZR>?*4j zF?nf{)_qO-lJ}%9Go4Om@|C77%7je5w$mTcf6#x>X?yP7wLpk3H6Cg2-RGWr&hwo6 zT>axeUw#eXG=8rmrs2MN;8aA-EI3QPRrY)xaSiF))|zEjEO*(wws>3Efrc)}tp%2A zJC=q6)4LYsG{l@Wek|lQbUxv@PB5XNV{quEhIqj%ixfK0ZJ-OOE^to+I+FaJc3d%A zUtJXb4QsI?G-Red+p65Od`FI>$#`(fscG1^EP|=LV;@C6)r;ahG%LGehlDDfHnRIv#4tQ3zn59|Ibaq?un21R2K% zhZgdZ$}s~E;}H!H+P<*-lHgZxRjfZ#t5d00s90-Mbou|_bjP&)^=jamwW_eqCSZx9 zToNZV9GWba%tF3k&Rs2(&dgcmG9{)kh^&qwW>2bbf)t$UE#VtDh+z#wd(a3Iu`52O zV^qV@79>SyYHiN)tyK{SUlK}T1g5P0DGiCih5XP>$>W;_zJ=4wku-~j{NPlW?3%Fa zz7wpQ%uiI3=9EI8tSoyBxV74{NiIYkGjJB?H0WjTlH*zxx>4>JR$<&g4o}c_wpVtR z9NY5qR!xkNM2`$=FLoCua6!lU)?%;M0b`aJo>u`~Y zF8aRb4+wWaR0fp$%3cbW@RW|rQ5nqEbq1zzg$k+?s^SuTuYxd#)0ovUa}Puv*5Vyo zR0GFz4O~NtN)?DY1UG!krpXd^XtqqdTJE_j+?sWpVd?0p;Lv9575gLfsOM`}#b zQL6NPFq2r+!1V{BtuIEPWlsk;@2S;YbJeNYW`43%96Mcfi7xyU%IKCKw+uMaI-Nqj z-~$U^tp_@2vE7R=N@{ZPid?(`&p=gjHWX)(uP-eLKMCgac<2t>a|bHcz_uitC6u07 zRQ^mMkfpBQD>eNxb*))ynQyBsT=wOdxYNvIYfw(+?qvh7NFJ%cue)?V3##Ka4gKv$ zxTT~?yw38op``FC-jpZ#2O93@k=Y~NZ1{RTY->7x#IW6MHeYutDmi`liGiQuXI!vm zRqEo}l7SwU~C^gGVn1zp*?H$#hSW6WE+{9+9O=ub*Yk9_ib^B zmo4w5$oc+BiH)NyP6zMg7*g``;uGWr$Hqw+klZxr@u=675o3h zi5SxS+^;|mB94b(;4ltw&IlJEqhPz(;txe&MXr+n4tqi#}mDYcyD|Q zBlFq6V1ENAH}P0+VssN{#yhjUoeey`G5a~5%oH|J#Loq*tF*dr8OO}ZMFVX}a zK{t+5$q78lKa3yShnb=g6mU}UyslDMjI@&$=J2#aE#f+#VnlijB}Vbb3D@7i zGtAu~9K%g~o9|4Dd6sWGiELmV-(j58-3e_?Co2sLP3ixPq)&vZXG78P>_`LOrS^DY zbeHsaZ$fF`Lf^cU|H8&>#tJn*j`61EV@ktmGC9NgjuXDAO}b!<$%^ zjtO1J?C^O~vFZuqnyd`m<{oTRvWfFsn))@4r1_6*VTEX`L~}Q0q!nJI73ic|WQBb! zLcmaI^&XZ7xXhWSSh_0|a+N-uQJW5gaLrARU`>_1o6#@f4!4VnIIR;eCV!blRB9}L zoVfkjEUmlF!xb8tMO>fV!mIP6neR97#Jnr00me$_#bi^C2sAjBxhOITM`k|5*^#f)=|7@x3wP&-zrc?h_<82-P5g2b?@p@_ z`TkR+hda{gO?f$kP?J~s9a`l!oXx^n1#*S zx}?RWqQ;6M3Sz}{0TGpeqS4mc#cFG7TkYQ3+S+~j)#p)6-}Bu&lZ2!{`aCTpcfR{A zXM4|i&o_DHgJ%Z-T!4QXDA6!EpNl8#Y<){AnaiXSOEd9gG@iB+26PP-8?4P%eZoq1 z)nBo0gB{Ij&@=g*rJ=HIXsIK|LtV`pjC?k4W#TE0tW0!$d^1NCZLWd^&J4Ht=Ealo z+d{haR!~PvDrN`Z!8j8EjMw0)u31qE4HHZl@C7(J&BR1mF}m#BGFoI{l7?|3 zRmq7dCcJVYh^Zp0Oy;Ug_))51d|NzeFUfbWvop)BbqQO%N=2>23i=@L?xdbuAJ1wC z6&yJ=QsTJv(h(~b&uB=E;nHX)|5r0LE5x&zCeFbuM#mNI$>=|r5U&mP0Au>=QjE*cD+M`MQaqcxecyX=gK z^KpR&f7;4qZO;7%{96q)GA)OWI|ePx#}hF-BPL&H;=^cS)Hhp+ynRKd2x_ev?PUOS zF;yNHnV64{F!8K(+D^ta%o)p_Q370*4AWdJ5D^QRJ7Z}YzHyO>#khoS=2DK~8YWhc zX%g%V`K!QnXt0CWvMOP))`MwMR`Zgif(MT z(y9&&urSNJQ?YnwJZfbwQCn^tBaWlO*!=&Sk^B$i8WY!IE#b8{<*fuubp)?C#MNB0 zTDGo})M1!r4L7{7W3-)qkQB6Yg>bq|tQW#5wW7HW31?PHZ-a@ANN5Of)&)<)r0OvO zEWD;|)nM9*cy~PML{LPeO>B}RC|j4xWUP#ElH~`zAYFx#H?bMS#Fwy>T{(hBDkP%i z3eg2DEYdBZ_E>q!HgfjX+yWVC+i4T2v8{lqPk2(mox}tl!#wJDcC@7OQkq6QONebI z5EU|XLELPjM-sa%VcUg7rIL)Dl{{>>Y4IeI%^0!`+)_wqA?W%A^mAKVJevz(2gb?c zb`zf!1pQHVAuFC_YCK(ST!-fLnP?&DcH zHHseGow9GYi3hNU`?9icc6I9*0!L5D$%jnr6=3vie7kMnVV3z=zDw#nV&e07l%S7yZBJ=TdaL&yYBg)hnN*fTPc>_Iv!pUXN+pC4WoBs$g^Cu>X^+1IwE3%$)H zrjf$t4fELT?em)rJg#A?;v~tk`i^*aI$Y&~Gl!R+D}J~cB9fGQ49^%i&YrGRDg$N3#Ira-VOA$opIPM!E3T_L ze;zLw7+~`sGIyyoog$B#cu{J3e3}=RoT9nq87sbX zct@)IcN(S*&w!ToEC>>}os8N9&yRQMa!b>irF9GH+Sf?K;x*EbKN53NV}7e2e#_$!svtKIc%c`0HS=t$)=QCs+n0Xp@%Rwqe;GZ|?QufZOa$OVz361iHc zPhJlBS24?V$B9&q$35`0-QK#*uVWRec-e`Cl{ZuinA7?j}hWLL# zk2O@z?ng~iAQbR497nyrw$TXjMOOG4^764Z8m=zn=u*16ht58VvsFm8JI)qEasX{S#}c z83>>9qj7FEe`M`4f$1u&abaqwZt=9Y0Fd9)SlWkl$R8|qF!D4o(pT@sYMBxgBFAAB zK=^NCA2JFkRK_?W3LQPATCgC@!m=gDf3T&LpgbRr7T*_=z zmQQjH6fG}zE!X7c<|1~4dE=+p7hJ^JJQwxhG0%KYqh7U_imHmm-M}?tALkUKbpug^XTYB`zKaR< z0@R@e4Oqk#el20)S^Ub;h0EDvS_w}(zCZvE@oYaq8z5Z5P-_SeL*xe1&t5F$BXoFB zfmcE;dkJI*L8xRYNtx-?W-_5xup}CA9kw$8ywti$&G`_cCD(DE;TD|lB+3Q&lbE6L z!7q)hyVdW*tIZf>R(ez^vY&!_KY>{ed`v(gY+zymzDT4^-d_o-r6QS53Zc7}7Hm~Rsl^Y9kS@JYZVp+AK! zu7VbRis_0sN#<>lfrF=5d<~CYJIvy;qQ#z~#W&zaSKwl$0PI4lJKW@?q*p)a5xGwB zJB1rnGEJW2Zdazzo(Eb5Cwbj)M3%hZ@R`<92=58(Sal4yw!5E8+|MRvx3>=sk)YQJ zlHSnds|~S9-1Y!MYH-KOIYLr*tPJVSXOCA4dL@ZpQ)km7&K6(%4NXSzrNYuL1$;j)m| z(-8F425Gs-?Fe~wzRxMViynR0ON{!s$2)vaM~_dV2nyam_*6K=mbt%)%pqx`t87eS z8pmD4c0F$cakj$^Y=0Y>8H((ESW8Qsxil@4w(O%-OBKZ%v~8iHct0&{ z!WVhAl(t#;5+0_Mcla)6efTnMl5%nMA1vxWSk!-z`Xwjl!I1j*IrVQ~hx5bKjg*-0 zAu-4+g>lNFfqh(mkNl>|H!UZbwWG8^sQ&&FIJBzr@G%@|*M;Z%aGhsJ+|dXB65h3*i#$O)14Qa>JkKb|wP_jurU~AW1N`D^;x4l6J*?MzIlGHq-^V?> ziO?Rh`h#Tehj^9Q3mf~8VzjqmKXc?h+{QCIiDoY`-9;RR`22o18yFFMg(n>CU&TvA z!(=Xf4KLG<@yxET6EmG!n(z(9;;m%#Zz|-cGAqBuRfF<%yn=7@grL?6;{#M0IHYNV zG~cfP+Na)yz=_S(ykV8WJ7QswG999qt#ZG5Ugz#tX@qm@-c1OFl$+W7UsJ6*@+7{i zu2G(bD&BR~RqBWAsSLU_Ww{ge<4x5s8TI{xZwy_8oICmB6nU5?9^tj;Fg<)qMaZG@ zW;a4!UMOBw5i?_&ykYM2v$r literal 0 HcmV?d00001 diff --git a/bin/visual/P.A.M.v2/catola.png b/bin/visual/P.A.M.v2/catola.png new file mode 100644 index 0000000000000000000000000000000000000000..594b23d1dbd27b2e98bb395dc61c5a6128a0253f GIT binary patch literal 2019 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

k05qME#EjZd+Mdkw36brRhMkdiRpuC~Qi!}GUd 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 literal 0 HcmV?d00001 diff --git a/bin/visual/P.A.M.v2/resumen.png b/bin/visual/P.A.M.v2/resumen.png new file mode 100644 index 0000000000000000000000000000000000000000..520c84334872440690cd6608768242737ccce2d0 GIT binary patch literal 2205 zcmV;O2x9k%P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGr5dZ)e5dq33^FIIp2r@}TK~z{r?U`4M zl|>ZCm)=2X3Q|QN3L!LsCLN&Qhea5D2_|{(p04ZsyLNdnI=ym2v)?B^Xpw-&7hTdlV`lL~DaRzTj=YiX{B}FS&8eFSRHDF$`BAI{eSY{`Os5+Md zC*j9ar_8s8&{}FcdP~Y^6428f=b@5RgUJaob$uV$wJTM&b%S)lLluDqinU!9#E4%W zKb}lFaKLESW%Fi(g`&~ce!~Xyy=CLZ6u+Ip*C$RS_wU?kc+<18%aesD(O-(?%Trjk zELBGkb=U6T`o!8oM0ffBL`(~_m${autjHqRftqr=RBo%=Mg1nbhYnSwR9k4`X=mHG ziIr7vxMoe#&h2%GEP^`xdiu2ajxQ-OhoP=+D0jyx!=5>TWA^Vi-%4tOci{Hz$)9J= z7}^I%j->c~WD)EEK+87{9?YOuw&h-1wj_5+Fy$_rHl-Bt@TwH0ZJhmPAdBD-p1kmj zaK1ihqn~Sw@njJyBBI0yR-Zqgys&p~GIrm-WPvq6blWAb=F5qP7Bd$isvJHp=PSx zS%k&1+VuUSv^04{)|>V&x|{=WvrcwCM2R6ZkZ~Ux=sE4Cqcz2Aawi<1>$_OIb*#^8 zYy$(=rDzbf)-=x->U)ihfob<;tM4@5K&WmO+tu?SN(`X^-~H#GR9V8E z8SEovpW3}U>8{;i^4QvkBmKfXO8;ykog;|9ULwiK@H#ZB*kOwvn{)EhD#1U zm%dL}{%7{=N$~;IpZ4qdP{eLjbVU7hMMHFZD;lE22wa9iARTMJq7fwqXdr9%isC5z z?{$hNyaR1Yb^j-3h`fqAeVG?;>9Kck+4g# zC^yA*Sl;^LB~Wc{T@aR=u~}foG(qj9B1#O9o`eQzqQP+w)l|lzLnCP(x?_h?puJF4 zyj7)?aqMb$ay~hF)R_Li6iE+~BPXz6!6uT@sr-_H0v3nJd@K>T`gWCj>a5AKcr$g1 zm^=%!#0Do$c3wn@0Xk`rCR)*XQt~mfU{RrXgVu0R6NnSlKqQn6Au{#J9mT(`X z$n!c{S%X+*YiT#QXC@SMlN9grbLY(WHG4b(r^E5M-7yKFT{PGBuzN?b{e}|5hU4c# zlo((H;gc0uOUe_@QU6>!)k{ZekV3ZlG8&^a@!Pe+Q#pcCu8npT<+xYeUw2#y$erwk z-fs7CyCcliD`?s@jRa#|z_xehNp;i-~y1z4~cHkB+*Wj2}2&17#XH&+Bk23JM(TeS(F z61#J=X}A5&SG+vurhha!Jsi~jzS?_gEXq9C@49%=z@KRXZj8TB4x*8zns<50 z;eEjzijY@r=z?Dl7nVnsMI0)X(dW0)Qu8I|T}Y?p)ju}vs_c?KGv!xwckWkHl! z2&CYhI)R_DSSYA^V`b1k%V&1Cx5Dwk(>s?*j6r>QIGV4G;fDx^gWIw|a_V_cdp@db z;g@P`_tyy1_a?W=>EWRI94&g!P#=|f!{J4MGUlAy*+^zHqkjnT4$(UJk5*wjzu_?3 z(e^?SB^ClH^`sWroO)kDmHD*>YE#!lc&OqjkH=mLlgvvVa`8L73UX7qHORoMw-z6dWPhJMn|db}FSi9hoS_?#KA7^G!&g6*@vrIm zsLp}Jb?{>HU8u!i$52SN(Lqw6UT2-9`51mCS58c zOMIk1H$o3}6Y!(P5BhZR5wv9aV98}JBQy>=qx(p0jQO8z`w=VPCu3tlLywlZ+6zUL fcopRgtCD{KkI*HWsi%e}00000NkvXXu0mjfiMBM1 literal 0 HcmV?d00001 diff --git a/bin/visual/Principal$1.class b/bin/visual/Principal$1.class new file mode 100644 index 0000000000000000000000000000000000000000..8faa2620e75bef57f49cbb1177886c29a6d4d42f GIT binary patch literal 732 zcmaJ zIcC^s+)wWf7z$lI5+=-cC*m~$1L-18k(^!0v)_3{;z}{Ku4^P1scg))Ll8|%F^*4z9y#D literal 0 HcmV?d00001 diff --git a/bin/visual/Principal$2.class b/bin/visual/Principal$2.class new file mode 100644 index 0000000000000000000000000000000000000000..08399d0be47d3d32b15a57dd5f8988fce35cc94b GIT binary patch literal 834 zcma)4%Wl&^6g`u;agv%eZOywtpav52FcfyJ*n}WON(&OGi)J-(20GPbrt+gL|HKA~ z3JD=TfPX+@!FM3;SWyLS7Fe?9&V8JF&$<5o`^z@~PtkEvVpuwmY0g#jDv>&t`&lEFPT4v7}Hri*y!{NYoj1;GSFGqVK&emtRI@=6RmzvkWaL$8^Y8_=Pc&MSt5Vrpt z#{w*Qm_vnOVIZ~G$|oa{6znVk6LYoA6KUB_osOl);Gda3SR;D#0oO*qpO`!)1^iiq z{FC&UVR;5ahK5YLLMf}OZO$;)?)N(+Z#6N8eLWUO46ILBu~GR%Pd)Y5CQoAVLfVSP z$vPieRf%Cw$I7I%%uSK)nz4(3p?P{q9`4|-9f0=KHIsd#h0cg^xovg#`dW*mt9Y7< z6fM%POg~bIUJ?;#Htja1o*L>DpQqanWjS>E;k{#c;r$1n(FmK>ug)L+~iwF;k)^SD4aLcm2_D*E}jj4KpnxQdl&pB_c*JZ|_2iz`n)kXeF-u22H- m>n}+61k%MdTrc7-ZjfamT1Dke+@jOLDsH1qmZf8H==lRSM7gQ} literal 0 HcmV?d00001 diff --git a/bin/visual/Principal$3.class b/bin/visual/Principal$3.class new file mode 100644 index 0000000000000000000000000000000000000000..7e63aec12f9062496d54749e26bd08f785f3a483 GIT binary patch literal 732 zcmaJK%Wf-B((Eo{WdG{3eEl^o2|=ih(GVk7r=R z%OEV@sFLonjJBv$AItK)DaUd|*y!|cHFo4p9&8RGJjT-iPq;1fwqiWP8lfrjTw0s% z5_WGfcQ-w|lT$}nyXzVu`f4U+E`mI?{PztkNf+q&qdE7_WWbTE68y zGd?$(y>L_FkD5o-D}=Su;srOm&g&j1Nqo=wYt(p!h!|bu(_4-`5_PwJA@2T0>!P~z zz++X0U(+I%IF9*^M;~IDcb+p=XDo*^mazL1@zx(anj@h$nv_%|s}*TDBk@w!@tkSu X*kIBcOMc0FgGcfTX;qG@vV6P-_;#d* literal 0 HcmV?d00001 diff --git a/bin/visual/Principal$4.class b/bin/visual/Principal$4.class new file mode 100644 index 0000000000000000000000000000000000000000..e7df3f3adf3fed2cc5bca9f2fa4d7a39fc5ae344 GIT binary patch literal 732 zcmaJGjLIojeLCO1MGqzJUGi7HIf0v+G zeCQA8k1F0-f)8ow!!UEtojLcMd*|}%?*)J!UInNSR%XghMV=lNN@wa!?tCI9sMpKlkk7V)P6cafnY_$hB8awnR_d3G}5Ais_BW}y0tr$Vr*|BCBuL$&sh%UEMfN-;_Y)hSRkR-sMAhKvR;yga}qCQ6Hl3@ XiY+Fsu;k~w*LWl^kd)=9EX&7#9t5Q0 literal 0 HcmV?d00001 diff --git a/bin/visual/Principal$5.class b/bin/visual/Principal$5.class new file mode 100644 index 0000000000000000000000000000000000000000..821d92eaad4892ae0c4a6c1b31cfd8c8283cedaa GIT binary patch literal 732 zcmaJU~&O~F-cL8u5Nv>>FlpyYkB8QUqFnX)s9ze`XQ zK|vq;qr^K)@F6XI7-sIdGv}Uj?_B=<@e9BXo(8B87AMM%MV_7%N@waq)bWGe(FOq1yHrnmwiE@pv?l#RoCSr7vVMk@rQRd^`nf zUIt<5N|j`nWi&;p`a~8VO)-)~!bZDyt+4}da&N02;XYOZJm9v>+KRD?H9}ovnY1=} zNqBLMxtr(uTkL@B4YFwpI&k7k*Kr%6>;Yq8lTHM z3mz*o{F;7Zk>i-(c=QgIc;`7|dCIasWeGc95O06Sy%`evjXM1)NtR2}a7yB(tm7fm YRI$ON6_)&%_ZpAn36ioLm1X((55Ehhq5uE@ literal 0 HcmV?d00001 diff --git a/bin/visual/Principal$6.class b/bin/visual/Principal$6.class new file mode 100644 index 0000000000000000000000000000000000000000..b0c9d201923bf008b619498bd917ef31be98b55e GIT binary patch literal 732 zcmaJm0Go>u|kQQVbY#R6MrSz_Bih*Wxq=$ z?GJ|6jmPPg4nw)6dm;eC%LqOyAxfx42vBDzHQa?-TPm?P=yyea$h(=fZ4$q~F zM_}2>V3>JSC0-{PHD0Jb5c!eL`=ZCN*l0g#Y}=XKTQCr4sMVP}pLxrcQ zFeYAO`1XXk=jq9v7+Qw;=dLk?zw{ta#g25otN#b~#Yrbu+bYepk?Q!TuqV0~;gjoI z)wR5(`)68_7ivnht7ufMj2j~imZ;e!S`%RPy6ZW84UblUkkA)&+Mw7WVRQ8oQS%Db z-^HC*4l6SB+WU(siX(dC&}q!jPIJcWh-GWU5;QLmtzP5J7>V}}74NPfnJq|z5s8zs bfDc4d!XlA+Bzc+kGL7UT;-VZY%F^)x=)I>4 literal 0 HcmV?d00001 diff --git a/bin/visual/Principal$7.class b/bin/visual/Principal$7.class new file mode 100644 index 0000000000000000000000000000000000000000..ed3a6cc082779f989ab5f78c512767797c93b9e9 GIT binary patch literal 732 zcmaJ!5C^g)LT3ae{GU#_j{*`w#;R@-LXC0nP z7mvWQlff|iph~<;GHSd~eJb*AI`4}f!)l}bsIfz5a&M~>;w2V+EKpmHeiwqAH25Z#p60HfadfoM$zJ^CDKuG8_I(?wnAz^d-22t}C z)vMypl*5V)z4rcKn&ODwICKWHw9}k1H)1&$u>{R)MB6_wKStvHMa8=-NahOCU_|1i ctl$;Vl(0&q9!XxOy-Xu{jkqYsin4V42l-5=EC2ui literal 0 HcmV?d00001 diff --git a/bin/visual/Principal.class b/bin/visual/Principal.class new file mode 100644 index 0000000000000000000000000000000000000000..97b2fc34f912e820e0b6a23de53dcf732a8eb092 GIT binary patch literal 23132 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 + { + nArch[z] = arch[x]; + z++; + } + } + actArchivo(nArch); + } + public void actArchivo(String[] texto) + { + clearFile(); + abrirEscribir(); + for(int x = 0; x < texto.length;x++) + { + try + { + fw.append(texto[x]+"*!"); + } catch (IOException e){} + } + cerrarEscribir(); + } + public void clearFile() + { + try + { + fw = new FileWriter(archivo, false); + fw.write(""); + fw.close(); + } catch (IOException e) + { + System.out.println("Error al instanciar FileWriter"); + } + } + private void abrirLeer() + { + try + { + fr = new FileReader(archivo); + } catch (FileNotFoundException e) + { + System.out.println("Error al instanciar FileReader"); + } + br = new BufferedReader(fr); + } + private void cerrarLeer() + { + try + { + fr.close(); + } catch (IOException e) + { + System.out.println("Error en fr.close()"); + } + try + { + br.close(); + } catch (IOException e) + { + System.out.println("Error en br.close()"); + } + } + private void abrirEscribir() + { + try + { + fw = new FileWriter(archivo, true); + } catch (IOException e) + { + System.out.println("Error al instanciar FileWriter"); + } + } + private void cerrarEscribir() + { + if (fw != null) + { + try + { + fw.close(); + } catch (IOException e) + { + System.out.println("No deberia ocurrir, pero weno\nError en fw.close()"); + } + } + } +} diff --git a/src/utiles/Cifrador.java b/src/utiles/Cifrador.java new file mode 100755 index 0000000..0455074 --- /dev/null +++ b/src/utiles/Cifrador.java @@ -0,0 +1,104 @@ +package utiles; + +import java.io.IOException; +import javax.crypto.Cipher; +import javax.crypto.spec.IvParameterSpec; +import javax.crypto.spec.SecretKeySpec; +import sun.misc.BASE64Decoder; +import sun.misc.BASE64Encoder; + +/** + * + * @author idelcano + */ +@SuppressWarnings("restriction") +public class Cifrador +{ + private static Cifrador instancia; + + private Cifrador() + { + }; + public static Cifrador getInstance() + { + if (instancia == null) + instancia = new Cifrador(); + return instancia; + } + + byte[] iv = new byte[16]; + + public String cifrar(String clave, String mensaje) + { + try + { + byte[] mensajeSinCifrar = mensaje.getBytes(); + SecretKeySpec key = crearSecretKeyUsuarioClave(clave, clave); + Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); + cipher.init(Cipher.ENCRYPT_MODE, key, new IvParameterSpec(iv)); + byte[] mensajeCifrado = cipher.doFinal(mensajeSinCifrar); + return codificarBase64(mensajeCifrado); + } catch (Exception e) + { + System.out.println("Error en el cifrado"); + e.printStackTrace(); + } + return null; + } + public String descifrar(String clave, String mensaje) + { + try + { + SecretKeySpec key = crearSecretKeyUsuarioClave(clave, clave); + Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); + byte[] mensajeCifrado = decodificarBase64(mensaje); + cipher.init(Cipher.DECRYPT_MODE, key, new IvParameterSpec(iv)); + byte[] mensajeDescifrado = cipher.doFinal(mensajeCifrado); + return new String(mensajeDescifrado); + } catch (Exception e) + { + return ""; + } + } + private String codificarBase64(byte[] output) + { + return new BASE64Encoder().encode(output); + } + private byte[] decodificarBase64(String cadena) + { + try + { + return new BASE64Decoder().decodeBuffer(cadena); + } catch (IOException ex) + { + System.out.println("Error con la decodificacion en base64"); + ex.printStackTrace(); + } + return null; + } + private SecretKeySpec crearSecretKeyUsuarioClave(String usuario, String clave) + { + iv = truncarkey(usuario); + byte[] key = clave.getBytes(); + key = truncarkey(clave); + return new SecretKeySpec(key, "AES"); + } + private byte[] truncarkey(String clave) + { + byte[] key = clave.getBytes(); + while (key.length != 16) + { + if (key.length < 16) + { + clave += "0"; + key = clave.getBytes(); + } + if (key.length > 16) + { + clave = clave.substring(0, 16); + key = clave.getBytes(); // TODO + } + } + return key; + } +} diff --git a/src/utiles/ControlPrincipal.java b/src/utiles/ControlPrincipal.java new file mode 100644 index 0000000..23b5a92 --- /dev/null +++ b/src/utiles/ControlPrincipal.java @@ -0,0 +1,191 @@ +package utiles; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; + +public class ControlPrincipal +{ + private String ruta; + private String usuario; + private Archivo archivo; + + public ControlPrincipal(String usuario) + { + this.usuario = usuario; + getRuta(); + archivo = new Archivo(ruta); + } + public void añadir(String fecha, String documento, String fd, String desc, String ing, String egr) + { + int id = 1; + int saldo = 0; + String[] arch = archivo.entregarProcesado(); + String[] lastRow = arch[arch.length - 1].split(";"); + try + { + id = Integer.parseInt(lastRow[0]) + 1; + saldo = Integer.parseInt(lastRow[lastRow.length - 1]) + Integer.parseInt(ing) - Integer.parseInt(egr); + } catch (Exception e) + { + } + String fila = id + ";" + fecha + ";" + documento + ";" + fd + ";" + desc + ";" + ing + ";" + egr + ";" + saldo; + archivo.escribirArchivo(fila); + } + public void modificarFila(String id, String fecha, String documento, String fd, String desc, String ing, String egr) + { + String[] arch = archivo.entregarProcesado(); + for (int x = 0; x < arch.length; x++) + { + if (arch[x].split(";")[0].equals(id)) + { + arch[x] = id + ";" + fecha + ";" + documento + ";" + fd + ";" + desc + ";" + ing + ";" + egr + ";" + + "0"; + } + } + actSaldos(); + archivo.actArchivo(arch); + } + public void eliminarFila(String id) + { + archivo.borrarLinea(id); + actSaldos(); + } + public void actSaldos() + { + String[] arch = archivo.entregarProcesado(); + for (int x = 0; x < arch.length; x++) + { + int saldoAnterior = 0; + int saldo = 0; + if (x > 0) + { + String[] aux = arch[x - 1].split(";"); + saldoAnterior = Integer.parseInt(aux[aux.length - 1]); + } + String textAux = ""; + String[] aux = arch[x].split(";"); + if (arch[x].length() > 1) + { + saldo = saldoAnterior + Integer.parseInt(aux[aux.length - 3]) - Integer.parseInt(aux[aux.length - 2]); + } + for (int z = 0; z < aux.length - 1; z++) + { + textAux += aux[z] + ";"; + } + textAux += saldo; + arch[x] = textAux; + } + archivo.actArchivo(arch); + } + public String[] getLastRow() + { + String[] arch = archivo.entregarProcesado(); + return arch[arch.length - 1].split(";"); + } + public String[] getRow(int id) + { + String[] arch = archivo.entregarProcesado(); + return arch[id].split(";"); + } + public int getRowCount() + { + String[] arch = archivo.entregarProcesado(); + return arch.length; + } + public boolean isFiled() + { + return (archivo.leerArchivo().length() > 1); + } + public String[][] resumenMes() + { + String[] arch = archivo.entregarProcesado(); + ArrayList fechas = new ArrayList(); + ArrayList ings = new ArrayList(); + ArrayList egrs = new ArrayList(); + for (int x = 0; x < arch.length; x++) + { + String fecha = arch[x].split(";")[1]; + if (!fechas.contains(fecha)) + { + fechas.add(fecha); + ings.add("0"); + egrs.add("0"); + } + } + for (int x = 0; x < arch.length; x++) + { + String fecha = arch[x].split(";")[1]; + String ing = arch[x].split(";")[5]; + String egr = arch[x].split(";")[6]; + int index = fechas.indexOf(fecha); + ings.set(index, String.valueOf(Integer.parseInt(ings.get(index))+Integer.parseInt(ing))); + egrs.set(index, String.valueOf(Integer.parseInt(egrs.get(index))+Integer.parseInt(egr))); + + } + String[][] fin = new String[4][fechas.size()]; + for(int x = 0; x < fechas.size(); x++) + { + fin[0][x] = fechas.get(x); + fin[1][x] = String.valueOf(Integer.parseInt(ings.get(x))-Integer.parseInt(egrs.get(x))); + fin[2][x] = ings.get(x); + } + + fin = ordenarSaldos(fin); + return fin; + } + public String[][] ordenarSaldos(String[][] saldos) + { + SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy"); + try + { + boolean swapped = true; + int j = 0; + String tmp; + String tmp1; + while (swapped) + { + swapped = false; + j++; + for (int i = 0; i < saldos[0].length - j; i++) + { + if (formatter.parse(saldos[0][i]).after(formatter.parse(saldos[0][i+1]))) + { + tmp = saldos[0][i]; + tmp1 = saldos[1][i]; + saldos[0][i] = saldos[0][i + 1]; + saldos[1][i] = saldos[1][i + 1]; + saldos[0][i + 1] = tmp; + saldos[1][i + 1] = tmp1; + swapped = true; + } + } + } + + } catch (ParseException e) + { + e.printStackTrace(); + } + return saldos; + } + public void prueba() + { + String[][] prueba = resumenMes(); + for(int x = 0; x < prueba[0].length; x++) + { + System.out.println(prueba[0][x]+" "+prueba[1][x]); + } + } + public void getRuta() + { + String os = System.getProperty("os.name"); + if (os.contains("Windows")) + { + this.ruta = "C:\\P.A.M\\archivo"; + } else if (os.contains("Linux")) + { + this.ruta = System.getProperty("user.home") + "/P.A.M/" + this.usuario; + } + } +} diff --git a/src/visual/P.A.M.v2/catola.png b/src/visual/P.A.M.v2/catola.png new file mode 100644 index 0000000000000000000000000000000000000000..594b23d1dbd27b2e98bb395dc61c5a6128a0253f GIT binary patch literal 2019 zcmV<92ORi`P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGr5dZ)e5dq33^FIIp2Y5+DK~z{r?U`AO zRYeenhh1a`1B#%75flLd5kV265u<<$L5We&XjDX85J3?I6cl4{1A}N#iP5-3V?d)1 z>Wgpe+pzE8urn|~0)U-j_fFl+xr1|uj6D1~r>m>`RCje(|JA3cX!Yu-$|zc~ zBFez>jT@t)Wy_*2de6|!Ckt5M%8YoEvfu(MiPA*(t+2klNJwqh7>dpqH zFbOy|AhddB*KsV7RKlu5K765MMB`f}Yp%WYosOK|Pd*QZv zhqVt)onr0u{q;0omqKVfb)1l_8@6efW_z7WnU!_qRna~0K=CFy0w1SiR#BBzWEIAq%} zF}xS_>q+-+O&H0@MOq<$ke9NYsaM?syzh0Z1XGw4GT=SYJ`#cMT5b<|Z+#>x8K@u> z6TQje*6{&U$Y^>}-A4Y~yuUQ1s0=f-FNv zc5#24!HLlk64_Qrn8IoXxi8nY1Gtw?%9=D${iV;&eyOz7@$x4`IbT%9HAhs_B^G{? zp|a?Wk^|mSG$30WtwaSHJ72W*uT!U@2}*3Hs2_GBZCC(gb8ku?Ieim7UY8@M3hpOz zaF%SQ|H1x`8h}D0n}ls@OMAYHZE3yucnSqmSe?*73CSVdHFc7}Pb?ti{!>NX9mz%t%Fr=VTj^ z2HRLXjbhn;L17B38JuwpdSKEJtqFvL5nj0(al0%e(gHUEU;1B-&WUoqyD7}>TjhzG zbR3Yb)AM$P=J4YyLq9;@7%Cn30y-Qqi_6QS_FUtr%suiv)m=;k$+C?*Fn1-C-Dja- z3JU>E%q*REuW6_8r=pp5fMd&kV(JJ@Bx@l+Sbo&*>FuwA0w6I=HdjImL&#UZoP%5m zRdATfgj)V;hC266y>nJSFGsb}x1270>4^=u=?ta+#?(p9l@no?YiMj^XS@H}-YyVq z>!q;&8P`?5zk*q^pd{a-B`VC_Q!0rc$)3R8FPx#1ZP1_K>z@;j|==^1poj532;bRa{vGr5dZ)e5dq33^FIIpYmrGrK~#8N?Y#$F zTUmNGzWHkQ+tf|6UpC)nXIp05%sR9F})Yli@|`wG}C)WfCK^rqDUY_ z@6GhydlN+|ZvdKSWj1BMkc;f++bi;^!Bz9(w^R5g%hM z;bYvW7og|WkFmG;uiHR-;di@hnBVXA*auhFqmbEB%t0*1zAyi*&-2Ds@&Rb(dq9~V zjvZPzAAkAR4>md3@t&YC86iRT7pyP;8Fw&UsEeKgPn5=*A?uX_SYD4%R+){^#87m# zB z&&Qs_0`mq|a&#f$XhWQ*i!Fg6rlQVbu_64=_cs0KZ7TT=9%enqT<9m+U>V) zkZ}v5@O==7H!vA_5{pTfm-lx0m9>zQ_NVIj$actd`2_Rn4=@{k07yLn|M3y5CmhB~ z(l6u(1ot{(S2i%mx~I3d``5lUI#h!ASWk3&{~X$pPqFLsH>i{DK+3rX{hSxb3qK1K z+yjbrpx8fvrR{BuM4iG$`iWn;!eCFuGY-oiBhhCu9kmZ;Q}dXM{{(l+lfhY9L5KH# z*iTO4#rP;#qGi-bq}VA`fhhCBulrMDc_wNj?qG^>M_yxTu?A){?^BhpVq2(zb%6n9 z@}6Odqlz{1__czo$PLm0J2?!q!{u)e*4@m-_-GS2yd=DM`T@jQkFd^D!giH8wrXs# zRb_$olE<|3X*7~E#s@fIpd|~wURDSTdLAi1NLO3o`co}c#3lyA*i;wK-R;rbT8-9@ z5}2B4qPbm&w2V+#nCf6)uog~^Ccl0uU$pUb70Dv;%T&cHv}ZUW{rP#Mx?D$1ehB=6 zUZ8id28mHl7|BxU+}q_h+eE(2@zpXDY?PW|z0wg|_0CwYaon8ZStjgl@?XJrEA8GB zWomPl7`IjyldoeX{~1K7I#?$ETFX_#a^^kaWqr(2+lttlPthLqCwsg8ZcLJ))3TiM z6q^O6SYfMRDdjE&((72urYOuf55=l9oNg?}ip=ptKf*FY8;j90&v*i9>LV;99)~2) z5Q|*pvAsinc`MCOM~Y}k?hK6*3Ak%gOobf82$97+$%8SE_p!xN#54ucp^XhRCtrg& z>L=LAd4$dMV?g}(<@??!PNi^p6R&b@(IDA?gn4Uv?-c*kM*GX$M+eH$S(k@56**|E zWTDaJr|5e14+x%}!{f0j48Q&>Om6Q&F+T#URFUP>E7)b9#+%@e8x@hlpkBHSY0hQB)MYGXUBR-z`tjcB|EZ1i2vJwchNHC-Mq-a(B;gh&80YXJOi6y= z&E(_Q;9R4VDdQSp%D6H%DUSHC@4sR+Jn=m%6yLD_)js- zI*CfZlX&Cz86<^t;u2FLR26I$s9=+?iWR!bof;c#SCc@galmG&G1f_}Y*pD}ldAwx z#s&1oDL}$gKof+8y0O2HGd5E1VW10yxGbd;j2zXs*?d0?bQfXzujN=gK#X4+tA zs0wcn+eP_t8T+K<-aJAL! zf%RH9;&~^m)I7&hl|5F4hM3QPjH%owkW^S7HaQT?{OjX==H9 zhxzx}T9)2H35QOeq=eZ7WlX2gGU);_un88z4q!9oHf}VRpep7v7SirwgMAHi5kJIw zkrme1cPZ6AgjFWFcB%qU9`b{|!+v?2P1R(~$6v&B##0(x9u=?#nrd>0e3N3oNsjN%m1Fyo=x3^iQ zis^}la?I?Ia^Evf_#F%eAHsapRV>6`$6VZDXveF;Y;+U>qBTqg{fxS5KQ@>ru){ox zhix_T{X}7(Vm|7I;SKUIhBHa=P^IjFDYphK9B@vsvpb$uK98(;i2?!_3%Kd;9A z7@Mi*u#$R|Qo)~sNx73jLIUau$1ih+4@Oym?O8$yXv^e}*fKLS%_V@_p*o)}b*pgqzf|TRGP-75#He#hzK) zJN>WQ)Kts2M!O1;lNp9^3j3q+w=f=m7NeAI?k`N0A8?DxXC>L_^LmeT?-}fH?o#6W zHd*}KZuE3viz*{cIf>rQZK$QW$=4@QCMvV|1XXNg-i9>$K4~JW-`rJ`!zE~`&Vap* zDn=Oh&=YwGqhSZpMFdKaWt0||b5@&I}WgN7j&{KyvmNy6bq-AaA=ees;>QYhkM9AN8~sp{9@l9nH%a zPQ8fHgwq&JK99qBF_8Ji7EcG;0&Q%STT&%Y6BAPy$hnJo(z9C?mYB

k05qME#EjZd+Mdkw36brRhMkdiRpuC~Qi!}GUd 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 literal 0 HcmV?d00001 diff --git a/src/visual/P.A.M.v2/resumen.png b/src/visual/P.A.M.v2/resumen.png new file mode 100644 index 0000000000000000000000000000000000000000..520c84334872440690cd6608768242737ccce2d0 GIT binary patch literal 2205 zcmV;O2x9k%P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGr5dZ)e5dq33^FIIp2r@}TK~z{r?U`4M zl|>ZCm)=2X3Q|QN3L!LsCLN&Qhea5D2_|{(p04ZsyLNdnI=ym2v)?B^Xpw-&7hTdlV`lL~DaRzTj=YiX{B}FS&8eFSRHDF$`BAI{eSY{`Os5+Md zC*j9ar_8s8&{}FcdP~Y^6428f=b@5RgUJaob$uV$wJTM&b%S)lLluDqinU!9#E4%W zKb}lFaKLESW%Fi(g`&~ce!~Xyy=CLZ6u+Ip*C$RS_wU?kc+<18%aesD(O-(?%Trjk zELBGkb=U6T`o!8oM0ffBL`(~_m${autjHqRftqr=RBo%=Mg1nbhYnSwR9k4`X=mHG ziIr7vxMoe#&h2%GEP^`xdiu2ajxQ-OhoP=+D0jyx!=5>TWA^Vi-%4tOci{Hz$)9J= z7}^I%j->c~WD)EEK+87{9?YOuw&h-1wj_5+Fy$_rHl-Bt@TwH0ZJhmPAdBD-p1kmj zaK1ihqn~Sw@njJyBBI0yR-Zqgys&p~GIrm-WPvq6blWAb=F5qP7Bd$isvJHp=PSx zS%k&1+VuUSv^04{)|>V&x|{=WvrcwCM2R6ZkZ~Ux=sE4Cqcz2Aawi<1>$_OIb*#^8 zYy$(=rDzbf)-=x->U)ihfob<;tM4@5K&WmO+tu?SN(`X^-~H#GR9V8E z8SEovpW3}U>8{;i^4QvkBmKfXO8;ykog;|9ULwiK@H#ZB*kOwvn{)EhD#1U zm%dL}{%7{=N$~;IpZ4qdP{eLjbVU7hMMHFZD;lE22wa9iARTMJq7fwqXdr9%isC5z z?{$hNyaR1Yb^j-3h`fqAeVG?;>9Kck+4g# zC^yA*Sl;^LB~Wc{T@aR=u~}foG(qj9B1#O9o`eQzqQP+w)l|lzLnCP(x?_h?puJF4 zyj7)?aqMb$ay~hF)R_Li6iE+~BPXz6!6uT@sr-_H0v3nJd@K>T`gWCj>a5AKcr$g1 zm^=%!#0Do$c3wn@0Xk`rCR)*XQt~mfU{RrXgVu0R6NnSlKqQn6Au{#J9mT(`X z$n!c{S%X+*YiT#QXC@SMlN9grbLY(WHG4b(r^E5M-7yKFT{PGBuzN?b{e}|5hU4c# zlo((H;gc0uOUe_@QU6>!)k{ZekV3ZlG8&^a@!Pe+Q#pcCu8npT<+xYeUw2#y$erwk z-fs7CyCcliD`?s@jRa#|z_xehNp;i-~y1z4~cHkB+*Wj2}2&17#XH&+Bk23JM(TeS(F z61#J=X}A5&SG+vurhha!Jsi~jzS?_gEXq9C@49%=z@KRXZj8TB4x*8zns<50 z;eEjzijY@r=z?Dl7nVnsMI0)X(dW0)Qu8I|T}Y?p)ju}vs_c?KGv!xwckWkHl! z2&CYhI)R_DSSYA^V`b1k%V&1Cx5Dwk(>s?*j6r>QIGV4G;fDx^gWIw|a_V_cdp@db z;g@P`_tyy1_a?W=>EWRI94&g!P#=|f!{J4MGUlAy*+^zHqkjnT4$(UJk5*wjzu_?3 z(e^?SB^ClH^`sWroO)kDmHD*>YE#!lc&OqjkH=mLlgvvVa`8L73UX7qHORoMw-z6dWPhJMn|db}FSi9hoS_?#KA7^G!&g6*@vrIm zsLp}Jb?{>HU8u!i$52SN(Lqw6UT2-9`51mCS58c zOMIk1H$o3}6Y!(P5BhZR5wv9aV98}JBQy>=qx(p0jQO8z`w=VPCu3tlLywlZ+6zUL fcopRgtCD{KkI*HWsi%e}00000NkvXXu0mjfiMBM1 literal 0 HcmV?d00001 diff --git a/src/visual/Principal.java b/src/visual/Principal.java new file mode 100644 index 0000000..f392c98 --- /dev/null +++ b/src/visual/Principal.java @@ -0,0 +1,922 @@ +package visual; + +import java.awt.CardLayout; +import java.awt.Color; +import java.awt.Dimension; +import java.awt.Font; +import java.awt.SystemColor; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; + +import javax.swing.DefaultComboBoxModel; +import javax.swing.GroupLayout; +import javax.swing.ImageIcon; +import javax.swing.JButton; +import javax.swing.JComboBox; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.JTable; +import javax.swing.JTextField; +import javax.swing.JToggleButton; +import javax.swing.LayoutStyle; +import javax.swing.WindowConstants; +import javax.swing.table.DefaultTableModel; + +import org.jdesktop.swingx.JXDatePicker; + +import utiles.*; + +public class Principal +{ + private JFrame principal; + private JButton añadir; + private JToggleButton cartola; + private JComboBox documento; + private JComboBox documento1; + private JTextField eM1; + private JTextField eM2; + private JTextField eM3; + private JTextField eM4; + private JTextField eM5; + private JTextField eM6; + private JButton eliminar; + private JTextField fDesc; + private JTextField fDesc1; + private JTextField fEgr; + private JTextField fEgr1; + private JTextField fFD; + private JTextField fFD1; + private JTextField fFecha1; + private JTextField fIng; + private JTextField fIng1; + private JTextField fNumber; + private JTextField fUsuario; + private JPanel graph; + private JPanel graphDoc; + private JPanel graphMes; + private JTextField iM1; + private JTextField iM2; + private JTextField iM3; + private JTextField iM4; + private JTextField iM5; + private JTextField iM6; + private JLabel jLabel1; + private JLabel jLabel2; + private JScrollPane jScrollPane1; + private JLabel lDesc; + private JLabel lDesc1; + private JLabel lDocumento; + private JLabel lDocumento1; + private JLabel lEgr; + private JLabel lEgr1; + private JLabel lEgr2; + private JLabel lFD; + private JLabel lFD1; + private JLabel lFecha1; + private JLabel lFecha2; + private JLabel lFecha3; + private JLabel lFecha4; + private JLabel lIng; + private JLabel lIng1; + private JLabel lIng2; + private JLabel lMes1; + private JLabel lMes2; + private JLabel lMes3; + private JLabel lMes4; + private JLabel lMes5; + private JLabel lMes6; + private JLabel lSaldo2; + private JLabel lUsuario; + private JButton modificar; + private JLabel pam; + private JPanel panel; + private JPanel panelCartola; + private JPanel panelPrincipal; + private JPanel panelResumen; + private JToggleButton resumen; + private JTextField sM1; + private JTextField sM2; + private JTextField sM3; + private JTextField sM4; + private JTextField sM5; + private JTextField sM6; + private JTable tabla; + private JComboBox tipoGraph; + private JXDatePicker jXDatePicker1; + private JXDatePicker jXDatePicker2; + private String usuario; + + public Principal(String usuario) + { + this.usuario = usuario; + initComponents(); + iniciarTabla(); + } + private void initComponents() + { + principal = new JFrame(); + panel = new JPanel(); + panelCartola = new JPanel(); + eliminar = new JButton(); + jScrollPane1 = new JScrollPane(); + tabla = new JTable(); + lFecha2 = new JLabel(); + lDocumento = new JLabel(); + lFD = new JLabel(); + lDesc = new JLabel(); + lIng = new JLabel(); + lEgr = new JLabel(); + documento = new JComboBox<>(); + fFD = new JTextField(); + fDesc = new JTextField(); + fIng = new JTextField(); + fEgr = new JTextField(); + añadir = new JButton(); + lFecha3 = new JLabel(); + lDocumento1 = new JLabel(); + lFD1 = new JLabel(); + lDesc1 = new JLabel(); + lIng1 = new JLabel(); + lEgr1 = new JLabel(); + fEgr1 = new JTextField(); + fIng1 = new JTextField(); + fDesc1 = new JTextField(); + fFD1 = new JTextField(); + documento1 = new JComboBox<>(); + modificar = new JButton(); + lFecha4 = new JLabel(); + fNumber = new JTextField(); + panelResumen = new JPanel(); + graph = new JPanel(); + graphMes = new JPanel(); + graphDoc = new JPanel(); + tipoGraph = new JComboBox<>(); + jLabel1 = new JLabel(); + lMes1 = new JLabel(); + lMes2 = new JLabel(); + lMes3 = new JLabel(); + lMes4 = new JLabel(); + lMes5 = new JLabel(); + lMes6 = new JLabel(); + iM1 = new JTextField(); + iM2 = new JTextField(); + iM3 = new JTextField(); + iM4 = new JTextField(); + iM5 = new JTextField(); + iM6 = new JTextField(); + lIng2 = new JLabel(); + lEgr2 = new JLabel(); + eM2 = new JTextField(); + eM3 = new JTextField(); + eM4 = new JTextField(); + eM5 = new JTextField(); + eM6 = new JTextField(); + eM1 = new JTextField(); + sM2 = new JTextField(); + sM4 = new JTextField(); + sM3 = new JTextField(); + lSaldo2 = new JLabel(); + sM6 = new JTextField(); + sM5 = new JTextField(); + sM1 = new JTextField(); + jLabel2 = new JLabel(); + panelPrincipal = new JPanel(); + pam = new JLabel(); + cartola = new JToggleButton(); + resumen = new JToggleButton(); + lUsuario = new JLabel(); + fUsuario = new JTextField(); + fFecha1 = new JTextField(); + lFecha1 = new JLabel(); + jXDatePicker1 = new JXDatePicker(); + Calendar today = Calendar.getInstance(); + jXDatePicker1.setDate(today.getTime()); + jXDatePicker2 = new JXDatePicker(); + jXDatePicker2.setDate(today.getTime()); + fIng.setText("0"); + fEgr.setText("0"); + fIng1.setText("0"); + fEgr1.setText("0"); + principal.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); + panel.setBackground(new Color(204, 204, 204)); + panel.setRequestFocusEnabled(false); + panel.setLayout(new CardLayout()); + panelCartola.setBackground(new Color(21, 21, 21)); + eliminar.setText("Eliminar Fila Seleccionada"); + eliminar.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent evt) + { + eliminarActionPerformed(evt); + } + }); + jScrollPane1.getViewport().setBackground(new Color(128, 203, 196)); + tabla.setBackground(new Color(0, 204, 204)); + tabla.setForeground(SystemColor.textHighlight); + tabla.setModel(new DefaultTableModel(new Object[][] {}, new String[] { "N°", "Fecha", "Documento", + "Fuente/Destino", "Descripcion", "Ingreso", "Egreso", "Saldo" }) + { + boolean[] canEdit = new boolean[] { false, false, false, false, false, false, false, false }; + + public boolean isCellEditable(int rowIndex, int columnIndex) + { + return canEdit[columnIndex]; + } + }); + tabla.setGridColor(new Color(255, 255, 255)); + tabla.setSelectionForeground(new Color(0, 120, 215)); + jScrollPane1.setViewportView(tabla); + if (tabla.getColumnModel().getColumnCount() > 0) + { + tabla.getColumnModel().getColumn(0).setResizable(false); + } + lFecha2.setBackground(new Color(0, 204, 204)); + lFecha2.setFont(new Font("Eras Light ITC", 0, 14)); // NOI18N + lFecha2.setForeground(new Color(0, 204, 204)); + lFecha2.setText("Fecha:"); + lDocumento.setBackground(new Color(0, 204, 204)); + lDocumento.setFont(new Font("Eras Light ITC", 0, 14)); // NOI18N + lDocumento.setForeground(new Color(0, 204, 204)); + lDocumento.setText("Documento:"); + lFD.setBackground(new Color(0, 204, 204)); + lFD.setFont(new Font("Eras Light ITC", 0, 14)); // NOI18N + lFD.setForeground(new Color(0, 204, 204)); + lFD.setText("Fuente/Destino:"); + lDesc.setBackground(new Color(0, 204, 204)); + lDesc.setFont(new Font("Eras Light ITC", 0, 14)); // NOI18N + lDesc.setForeground(new Color(0, 204, 204)); + lDesc.setText("Descripcion:"); + lIng.setBackground(new Color(0, 204, 204)); + lIng.setFont(new Font("Eras Light ITC", 0, 14)); // NOI18N + lIng.setForeground(new Color(0, 204, 204)); + lIng.setText("Ingreso:"); + lEgr.setBackground(new Color(0, 204, 204)); + lEgr.setFont(new Font("Eras Light ITC", 0, 14)); // NOI18N + lEgr.setForeground(new Color(0, 204, 204)); + lEgr.setText("Egreso:"); + documento.setFont(new Font("Eras Light ITC", 0, 14)); // NOI18N + documento.setModel(new DefaultComboBoxModel<>(new String[] { "Efectivo", "Credito", "Transferencia" })); + fFD.setToolTipText(""); + añadir.setFont(new Font("Eras Light ITC", 0, 14)); // NOI18N + añadir.setText("Añadir"); + añadir.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent evt) + { + añadirActionPerformed(evt); + } + }); + lFecha3.setFont(new Font("Eras Light ITC", 0, 14)); // NOI18N + lFecha3.setForeground(new Color(0, 204, 204)); + lFecha3.setText("Fecha:"); + lDocumento1.setFont(new Font("Eras Light ITC", 0, 14)); // NOI18N + lDocumento1.setForeground(new Color(0, 204, 204)); + lDocumento1.setText("Documento:"); + lFD1.setFont(new Font("Eras Light ITC", 0, 14)); // NOI18N + lFD1.setForeground(new Color(0, 204, 204)); + lFD1.setText("Fuente/Destino:"); + lDesc1.setFont(new Font("Eras Light ITC", 0, 14)); // NOI18N + lDesc1.setForeground(new Color(0, 204, 204)); + lDesc1.setText("Descripcion:"); + lIng1.setFont(new Font("Eras Light ITC", 0, 14)); // NOI18N + lIng1.setForeground(new Color(0, 204, 204)); + lIng1.setText("Ingreso:"); + lEgr1.setFont(new Font("Eras Light ITC", 0, 14)); // NOI18N + lEgr1.setForeground(new Color(0, 204, 204)); + lEgr1.setText("Egreso:"); + fFD1.setToolTipText(""); + documento1.setFont(new Font("Eras Light ITC", 0, 14)); // NOI18N + documento1.setModel(new DefaultComboBoxModel<>(new String[] { "Efectivo", "Credito", "Transferencia" })); + modificar.setFont(new Font("Eras Light ITC", 0, 14)); // NOI18N + modificar.setText("Modificar"); + modificar.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent evt) + { + modificarActionPerformed(evt); + } + }); + lFecha4.setFont(new Font("Eras Light ITC", 0, 14)); // NOI18N + lFecha4.setForeground(new Color(0, 204, 204)); + lFecha4.setText("N°:"); + fNumber.setToolTipText(""); + GroupLayout panelCartolaLayout = new GroupLayout(panelCartola); + panelCartola.setLayout(panelCartolaLayout); + panelCartolaLayout.setHorizontalGroup(panelCartolaLayout.createParallelGroup(GroupLayout.Alignment.LEADING) + .addGroup(panelCartolaLayout.createSequentialGroup() + .addGroup(panelCartolaLayout.createParallelGroup(GroupLayout.Alignment.LEADING).addGroup( + panelCartolaLayout.createSequentialGroup().addGap(747, 747, 747).addComponent(eliminar)) + .addGroup(panelCartolaLayout.createSequentialGroup().addContainerGap() + .addComponent(jScrollPane1, GroupLayout.DEFAULT_SIZE, 933, Short.MAX_VALUE))) + .addGap(30, 30, + 30) + .addGroup(panelCartolaLayout.createParallelGroup(GroupLayout.Alignment.TRAILING) + .addGroup(panelCartolaLayout.createSequentialGroup() + .addGroup(panelCartolaLayout.createParallelGroup(GroupLayout.Alignment.LEADING) + .addComponent(lFD).addComponent(lEgr, GroupLayout.Alignment.TRAILING) + .addComponent(lIng, GroupLayout.Alignment.TRAILING) + .addComponent(lDesc, GroupLayout.Alignment.TRAILING) + .addComponent(lDocumento, GroupLayout.Alignment.TRAILING) + .addComponent(lFecha2, GroupLayout.Alignment.TRAILING)) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addGroup(panelCartolaLayout + .createParallelGroup(GroupLayout.Alignment.LEADING, false) + .addComponent(documento, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(fFD).addComponent(fDesc).addComponent(fIng) + .addComponent(fEgr, GroupLayout.DEFAULT_SIZE, 170, Short.MAX_VALUE) + .addComponent(jXDatePicker1, GroupLayout.DEFAULT_SIZE, + GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) + .addGroup(panelCartolaLayout.createSequentialGroup() + .addGroup(panelCartolaLayout.createParallelGroup(GroupLayout.Alignment.LEADING) + .addComponent(lFD1).addComponent(lEgr1, GroupLayout.Alignment.TRAILING) + .addComponent(lIng1, GroupLayout.Alignment.TRAILING) + .addComponent(lDesc1, GroupLayout.Alignment.TRAILING) + .addComponent(lDocumento1, GroupLayout.Alignment.TRAILING) + .addComponent(lFecha3, GroupLayout.Alignment.TRAILING) + .addComponent(lFecha4, GroupLayout.Alignment.TRAILING)) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addGroup(panelCartolaLayout + .createParallelGroup(GroupLayout.Alignment.LEADING, false) + .addComponent(documento1, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(fFD1).addComponent(fDesc1).addComponent(fIng1) + .addComponent(fEgr1, GroupLayout.PREFERRED_SIZE, 170, + GroupLayout.PREFERRED_SIZE) + .addComponent(fNumber).addComponent(jXDatePicker2, + GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, + Short.MAX_VALUE))) + .addGroup(panelCartolaLayout.createSequentialGroup().addComponent(añadir).addGap(125, + 125, 125)) + .addGroup(panelCartolaLayout.createSequentialGroup().addComponent(modificar).addGap(105, + 105, 105))) + .addGap(62, 62, 62))); + panelCartolaLayout.setVerticalGroup(panelCartolaLayout.createParallelGroup(GroupLayout.Alignment.LEADING) + .addGroup(panelCartolaLayout.createSequentialGroup().addGroup(panelCartolaLayout + .createParallelGroup(GroupLayout.Alignment.TRAILING) + .addGroup(panelCartolaLayout.createSequentialGroup().addGap(40, 40, 40) + .addGroup(panelCartolaLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) + .addComponent(lFecha2).addComponent(jXDatePicker1, GroupLayout.PREFERRED_SIZE, + GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addGroup(panelCartolaLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) + .addComponent(lDocumento).addComponent(documento, GroupLayout.PREFERRED_SIZE, + GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addGroup(panelCartolaLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) + .addComponent(lFD).addComponent(fFD, GroupLayout.PREFERRED_SIZE, + GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addGroup(panelCartolaLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) + .addComponent(lDesc).addComponent(fDesc, GroupLayout.PREFERRED_SIZE, + GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addGroup(panelCartolaLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) + .addComponent(lIng).addComponent(fIng, GroupLayout.PREFERRED_SIZE, + GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addGroup(panelCartolaLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) + .addComponent(fEgr, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, + GroupLayout.PREFERRED_SIZE) + .addComponent(lEgr)) + .addGap(18, 18, 18).addComponent(añadir) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, 61, Short.MAX_VALUE) + .addGroup(panelCartolaLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) + .addComponent(lFecha4).addComponent(fNumber, GroupLayout.PREFERRED_SIZE, + GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addGroup(panelCartolaLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) + .addComponent(lFecha3).addComponent(jXDatePicker2, GroupLayout.PREFERRED_SIZE, + GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addGroup(panelCartolaLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) + .addComponent(lDocumento1).addComponent(documento1, GroupLayout.PREFERRED_SIZE, + GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addGroup(panelCartolaLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) + .addComponent(lFD1).addComponent(fFD1, GroupLayout.PREFERRED_SIZE, + GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addGroup(panelCartolaLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) + .addComponent(lDesc1).addComponent(fDesc1, GroupLayout.PREFERRED_SIZE, + GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addGroup(panelCartolaLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) + .addComponent(lIng1).addComponent(fIng1, GroupLayout.PREFERRED_SIZE, + GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addGroup(panelCartolaLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) + .addComponent(fEgr1, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, + GroupLayout.PREFERRED_SIZE) + .addComponent(lEgr1)) + .addGap(18, 18, 18).addComponent(modificar)) + .addGroup(GroupLayout.Alignment.LEADING, + panelCartolaLayout.createSequentialGroup().addGap(20, 20, 20) + .addComponent(jScrollPane1, GroupLayout.DEFAULT_SIZE, 478, Short.MAX_VALUE) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addComponent(eliminar))) + .addGap(29, 29, 29))); + panel.add(panelCartola, "card2"); + panelResumen.setBackground(new Color(21, 21, 21)); + panelResumen.setForeground(new Color(255, 255, 255)); + graph.setBackground(new Color(153, 153, 153)); + graph.setLayout(new CardLayout()); + graphMes.setBackground(new Color(0, 0, 0)); + GroupLayout graphMesLayout = new GroupLayout(graphMes); + graphMes.setLayout(graphMesLayout); + graphMesLayout.setHorizontalGroup( + graphMesLayout.createParallelGroup(GroupLayout.Alignment.LEADING).addGap(0, 719, Short.MAX_VALUE)); + graphMesLayout.setVerticalGroup( + graphMesLayout.createParallelGroup(GroupLayout.Alignment.LEADING).addGap(0, 449, Short.MAX_VALUE)); + graph.add(graphMes, "Mes"); + graphDoc.setBackground(new Color(255, 255, 255)); + GroupLayout graphDocLayout = new GroupLayout(graphDoc); + graphDoc.setLayout(graphDocLayout); + graphDocLayout.setHorizontalGroup( + graphDocLayout.createParallelGroup(GroupLayout.Alignment.LEADING).addGap(0, 719, Short.MAX_VALUE)); + graphDocLayout.setVerticalGroup( + graphDocLayout.createParallelGroup(GroupLayout.Alignment.LEADING).addGap(0, 449, Short.MAX_VALUE)); + graph.add(graphDoc, "Documento"); + tipoGraph.setFont(new Font("Eras Light ITC", 0, 14)); // NOI18N + tipoGraph.setModel(new DefaultComboBoxModel<>(new String[] { "Mes", "Documento" })); + tipoGraph.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent evt) + { + comboActionPerformed(evt); + } + }); + jLabel1.setFont(new Font("Eras Light ITC", 0, 14)); // NOI18N + jLabel1.setForeground(new Color(255, 255, 255)); + jLabel1.setText("Seleccionar Grafico:"); + lMes1.setFont(new Font("Eras Light ITC", 0, 14)); // NOI18N + lMes1.setForeground(new Color(255, 255, 255)); + lMes1.setText("Mes 1"); + lMes2.setFont(new Font("Eras Light ITC", 0, 14)); // NOI18N + lMes2.setForeground(new Color(255, 255, 255)); + lMes2.setText("Mes 2"); + lMes3.setFont(new Font("Eras Light ITC", 0, 14)); // NOI18N + lMes3.setForeground(new Color(255, 255, 255)); + lMes3.setText("Mes 3"); + lMes4.setFont(new Font("Eras Light ITC", 0, 14)); // NOI18N + lMes4.setForeground(new Color(255, 255, 255)); + lMes4.setText("Mes 4"); + lMes5.setFont(new Font("Eras Light ITC", 0, 14)); // NOI18N + lMes5.setForeground(new Color(255, 255, 255)); + lMes5.setText("Mes 5"); + lMes6.setFont(new Font("Eras Light ITC", 0, 14)); // NOI18N + lMes6.setForeground(new Color(255, 255, 255)); + lMes6.setText("Mes 6"); + iM1.setBackground(new Color(0, 204, 204)); + iM2.setBackground(new Color(0, 204, 204)); + iM3.setBackground(new Color(0, 204, 204)); + iM4.setBackground(new Color(0, 204, 204)); + iM5.setBackground(new Color(0, 204, 204)); + iM6.setBackground(new Color(0, 204, 204)); + lIng2.setFont(new Font("Eras Light ITC", 0, 14)); // NOI18N + lIng2.setForeground(new Color(255, 255, 255)); + lIng2.setText("Ingresos"); + lEgr2.setFont(new Font("Eras Light ITC", 0, 14)); // NOI18N + lEgr2.setForeground(new Color(255, 255, 255)); + lEgr2.setText("Egresos"); + eM2.setBackground(new Color(0, 204, 204)); + eM3.setBackground(new Color(0, 204, 204)); + eM4.setBackground(new Color(0, 204, 204)); + eM5.setBackground(new Color(0, 204, 204)); + eM6.setBackground(new Color(0, 204, 204)); + eM1.setBackground(new Color(0, 204, 204)); + sM2.setBackground(new Color(0, 204, 204)); + sM4.setBackground(new Color(0, 204, 204)); + sM3.setBackground(new Color(0, 204, 204)); + lSaldo2.setFont(new Font("Eras Light ITC", 0, 14)); // NOI18N + lSaldo2.setForeground(new Color(255, 255, 255)); + lSaldo2.setText("Saldo"); + sM6.setBackground(new Color(0, 204, 204)); + sM5.setBackground(new Color(0, 204, 204)); + sM1.setBackground(new Color(0, 204, 204)); + jLabel2.setFont(new Font("Eras Light ITC", 0, 36)); // NOI18N + jLabel2.setForeground(new Color(255, 255, 255)); + jLabel2.setText("Balance Mensual"); + GroupLayout panelResumenLayout = new GroupLayout(panelResumen); + panelResumen.setLayout(panelResumenLayout); + panelResumenLayout + .setHorizontalGroup( + panelResumenLayout.createParallelGroup(GroupLayout.Alignment.LEADING) + .addGroup(GroupLayout.Alignment.TRAILING, panelResumenLayout.createSequentialGroup() + .addContainerGap().addGroup(panelResumenLayout.createParallelGroup( + GroupLayout.Alignment.LEADING) + .addComponent(lIng2, + GroupLayout.Alignment.TRAILING) + .addGroup(GroupLayout.Alignment.TRAILING, + panelResumenLayout + .createParallelGroup(GroupLayout.Alignment.LEADING) + .addComponent(lSaldo2).addComponent(lEgr2))) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, 24, Short.MAX_VALUE) + .addGroup(panelResumenLayout.createParallelGroup(GroupLayout.Alignment.LEADING) + .addGroup(panelResumenLayout.createSequentialGroup().addGap(19, 19, 19) + .addComponent(lMes1).addGap(43, 43, 43).addComponent(lMes2) + .addGap(49, 49, 49).addComponent(lMes3).addGap(40, 40, 40) + .addComponent(lMes4).addGap(44, 44, 44).addComponent(lMes5) + .addGap(43, 43, 43).addComponent(lMes6)) + .addGroup(panelResumenLayout.createSequentialGroup() + .addGroup(panelResumenLayout + .createParallelGroup(GroupLayout.Alignment.LEADING) + .addComponent(sM1, GroupLayout.PREFERRED_SIZE, 63, + GroupLayout.PREFERRED_SIZE) + .addComponent(eM1, GroupLayout.PREFERRED_SIZE, 63, + GroupLayout.PREFERRED_SIZE) + .addComponent(iM1, GroupLayout.PREFERRED_SIZE, 63, + GroupLayout.PREFERRED_SIZE)) + .addGap(18, 18, 18) + .addGroup(panelResumenLayout + .createParallelGroup(GroupLayout.Alignment.LEADING) + .addComponent(sM2, GroupLayout.PREFERRED_SIZE, 63, + GroupLayout.PREFERRED_SIZE) + .addComponent(eM2, GroupLayout.PREFERRED_SIZE, 63, + GroupLayout.PREFERRED_SIZE) + .addComponent(iM2, GroupLayout.PREFERRED_SIZE, 63, + GroupLayout.PREFERRED_SIZE)) + .addGap(18, 18, 18) + .addGroup(panelResumenLayout + .createParallelGroup(GroupLayout.Alignment.LEADING) + .addComponent(sM3, GroupLayout.PREFERRED_SIZE, 63, + GroupLayout.PREFERRED_SIZE) + .addComponent(eM3, GroupLayout.PREFERRED_SIZE, 63, + GroupLayout.PREFERRED_SIZE) + .addComponent(iM3, GroupLayout.PREFERRED_SIZE, 63, + GroupLayout.PREFERRED_SIZE)) + .addGap(18, 18, 18) + .addGroup(panelResumenLayout + .createParallelGroup(GroupLayout.Alignment.LEADING) + .addGroup(panelResumenLayout.createSequentialGroup() + .addComponent(sM4, GroupLayout.PREFERRED_SIZE, + 63, GroupLayout.PREFERRED_SIZE) + .addGap(18, 18, 18) + .addComponent(sM5, GroupLayout.PREFERRED_SIZE, + 63, GroupLayout.PREFERRED_SIZE) + .addGap(18, 18, 18).addComponent(sM6, + GroupLayout.PREFERRED_SIZE, 63, + GroupLayout.PREFERRED_SIZE)) + .addGroup(panelResumenLayout.createSequentialGroup() + .addComponent(eM4, GroupLayout.PREFERRED_SIZE, + 63, GroupLayout.PREFERRED_SIZE) + .addGap(18, 18, 18) + .addComponent(eM5, GroupLayout.PREFERRED_SIZE, + 63, GroupLayout.PREFERRED_SIZE) + .addGap(18, 18, 18).addComponent(eM6, + GroupLayout.PREFERRED_SIZE, 63, + GroupLayout.PREFERRED_SIZE)) + .addGroup(panelResumenLayout.createSequentialGroup() + .addComponent(iM4, GroupLayout.PREFERRED_SIZE, + 63, GroupLayout.PREFERRED_SIZE) + .addGap(18, 18, 18) + .addComponent(iM5, GroupLayout.PREFERRED_SIZE, + 63, GroupLayout.PREFERRED_SIZE) + .addGap(18, 18, 18).addComponent(iM6, + GroupLayout.PREFERRED_SIZE, 63, + GroupLayout.PREFERRED_SIZE)))) + .addGroup(GroupLayout.Alignment.TRAILING, + panelResumenLayout.createSequentialGroup() + .addComponent(jLabel2, GroupLayout.PREFERRED_SIZE, 310, + GroupLayout.PREFERRED_SIZE) + .addGap(81, 81, 81))) + .addGap(35, 35, 35) + .addGroup(panelResumenLayout.createParallelGroup(GroupLayout.Alignment.LEADING) + .addGroup(panelResumenLayout.createSequentialGroup() + .addComponent(jLabel1).addGap(4, 4, 4).addComponent(tipoGraph, + GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, + GroupLayout.PREFERRED_SIZE)) + .addComponent(graph, GroupLayout.PREFERRED_SIZE, 719, + GroupLayout.PREFERRED_SIZE)) + .addGap(6, 6, 6))); + panelResumenLayout + .setVerticalGroup( + panelResumenLayout + .createParallelGroup( + GroupLayout.Alignment.LEADING) + .addGroup( + panelResumenLayout.createSequentialGroup().addGroup(panelResumenLayout + .createParallelGroup(GroupLayout.Alignment.LEADING).addComponent(graph, + GroupLayout.PREFERRED_SIZE, 449, + GroupLayout.PREFERRED_SIZE) + .addGroup(panelResumenLayout.createSequentialGroup().addGap(50, 50, 50) + .addComponent(jLabel2, GroupLayout.PREFERRED_SIZE, 52, + GroupLayout.PREFERRED_SIZE) + .addGap(40, 40, 40) + .addGroup(panelResumenLayout + .createParallelGroup(GroupLayout.Alignment.BASELINE) + .addComponent(lMes1).addComponent(lMes2) + .addComponent(lMes3).addComponent(lMes4) + .addComponent(lMes5).addComponent(lMes6)) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addGroup(panelResumenLayout + .createParallelGroup(GroupLayout.Alignment.LEADING) + .addGroup(panelResumenLayout.createSequentialGroup() + .addGroup(panelResumenLayout + .createParallelGroup( + GroupLayout.Alignment.BASELINE) + .addComponent(iM1, + GroupLayout.PREFERRED_SIZE, + GroupLayout.DEFAULT_SIZE, + GroupLayout.PREFERRED_SIZE) + .addComponent(iM2, + GroupLayout.PREFERRED_SIZE, + GroupLayout.DEFAULT_SIZE, + GroupLayout.PREFERRED_SIZE) + .addComponent(iM4, + GroupLayout.PREFERRED_SIZE, + GroupLayout.DEFAULT_SIZE, + GroupLayout.PREFERRED_SIZE) + .addComponent(iM5, + GroupLayout.PREFERRED_SIZE, + GroupLayout.DEFAULT_SIZE, + GroupLayout.PREFERRED_SIZE) + .addComponent(iM6, + GroupLayout.PREFERRED_SIZE, + GroupLayout.DEFAULT_SIZE, + GroupLayout.PREFERRED_SIZE)) + .addPreferredGap( + LayoutStyle.ComponentPlacement.RELATED) + .addGroup(panelResumenLayout + .createParallelGroup( + GroupLayout.Alignment.BASELINE) + .addComponent(eM1, + GroupLayout.PREFERRED_SIZE, + GroupLayout.DEFAULT_SIZE, + GroupLayout.PREFERRED_SIZE) + .addComponent(eM2, + GroupLayout.PREFERRED_SIZE, + GroupLayout.DEFAULT_SIZE, + GroupLayout.PREFERRED_SIZE) + .addComponent(eM4, + GroupLayout.PREFERRED_SIZE, + GroupLayout.DEFAULT_SIZE, + GroupLayout.PREFERRED_SIZE) + .addComponent(eM5, + GroupLayout.PREFERRED_SIZE, + GroupLayout.DEFAULT_SIZE, + GroupLayout.PREFERRED_SIZE) + .addComponent(eM6, + GroupLayout.PREFERRED_SIZE, + GroupLayout.DEFAULT_SIZE, + GroupLayout.PREFERRED_SIZE)) + .addPreferredGap( + LayoutStyle.ComponentPlacement.RELATED) + .addGroup(panelResumenLayout + .createParallelGroup( + GroupLayout.Alignment.BASELINE) + .addComponent(sM1, + GroupLayout.PREFERRED_SIZE, + GroupLayout.DEFAULT_SIZE, + GroupLayout.PREFERRED_SIZE) + .addComponent(sM2, + GroupLayout.PREFERRED_SIZE, + GroupLayout.DEFAULT_SIZE, + GroupLayout.PREFERRED_SIZE) + .addComponent(sM4, + GroupLayout.PREFERRED_SIZE, + GroupLayout.DEFAULT_SIZE, + GroupLayout.PREFERRED_SIZE) + .addComponent(sM5, + GroupLayout.PREFERRED_SIZE, + GroupLayout.DEFAULT_SIZE, + GroupLayout.PREFERRED_SIZE) + .addComponent(sM6, + GroupLayout.PREFERRED_SIZE, + GroupLayout.DEFAULT_SIZE, + GroupLayout.PREFERRED_SIZE))) + .addGroup(panelResumenLayout.createSequentialGroup() + .addComponent(lIng2) + .addPreferredGap( + LayoutStyle.ComponentPlacement.RELATED) + .addGroup(panelResumenLayout + .createParallelGroup( + GroupLayout.Alignment.LEADING) + .addGroup(panelResumenLayout + .createSequentialGroup() + .addGap(26, 26, 26) + .addComponent(lSaldo2)) + .addComponent(lEgr2))) + .addGroup(panelResumenLayout.createSequentialGroup() + .addComponent(iM3, GroupLayout.PREFERRED_SIZE, + GroupLayout.DEFAULT_SIZE, + GroupLayout.PREFERRED_SIZE) + .addPreferredGap( + LayoutStyle.ComponentPlacement.RELATED) + .addComponent(eM3, GroupLayout.PREFERRED_SIZE, + GroupLayout.DEFAULT_SIZE, + GroupLayout.PREFERRED_SIZE) + .addPreferredGap( + LayoutStyle.ComponentPlacement.RELATED) + .addComponent(sM3, GroupLayout.PREFERRED_SIZE, + GroupLayout.DEFAULT_SIZE, + GroupLayout.PREFERRED_SIZE))))) + .addGap(43, 43, 43) + .addGroup(panelResumenLayout + .createParallelGroup(GroupLayout.Alignment.BASELINE) + .addComponent(tipoGraph, GroupLayout.PREFERRED_SIZE, + GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel1)) + .addGap(0, 41, Short.MAX_VALUE))); + panel.add(panelResumen, "card3"); + panelPrincipal.setBackground(new Color(21, 21, 21)); + pam.setFont(new Font("LM Roman Caps 10", 1, 60)); // NOI18N + pam.setIcon(new ImageIcon(getClass().getResource("P.A.M.v2/logo.png"))); // NOI18N + cartola.setFont(new Font("Eras Light ITC", 0, 14)); // NOI18N + cartola.setIcon(new ImageIcon(getClass().getResource("P.A.M.v2/catola.png"))); // NOI18N + cartola.setText("Cartola"); + cartola.setMaximumSize(new Dimension(50, 17)); + cartola.setMinimumSize(new Dimension(50, 17)); + cartola.setPreferredSize(new Dimension(50, 17)); + cartola.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent evt) + { + cartolaActionPerformed(evt); + } + }); + resumen.setFont(new Font("Eras Light ITC", 0, 14)); // NOI18N + resumen.setIcon(new ImageIcon(getClass().getResource("P.A.M.v2/resumen.png"))); // NOI18N + resumen.setText("Resumen"); + resumen.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent evt) + { + resumenActionPerformed(evt); + } + }); + lUsuario.setFont(new Font("Eras Light ITC", 0, 14)); // NOI18N + lUsuario.setForeground(new Color(0, 204, 204)); + lUsuario.setText("Usuario"); + fUsuario.setEditable(false); + fUsuario.setFocusable(false); + fUsuario.setText(usuario); + fFecha1.setEditable(false); + fFecha1.setFocusable(false); + Calendar c = Calendar.getInstance(); + fFecha1.setText(String.valueOf(c.get(Calendar.DATE)) + "/" + String.valueOf(c.get(Calendar.MONTH)) + "/" + + String.valueOf(c.get(Calendar.YEAR))); + lFecha1.setFont(new Font("Eras Light ITC", 0, 14)); // NOI18N + lFecha1.setForeground(new Color(0, 204, 204)); + lFecha1.setText("Fecha"); + GroupLayout panelPrincipalLayout = new GroupLayout(panelPrincipal); + panelPrincipal.setLayout(panelPrincipalLayout); + panelPrincipalLayout.setHorizontalGroup(panelPrincipalLayout.createParallelGroup(GroupLayout.Alignment.LEADING) + .addGroup(panelPrincipalLayout.createSequentialGroup().addGap(21, 21, 21).addComponent(pam) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, GroupLayout.DEFAULT_SIZE, + Short.MAX_VALUE) + .addComponent(cartola, GroupLayout.PREFERRED_SIZE, 107, GroupLayout.PREFERRED_SIZE) + .addGap(18, 18, 18) + .addComponent(resumen, GroupLayout.PREFERRED_SIZE, 107, GroupLayout.PREFERRED_SIZE) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, GroupLayout.DEFAULT_SIZE, + Short.MAX_VALUE) + .addGroup(panelPrincipalLayout.createParallelGroup(GroupLayout.Alignment.TRAILING, false) + .addComponent(lUsuario).addComponent(lFecha1)) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addGroup(panelPrincipalLayout.createParallelGroup(GroupLayout.Alignment.LEADING, false) + .addComponent(fFecha1).addComponent(fUsuario, GroupLayout.PREFERRED_SIZE, 123, + GroupLayout.PREFERRED_SIZE)) + .addGap(23, 23, 23))); + panelPrincipalLayout.setVerticalGroup(panelPrincipalLayout.createParallelGroup(GroupLayout.Alignment.LEADING) + .addGroup(GroupLayout.Alignment.TRAILING, panelPrincipalLayout.createSequentialGroup() + .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE).addGroup(panelPrincipalLayout + .createParallelGroup(GroupLayout.Alignment.LEADING).addComponent( + pam) + .addGroup(panelPrincipalLayout.createSequentialGroup().addGap(7, 7, 7) + .addGroup(panelPrincipalLayout + .createParallelGroup(GroupLayout.Alignment.TRAILING) + .addGroup(panelPrincipalLayout.createSequentialGroup() + .addGroup(panelPrincipalLayout + .createParallelGroup(GroupLayout.Alignment.BASELINE) + .addComponent(lUsuario).addComponent(fUsuario, + GroupLayout.PREFERRED_SIZE, + GroupLayout.DEFAULT_SIZE, + GroupLayout.PREFERRED_SIZE)) + .addGap(6, 6, 6) + .addGroup(panelPrincipalLayout + .createParallelGroup(GroupLayout.Alignment.BASELINE) + .addComponent(lFecha1).addComponent(fFecha1, + GroupLayout.PREFERRED_SIZE, + GroupLayout.DEFAULT_SIZE, + GroupLayout.PREFERRED_SIZE))) + .addGroup(panelPrincipalLayout + .createParallelGroup( + GroupLayout.Alignment.BASELINE) + .addComponent(cartola, GroupLayout.PREFERRED_SIZE, 27, + GroupLayout.PREFERRED_SIZE) + .addComponent(resumen, GroupLayout.PREFERRED_SIZE, 27, + GroupLayout.PREFERRED_SIZE))))))); + GroupLayout layout = new GroupLayout(principal.getContentPane()); + principal.getContentPane().setLayout(layout); + layout.setHorizontalGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup().addGap(0, 0, 0) + .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING) + .addComponent(panelPrincipal, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, + Short.MAX_VALUE) + .addComponent(panel, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, + Short.MAX_VALUE)))); + layout.setVerticalGroup( + layout.createParallelGroup(GroupLayout.Alignment.LEADING).addGroup(GroupLayout.Alignment.TRAILING, + layout.createSequentialGroup() + .addComponent(panelPrincipal, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, + GroupLayout.PREFERRED_SIZE) + .addGap(0, 0, 0).addComponent(panel, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, + Short.MAX_VALUE))); + principal.pack(); + } + private void resumenActionPerformed(ActionEvent evt) + { + CardLayout cardLayout = (CardLayout) panel.getLayout(); + cardLayout.show(panel, "card3"); + } + private void cartolaActionPerformed(ActionEvent evt) + { + CardLayout cardLayout = (CardLayout) panel.getLayout(); + cardLayout.show(panel, "card2"); + } + private void modificarActionPerformed(ActionEvent evt) + { + modificarFila(); + } + private void añadirActionPerformed(ActionEvent evt) + { + añadirFila(); + } + private void eliminarActionPerformed(ActionEvent evt) + { + ControlPrincipal control = new ControlPrincipal(usuario); + control.eliminarFila((String) tabla.getValueAt(tabla.getSelectedRow(), 0)); + iniciarTabla(); + } + private void comboActionPerformed(ActionEvent evt) + { + CardLayout cardLayout = (CardLayout) graph.getLayout(); + cardLayout.show(graph, (String)tipoGraph.getSelectedItem()); + crearGraph(); + } + private void añadirFila() + { + ControlPrincipal control = new ControlPrincipal(usuario); + SimpleDateFormat formateador = new SimpleDateFormat("dd/MM/yyyy"); + String fecha = formateador.format(jXDatePicker1.getDate()); + jXDatePicker1.setDate(new Date()); + String documento = this.documento.getSelectedItem().toString(); + String fD = fFD.getText(); + fFD.setText(""); + String desc = fDesc.getText(); + fDesc.setText(""); + String ing = fIng.getText(); + fIng.setText("0"); + String egr = fEgr.getText(); + fEgr.setText("0"); + control.añadir(fecha, documento, fD, desc, ing, egr); + Object[] fila = control.getLastRow(); + DefaultTableModel modelo = (DefaultTableModel) tabla.getModel(); + modelo.addRow(fila); + tabla.setModel(modelo); + } + private void iniciarTabla() + { + ControlPrincipal control = new ControlPrincipal(usuario); + if (control.isFiled()) + { + control.actSaldos(); + DefaultTableModel modelo = (DefaultTableModel) tabla.getModel(); + modelo.setRowCount(0); + tabla.setModel(modelo); + for (int x = 0; x < control.getRowCount(); x++) + { + Object[] fila = control.getRow(x); + modelo.addRow(fila); + } + tabla.setModel(modelo); + } + } + private void modificarFila() + { + SimpleDateFormat formateador = new SimpleDateFormat("dd/MM/yyyy"); + String number = fNumber.getText(); + String fecha = formateador.format(jXDatePicker2.getDate()); + String documento = this.documento1.getSelectedItem().toString(); + String fD = fFD1.getText(); + String desc = fDesc1.getText(); + String ing = fIng1.getText(); + String egr = fEgr1.getText(); + ControlPrincipal control = new ControlPrincipal(usuario); + control.modificarFila(number, fecha, documento, fD, desc, ing, egr); + iniciarTabla(); + } + private void crearGraph() + { + ControlPrincipal control = new ControlPrincipal(usuario); + control.prueba(); + } + public static void main(String[] args) + { + Principal ventana = new Principal("Prueba3"); + ventana.principal.setVisible(true); + } +}