Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Tutorial Netbeans
Tutorial Netbeans
CAManager#set4ookDnd6eel(CAManager#getS"stem4ookDnd6eelClassName())&
(
catc2 ()*ception e)
e#printStack5race()&
(
(
IC!A EJE,'?8-
,. #ise,e una aplicaci-n con dos .rames/ uno de bienenida y otro de despedida actiados a
tras de bot-nes como se muestra a continuaci-n 0
%uente: http:11+avax<H,,.blogspot.com1;<<U1,<1clase3+#rame.html
Java A des.a*ilitar ma)imiMar en 3rame
public Login>? Y
init!omponents>?P
set/ize>D<<,B<<?P
this.set7esizable>#alse?P11 esto hara que el #rame no se pueda maximizar
Z
%uente: http:11EEE.laEebdelprogramador.com1#oros1&ava1UB<<UH3deshabilitarNmaximizarNenN#rame.html
J3rame sin el *oton de cerrar, ma)imiMar y minimiMar
0acil y sencillo
set4ndecorated>true?P
get7oot-ane>?.setGindoEDecoration/tyle>&7oot-ane.)@)$?P
se le pone al #rame y listo
0uente: http:11s2uarch.blogspot.com1;<,,1<B1+#rame3sin3el3botn3de3cerrar3maximizar.html
?imitar caracteres en un JTe)t3ield
-or diversas razones tenemos la necesidad de evitar que un usuario ingrese ya sea n'meros, letras,
ciertos caracteres especiales o m(s de un n'mero m(ximo de caracteres.
-ara lograr estos ob+etivos voy a mostrar algunos de e+emplos de clases que implementan algun tipo de
limitacin en los datos ingresados.
-rimer e+emplo: Limitar el +"ext0ield a solo letras y espacios.
)ombre de la clase: Limitador/oloLetras.+ava
import java*#s/ing#te*t#DttributeSet&
import java*#s/ing#te*t#%ad4ocation)*ception&
import java*#s/ing#te*t#Plain;ocument&
/**
* @author Hernn
*/
public class 4imitadorSolo4etras extends Plain;ocument
public void insertString(int arg8< String arg1< DttributeSet arg!) throws
ad4ocation)*ception
for (int i,8&iVarg1#lengt2()&iPP)
if (EC2aracter#is4etter(arg1#c2arDt(i)) SS E
C2aracter#isSpaceC2ar(arg1#c2arDt(i)))
return&
super#insertString(arg8< arg1< arg!)&
(
(
:odo de uso: supongamos que tenemos un &"ext0ield llamado txt)ombres, entonces lo que tenemos
que hacer es:
t*tNombres#set;ocument(new 4imitadorSolo4etras())&
/egundo $+emplo: Limitar el +"ext0ield a solo n'meros.
)ombre de la clase: Limitador/olo)umeros.+ava
import java*#s/ing#te*t#DttributeSet&
import java*#s/ing#te*t#%ad4ocation)*ception&
import java*#s/ing#te*t#Plain;ocument&
/**
* @author Hernn
*/
public class 4imitadorSolo4etras extends Plain;ocument
public void insertString(int arg8< String arg1< DttributeSet arg!) throws
ad4ocation)*ception
for (int i,8&iVarg1#lengt2()&iPP)
if (EC2aracter#is4etter(arg1#c2arDt(i)) SS
C2aracter#isSpaceC2ar(arg1#c2arDt(i)))
return&
super#insertString(arg8< arg1< arg!)&
(
(
:odo de uso: supongamos que tenemos un &"ext0ield llamado txt)ombres, entonces lo que tenemos
que hacer es:
t*t;NA#set;ocument(new 4imitadorSoloNumeros())&
"ercer $+emplo: Limitar el +"ext0ield a solo letras y espacios y adem(s limitar la cantidad de caracteres
ingresados.
)ombre de la clase: Limitador/oloLetras)ro:ax.+ava
import java*#s/ing#G5e*t6ield&
import java*#s/ing#te*t#DttributeSet&
import java*#s/ing#te*t#%ad4ocation)*ception&
import java*#s/ing#te*t#Plain;ocument&
/**
* @author Hernn
*/
public class 4imitadorSolo4etrasNroMa* extends Plain;ocument
private G5e*t6ield miG5e*t6ield&
private int nroMa*Caracteres&
public 4imitadorSolo4etrasNroMa*(G5e*t6ield mijte*t< int nroMa*Caract)
miG5e*t6ield,mijte*t&
nroMa*Caracteres,nroMa*Caract&
(
public void insertString(int arg8< String arg1< DttributeSet arg!) throws
%ad4ocation)*ception
for (int i,8&iVarg1#lengt2()&iPP)
if ((EC2aracter#is4etter(arg1#c2arDt(i)) SS E
C2aracter#isSpaceC2ar(arg1#c2arDt(i)))WW(miG5e*t6ield#get5e*t()#lengt2()
Parg1#lengt2())XnroMa*Caracteres)
return&
super#insertString(arg8< arg1< arg!)&
(
(
:odo de uso: supongamos que tenemos un &"ext0ield llamado txtApellidos, entonces lo que tenemos
que hacer es:
t*tDpellidos#set;ocument(new 4imitadorSolo4etrasNroMa*(t*tDpellidos<'8))&
!uarto $+emplo >a pedido de trancelex?: Limitar el +"ext0ield a solo letras y espacios, y adem(s cuando
se llegue al n'mero maximo pasar al prximo campo.
)ombre de la clase: Limitador/oloLetras)ro:axL;.+ava
import java*#s/ing#G5e*t6ield&
import java*#s/ing#te*t#DttributeSet&
import java*#s/ing#te*t#%ad4ocation)*ception&
import java*#s/ing#te*t#Plain;ocument&
/**
* @author Hernn
*/
public class 4imitadorSolo4etrasNroMa*B! extends Plain;ocument
private G5e*t6ield miG5e*t6ield&
private int nroMa*Caracteres&
public 4imitadorSolo4etrasNroMa*B!(G5e*t6ield mijte*t< int nroMa*Caract)
miG5e*t6ield,mijte*t&
nroMa*Caracteres,nroMa*Caract&
(
public void insertString(int arg8< String arg1< DttributeSet arg!) throws
ad4ocation)*ception
for (int i,8&iVarg1#lengt2()&iPP)
if ((miG5e*t6ield#get5e*t()#lengt2()Parg1#lengt2())XnroMa*Caracteres)
miG5e*t6ield#trans0er6ocus()&
return&
(else if (EC2aracter#is4etter(arg1#c2arDt(i)) SS E
C2aracter#isSpaceC2ar(arg1#c2arDt(i)))
return&
(
super#insertString(arg8< arg1< arg!)&
(
(
:odo de uso: supongamos que tenemos un &"ext0ield llamado txtApellidos, entonces lo que tenemos
que hacer es:
t*tDpellidos#set;ocument(new 4imitadorSolo4etrasNroMa*B!(t*tDpellidos<'8))&
%uente: http:11EEE.divideandconquer.com.ar1;<<Q1,<1limitar3caracteres3en3un3+text#ield1
I,aneras de conectar net*eans con postgre->?J
La unica manera que conozco de conectar netbeans>+ava? con postgre/Ql es de los siguientes modos:
,odo #
public static java#s:l#Connection cone*ion&
[###]
C=4?bd , $jdbc:postgres:l:--1Y!#19Z#8#!+!:+7'!-obras$&
usuario , $user$&
contrasinal , $pass/ord$&
Class#0orName($org#postgres:l#;river$)#ne/Anstance()&
Properties props , ne/ Properties()&
props#setPropert"($user$< usuario)&
props#setPropert"($pass/ord$< contrasinal)&
--! opciInes: :ue vienen siendo lo mismo
1# cone*ion , ;riverManager#getConnection(C=4?bd< props)&
!# cone*ion , ;riverManager#getConnection(C=4?bd< usuario< contrasinal)&
,odo 9
public static java#s:l#Connection cone*ion&
[###]
i0 (pool ,, null)
pool , ne/ Gdbc'Pooling;ataSource()&
pool#setPortNumber(+7'!)&
pool#setCser($usuario$)&
pool#setPass/ord($pass/ord$)&
pool#setMa*Connections(188)&
pool#setServerName($1Y!#19!#8#!+!$)&
pool#set;atabaseName($obras$)&
(
cone*ion , pool#getConnection()&
pool#set4ogHriter(ne/ java#io#PrintHriter(S"stem#out))&
--Commit a true
cone*ion#setDutoCommit(true)&
%uente: http:11EEE.#orosdelEeb.com1#D=1maneras3conectar3netbeans3con3postgresql3Q;=BD<1
Cam*iando el icono de los J%rame
$sta es una #orma r(pida y sencilla de cambiar el icono de los &0rame que viene por de#ecto
desarrollando aplicaciones &ava, con algo de cdigo. /olo hay que tener en cuenta la ruta del archivo de
imagen.
this.set5con5mage >neE 5mage5con>get!lass>?.get7esource>WrutaNimagen1imagen.gi#W??.get5mage>??P
$n mi caso yo cree un paquete el cual contiene mis imagenes que deseo tener en mi aplicacion,
supongamos que el paquete se llame Nmipa1uete!imagenesO, entonces la ruta seria asi:
this.set5con5mage >neE 5mage5con>get!lass>?.get7esource>W1mipaquete1imagenes1imagen.gi#W??.get5mage>??P
$spero les sirva O?.
%uente: http:11nachxs.blogsome.com1;<<H1,<1;=1cambiando3el3icono3de3los3+#rame1
Java P (@TD-&ing P Cam*iar el icono de una ventana
Al traba+ar con ventanas en &ava, notaremos que estas llevan por de#ecto el icono con el s6mbolo de
&ava el cual es una taza de ca#%.
)o es #ea la taza de ca#%, pero en un &0rame podemos cambiarlo a nuestro gusto, y aunque no podemos
hacer lo mismo en un &Dialog este heredara el icono de su ventana padre. 5ncluso podr6amos cambiar el
icono que usa &ava por de#ecto para sus aplicaciones, aunque claro que seria algo dr(stico.
Cam*iando el icono en nuestro J%rame
-ara personalizar nuestro icono en un &0rame utilizaremos el m%todo void set5con5mage>5mage image?,
veamos un simple e+emplo:
package programa&
import java#a/t#Amage&
import java*#s/ing#AmageAcon&
import java*#s/ing#G6rame&
class Hindo/;emo e*tends G6rame
public Hindo/;emo()
super($Bentana personaliMada$)&
set;e0aultClose@peration(G6rame#)KA5?@N?C4@S))&
Amage icon , ne/
AmageAcon(getClass()#get=esource($-programa-imagenes-love#png$))#getAmage()&
setAconAmage(icon)&
setSiMe('+8< '+8)&
set4ocation=elative5o(null)&
setBisible(true)&
(
public static void main(String[] args)
ne/ Hindo/;emo()&
(
(
!omo se puede ver tengo una clase en el paquete programa y tengo una imagen llamada loe con
extensin 1234 en el paquete programa.imagenes.
$n el cdigo que hemos visto prestemos atencin sobre:
Amage icon , ne/
AmageAcon(getClass()#get=esource($-programa-imagenes-love#png$))#getAmage()&
setAconAmage(icon)&
Al m%todo void set5con5mage>? hay que pasarle nuestra imagen como argumento, utilizamos neE
5mage5con>47L location?.get5mage>? donde el argumento location lo obtenemos a trav%s del m%todo
get!lass>?.get7esource>/tring name? que nos devuelve un 47L absoluto del recurso que especi#icamos
como /tring. Los tipos de archivo que podemos utilizar son R50, &-$R y-)R >este 'ltimo desde &;/$
,.B? pero no pueden ser 5!@ o .:-. $n caso de utilizar un tipo de archivo no valido el icono
predeterminado simplemente no cambiara y seguiremos viendo la taza de ca#%, y en caso de que el
archivo no se encontrase el m%todo retornar6a null y la &L: nos arro+ar6a una )ull-ointer$xception.
"anto &Dialogs como &5nternal0rames que tengan este &0rame como padre llevar6an el mismo icono.
Leamos como queda ahora nuestra ventana:
como alternativa al cdigo anterior tenemos otra #orma muy similar de lograr el mismo resultado:
5mage icon ,
"ool2it.getDe#ault"ool2it>?.get5mage>get!lass>?.get7esource>I1programa1imagenes1love.pngI??P
set5con5mage>icon?P
Desde un editor visual
"raba+ando con editores visuales las cosas pueden ser di#erentes, sin duda el caso mas especial es el
editor visual de NetBeans que veremos a continuacin.
NetBeans P
$n el caso que estemos traba+ando con el editor visual de )et.eans >:atisse? no podemos modi#icar
manualmente el cdigo generado, as6 que seleccionamos el &0rame en la pesta*a V5nspectorW y luego en
la pesta*a de propiedades >V&0rame c -ropertiesV? buscamos la propiedad Vicon5mageW seleccionando
donde se ve a continuacin:
/e nos abrir( una ventana con nuevas opcines en la cual seleccionamos V!ustom !odeW y como
veremos tenemos un campo de texto donde podremos escribir nuestro cdigo para aplicar el m%todo
void set5mage5con>?. /iguiendo con mi e+emplo donde tengo el archivo de imagen loe1png en el
paquete programa.imagenes el cdigo a introducir ser6a:
ne/ AmageAcon(getClass()#get=esource($-programa-imagenes-love#png$))#getAmage()
Al presionar V@2W el editor visual introducir( nuestro cdigo donde debe.
%uente: http:11dar2byteblog.Eordpress.com1;<,,1<,1,D1+ava3aEtsEing3cambiar3el3icono3de3una3ventana1
8*tener tamaQoDdimensi+n de la pantalla en Java
-ara obtener el Itama*oI de la pantalla, asi como otros atributos como la IresolucionI en +ava, se hace
uso de la clase abstracta "ool2it.$sta clase nos otorga los metodos get-creen-iMe/0 que retona las
dimensiones de pantalla en pixeles y get-creen5esolution/0, que retorna un valor en --- >puntos por
pulgada?.
import java#a/t#;imension&
import java#a/t#5oolkit&
-..
. F/eb 2ttp:--jcNmouse#blogspot#com-
. Faut2or Mouse
.-
public class Main
public static void main(String[] args)
-- 5@;@ code application logic 2ere
--@btiene el tamaLo de la pantalla
;imension d , 5oolkit#get;e0ault5oolkit()#getScreenSiMe()&
--obtiene la resolucion de la pantalla en PPP (Puntos por pulgada)
int sr , 5oolkit#get;e0ault5oolkit()#getScreen=esolution()&
--muestra la in0ormacion por la consola de java
S"stem#out#println($5amaLo de pantalla: $ P d#/idt2 P $*$ P d#2eig2t P $<
de0iniciIn: $ P sr P $ ppp$)&
(
(
%uente: http:11+c3mouse.blogspot.com1;<,<1<;1obtener3tamanodimension3de3la3pantalla.html
Convertir n$meros a letras en java /Tipo %actura, c.e1ue, reci*o0
!uando se realizan traba+os donde se necesita mostrar al cliente un determinado monto de dinero, tipo
#actura, recibo, cheque, etc, el cliente desea ver el monto en numeral asi como en literal.
-or e+emplo:
=""=,<E R oc.ocientos setenta y siete mil oc.ocientos sesenta y seis <ED#EE Bolivianos
-ues bien, la siguiente clase a la que llame NumeroGaG?etra!java realiza +ustamente esa operacion,
esta extracomentada y trate de hacerla lo mas entendible posible.
La logica que se utliza es la siguiente:
La clase recibe un numero e+. #9:;<"=S,<E valida este numero, si el numero no es valido devuelve
NB??
/i el numero es valido segun sea este unidad, decena, centena, mil o millon, va clasi#icando el numero
y llama a sus procedimientos correspondientes, estas #unciones, son utilizadas en cascada, osea: nuestro
numero de e+emplo es #9:;<"=S,<E, entonces separa en #9:;<"=S y <E, siendo =< nuestra parte
decimal.
$l numero entero, #9:;<"=S es clasi#icado O es millon, entonces llama a la #uncion get:illones, esta
#uncion a la vez divide el numero en miles y millones #9:;<"=S O #9: ;<"=U donde ,;B
corresponde a millones y D=9HQU a miles entonces la misma #uncion llama a las #unciones get,iles,
getCentenas, getBnidades, segun corresponda, al igual que la #uncion get:iles, hace uso de
get!entenas, getDecenas get4nidades, lo mismo get!entenas, hace uso de getDececas, get4nidades.
$spero se entienda :?
import java#util#rege*#Pattern&
-..
. F/eb 2ttp:--jcNmouse#blogspot#com-
. Faut2or Mouse
.-
public class Numero?a?4etra
private 0inal String[] CNA;D;)S , $$< $un $< $dos $< $tres $< $cuatro $< $cinco
$< $seis $< $siete $< $oc2o $< $nueve $(&
private 0inal String[] ;)C)NDS , $dieM $< $once $< $doce $< $trece $< $catorce
$< $:uince $< $dieciseis $<
$diecisiete $< $diecioc2o $< $diecinueve$< $veinte $< $treinta $< $cuarenta $<
$cincuenta $< $sesenta $< $setenta $< $oc2enta $< $noventa $(&
private 0inal String[] C)N5)NDS , $$< $ciento $< $doscientos $< $trecientos $<
$cuatrocientos $< $:uinientos $< $seiscientos $<
$setecientos $< $oc2ocientos $< $novecientos $(&
public Numero?a?4etra()
(
public String Convertir(String numero< boolean ma"usculas)
String literal , $$&
String parte?decimal&
--si el numero utiliMa (#) en lugar de (<) NX se reemplaMa
numero , numero#replace($#$< $<$)&
--si el numero no tiene parte decimal< se le agrega <88
i0(numero#inde*@0($<$),,N1)
numero , numero P $<88$&
(
--se valida 0ormato de entrada NX 8<88 " YYY YYY YYY<88
i0 (Pattern#matc2es($[[d1<Y(<[[d1<!($< numero))
--se divide el numero 8888888<88 NX entero " decimal
String Num[] , numero#split($<$)&
--de da 0ormato al numero decimal
parte?decimal , Num[1] P $-188 %olivianos#$&
--se convierte el numero a literal
i0 (Anteger#parseAnt(Num[8]) ,, 8) --si el valor es cero
literal , $cero $&
(else i0 (Anteger#parseAnt(Num[8]) X YYYYYY) --si es millon
literal , getMillones(Num[8])&
(else i0 (Anteger#parseAnt(Num[8]) X YYY) --si es miles
literal , getMiles(Num[8])&
(else i0 (Anteger#parseAnt(Num[8]) X YY) --si es centena
literal , getCentenas(Num[8])&
(else i0 (Anteger#parseAnt(Num[8]) X Y) --si es decena
literal , get;ecenas(Num[8])&
(else --sino unidades NX Y
literal , getCnidades(Num[8])&
(
--devuelve el resultado en ma"usculas o minusculas
i0 (ma"usculas)
return (literal P parte?decimal)#toCpperCase()&
(else
return (literal P parte?decimal)&
(
(else --error< no se puede convertir
return literal , null&
(
(
-. 0unciones para convertir los numeros a literales .-
private String getCnidades(String numero) -- 1 N Y
--si tuviera algun 8 antes se lo :uita NX 8Y , Y o 88Y,Y
String num , numero#substring(numero#lengt2() N 1)&
return CNA;D;)S[Anteger#parseAnt(num)]&
(
private String get;ecenas(String num) -- YY
int n , Anteger#parseAnt(num)&
i0 (n V 18) --para casos como NX 81 N 8Y
return getCnidades(num)&
(else i0 (n X 1Y) --para !8###YY
String u , getCnidades(num)&
i0 (u#e:uals($$)) --para !8<'8<78<+8<98<\8<Z8<Y8
return ;)C)NDS[Anteger#parseAnt(num#substring(8< 1)) P Z]&
(else
return ;)C)NDS[Anteger#parseAnt(num#substring(8< 1)) P Z] P $" $ P u&
(
(else --numeros entre 11 " 1Y
return ;)C)NDS[n N 18]&
(
(
private String getCentenas(String num) -- YYY o 8YY
i0( Anteger#parseAnt(num)XYY )--es centena
i0 (Anteger#parseAnt(num) ,, 188) --caso especial
return $ cien $&
(else
return C)N5)NDS[Anteger#parseAnt(num#substring(8< 1))] P
get;ecenas(num#substring(1))&
(
(else--por )j# 8YY
--se :uita el 8 antes de convertir a decenas
return get;ecenas(Anteger#parseAnt(num)P$$)&
(
(
private String getMiles(String numero) -- YYY YYY
--obtiene las centenas
String c , numero#substring(numero#lengt2() N ')&
--obtiene los miles
String m , numero#substring(8< numero#lengt2() N ')&
String n,$$&
--se comprueba :ue miles tenga valor entero
i0 (Anteger#parseAnt(m) X 8)
n , getCentenas(m)&
return n P $mil $ P getCentenas(c)&
(else
return $$ P getCentenas(c)&
(
(
private String getMillones(String numero) --888 888 888
--se obtiene los miles
String miles , numero#substring(numero#lengt2() N 9)&
--se obtiene los millones
String millon , numero#substring(8< numero#lengt2() N 9)&
String n , $$&
i0(millon#lengt2()X1)
n , getCentenas(millon) P $millones $&
(else
n , getCnidades(millon) P $millon $&
(
return n P getMiles(miles)&
(
(
$sta clase, recibe un numero de <,<< a UUUUUUUUU.<< en #ormato /tring, el separador decimal puede ser
un punto >.? o una coma >,?, ademas tiene un parametro booleano ImayusculasI el cual sea verdadero
>true? o #also >#alse?, retorna el resultado en mayusculas o minusculas, esta clase no acepta numeros
negativos ni tampoco numero mayores o iguales a mil millones, aunque claro trate de escribir esta clase
para que sea #acilmente comprensible y asi pueda ser ampliado o modi#icado segun sus necesidades.
La #orma de llamara a esta clase es:
Numero?a?4etra Num4etra , ne/ Numero?a?4etra()&
String numero , $!8887#\8$&
S"stem#out#println( numero P $ literal , $ P Num4etra#Convertir(numero<true))&
y probando para un rango mayor de numeros tenemos como resultado:
'+!Z!!<+8 literal , 5=)CA)N5@S CANCC)N5D > ;@S MA4 @CJ@CA)N5@S B)AN5) > ;@S +8-188
%@4ABADN@S#
'\8<+8 literal , trecientos setenta +8-188 %olivianos#
\7ZZ'<+8 literal , S)5)N5D > CCD5=@ MA4 @CJ@CA)N5@S @CJ)N5D > 5=)S +8-188
%@4ABADN@S#
'+7Z81<+8 literal , trecientos cincuenta " cuatro mil oc2ocientos un +8-188
%olivianos#
1!<+8 literal , ;@C) +8-188 %@4ABADN@S#
+11Z1!898<+8 literal , 3CANA)N5@S @NC) MA44@N)S @CJ@CA)N5@S ;@C) MA4 S)S)N5D +8-188
%@4ABADN@S#
!Z+'97<+8 literal , doscientos oc2enta " cinco mil trecientos sesenta " cuatro
+8-188 %olivianos#
Y\<+8 literal , N@B)N5D > SA)5) +8-188 %@4ABADN@S#
ZZ!<+8 literal , @CJ@CA)N5@S @CJ)N5D > ;@S +8-188 %@4ABADN@S#
!Z<+8 literal , B)AN5) > @CJ@ +8-188 %@4ABADN@S#
'Y+'9!Z9Y<+8 literal , 5=)CA)N5@S N@B)N5D > CANC@ MA44@N)S 5=)CA)N5@S S)S)N5D > ;@S
MA4 @CJ@CA)N5@S S)S)N5D > NC)B) +8-188 %@4ABADN@S#
9Z\911<+8 literal , S)ASCA)N5@S @CJ)N5D > SA)5) MA4 S)ASCA)N5@S @NC) +8-188
%@4ABADN@S#
79<+8 literal , CCD=)N5D > S)AS +8-188 %@4ABADN@S#
'Y79!+<+8 literal , trecientos noventa " cuatro mil seiscientos veinte " cinco
+8-188 %olivianos#
9Z99\1Z\1<+8 literal , seiscientos oc2enta " seis millones seiscientos setenta " un
mil oc2ocientos setenta " un +8-188 %olivianos#
Z98!''87\<+8 literal , @CJ@CA)N5@S S)S)N5D MA44@N)S ;@SCA)N5@S 5=)AN5D > 5=)S MA4
CCD=)N5D > SA)5) +8-188 %@4ABADN@S#
9+97\\1+Y<+8 literal , S)ASCA)N5@S CANCC)N5D > S)AS MA44@N)S CCD5=@CA)N5@S S)5)N5D
> SA)5) MA4 CA)N5@ CANCC)N5D > NC)B) +8-188 %@4ABADN@S#
YY8'\<+8 literal , N@B)N5D > NC)B) MA4 5=)AN5D > SA)5) +8-188 %@4ABADN@S#
1+Y1Z8<+8 literal , ciento cincuenta " nueve mil ciento oc2enta +8-188 %olivianos#
9YYY'<+8 literal , S)S)N5D > NC)B) MA4 N@B)CA)N5@S N@B)N5D > 5=)S +8-188
%@4ABADN@S#
\9<+8 literal , setenta " seis +8-188 %olivianos#
\7<+8 literal , setenta " cuatro +8-188 %olivianos#
7<+8 literal , cuatro +8-188 %olivianos#
+\!'+9<+8 literal , 3CANA)N5@S S)5)N5D > ;@S MA4 5=)CA)N5@S CANCC)N5D > S)AS +8-188
%@4ABADN@S#
Z+<+8 literal , @CJ)N5D > CANC@ +8-188 %@4ABADN@S#
9\ZY\\887<+8 literal , seiscientos setenta " oc2o millones novecientos setenta "
siete mil cuatro +8-188 %olivianos#
'11!\+<+8 literal , 5=)CA)N5@S @NC) MA4 ;@SCA)N5@S S)5)N5D > CANC@ +8-188
%@4ABADN@S#
ZZZ<+8 literal , @CJ@CA)N5@S @CJ)N5D > @CJ@ +8-188 %@4ABADN@S#
Z91\781!+<+8 literal , @CJ@CA)N5@S S)S)N5D > CN MA44@N)S S)5)CA)N5@S CCD=)N5D MA4
CA)N5@ B)AN5) > CANC@ +8-188 %@4ABADN@S#
'\8!79<+8 literal , trecientos setenta mil doscientos cuarenta " seis +8-188
%olivianos#
YZ9777<+8 literal , novecientos oc2enta " seis mil cuatrocientos cuarenta " cuatro
+8-188 %olivianos#
!8!<+8 literal , ;@SCA)N5@S ;@S +8-188 %@4ABADN@S#
78\!Y+<+8 literal , CCD5=@CA)N5@S SA)5) MA4 ;@SCA)N5@S N@B)N5D > CANC@ +8-188
%@4ABADN@S#
+!!<+8 literal , 3CANA)N5@S B)AN5) > ;@S +8-188 %@4ABADN@S#
'\ZZ\Z9+'<+8 literal , 5=)CA)N5@S S)5)N5D > @CJ@ MA44@N)S @CJ@CA)N5@S S)5)N5D >
@CJ@ MA4 S)ASCA)N5@S CANCC)N5D > 5=)S +8-188 %@4ABADN@S#
\1!17!<+8 literal , S)5)CA)N5@S ;@C) MA4 CA)N5@ CCD=)N5D > ;@S +8-188 %@4ABADN@S#
+ZZ\'\8\+<+8 literal , 3CANA)N5@S @CJ)N5D > @CJ@ MA44@N)S S)5)CA)N5@S 5=)AN5D >
SA)5) MA4 S)5)N5D > CANC@ +8-188 %@4ABADN@S#
Y79+78<+8 literal , novecientos cuarenta " seis mil :uinientos cuarenta +8-188
%olivianos#
'799\7+\<+8 literal , treinta " cuatro millones seiscientos sesenta " siete mil
cuatrocientos cincuenta " siete +8-188 %olivianos#
'Y1Z\7<+8 literal , trecientos noventa " un mil oc2ocientos setenta " cuatro +8-188
%olivianos#
\7+<+8 literal , S)5)CA)N5@S CCD=)N5D > CANC@ +8-188 %@4ABADN@S#
9\88!7<+8 literal , seiscientos setenta mil veinte " cuatro +8-188 %olivianos#
\8'8!Y<+8 literal , setecientos tres mil veinte " nueve +8-188 %olivianos#
\7+<+8 literal , setecientos cuarenta " cinco +8-188 %olivianos#
Y\+71+++Z<+8 literal , N@B)CA)N5@S S)5)N5D > CANC@ MA44@N)S CCD5=@CA)N5@S 3CANC)
MA4 3CANA)N5@S CANCC)N5D > @CJ@ +8-188 %@4ABADN@S#
!Y7<+8 literal , ;@SCA)N5@S N@B)N5D > CCD5=@ +8-188 %@4ABADN@S#
++Y\Y7<+8 literal , :uinientos cincuenta " nueve mil setecientos noventa " cuatro
+8-188 %olivianos#
!'<+8 literal , veinte " tres +8-188 %olivianos#
+Z9''+<+8 literal , 3CANA)N5@S @CJ)N5D > S)AS MA4 5=)CA)N5@S 5=)AN5D > CANC@ +8-188
%@4ABADN@S#
171\7Y81<+8 literal , catorce millones ciento setenta " cuatro mil novecientos un
+8-188 %olivianos#
+!Y++188!<+8 literal , :uinientos veinte " nueve millones :uinientos cincuenta " un
mil dos +8-188 %olivianos#
Y'8<+8 literal , N@B)CA)N5@S 5=)AN5D +8-188 %@4ABADN@S#
+Z191\<+8 literal , :uinientos oc2enta " un mil seiscientos diecisiete +8-188
%olivianos#
77<+8 literal , CCD=)N5D > CCD5=@ +8-188 %@4ABADN@S#
\!\'8!Z87<+8 literal , S)5)CA)N5@S B)AN5) > SA)5) MA44@N)S 5=)CA)N5@S ;@S MA4
@CJ@CA)N5@S CCD5=@ +8-188 %@4ABADN@S#
99<+8 literal , S)S)N5D > S)AS +8-188 %@4ABADN@S#
'791Z'YZ<+8 literal , 5=)AN5D > CCD5=@ MA44@N)S S)ASCA)N5@S ;A)CA@CJ@ MA4
5=)CA)N5@S N@B)N5D > @CJ@ +8-188 %@4ABADN@S#
7\\'+78\Y<+8 literal , CCD5=@CA)N5@S S)5)N5D > SA)5) MA44@N)S 5=)CA)N5@S CANCC)N5D
> CCD5=@ MA4 S)5)N5D > NC)B) +8-188 %@4ABADN@S#
Z1'<+8 literal , @CJ@CA)N5@S 5=)C) +8-188 %@4ABADN@S#
9'7ZZZ!\8<+8 literal , S)ASCA)N5@S 5=)AN5D > CCD5=@ MA44@N)S @CJ@CA)N5@S @CJ)N5D >
@CJ@ MA4 ;@SCA)N5@S S)5)N5D +8-188 %@4ABADN@S#
!1Y+77<+8 literal , ;@SCA)N5@S ;A)CANC)B)MA4 3CANA)N5@S CCD=)N5D > CCD5=@ +8-188
%@4ABADN@S#
+1<+8 literal , cincuenta " un +8-188 %olivianos#
7'+978<+8 literal , CCD5=@CA)N5@S 5=)AN5D > CANC@ MA4 S)ASCA)N5@S CCD=)N5D +8-188
%@4ABADN@S#
++\ZY9<+8 literal , :uinientos cincuenta " siete mil oc2ocientos noventa " seis
+8-188 %olivianos#
'9<+8 literal , 5=)AN5D > S)AS +8-188 %@4ABADN@S#
\18<+8 literal , S)5)CA)N5@S ;A)T +8-188 %@4ABADN@S#
Z+8<+8 literal , @CJ@CA)N5@S CANCC)N5D +8-188 %@4ABADN@S#
!'87YZZ77<+8 literal , doscientos treinta millones cuatrocientos noventa " oc2o mil
oc2ocientos cuarenta " cuatro +8-188 %olivianos#
187!Y9<+8 literal , ciento cuatro mil doscientos noventa " seis +8-188 %olivianos#
1<+8 literal , CN +8-188 %@4ABADN@S#
N8188188<\8 literal , null
88'<\8 literal , tres \8-188 %olivianos#
!Z<\7+ literal , null
8<+ literal , C)=@ +-188 %@4ABADN@S#
YYYYYYYYY literal , N@B)CA)N5@S N@B)N5D > NC)B) MA44@N)S N@B)CA)N5@S N@B)N5D >
NC)B) MA4 N@B)CA)N5@S N@B)N5D > NC)B) 88-188 %@4ABADN@S#
YYYYYYYYYY literal , null
7ZZ8'\\8 literal , cuarenta " oc2o millones oc2ocientos tres mil setecientos
setenta 88-188 %olivianos#
!8887#\8 literal , B)AN5) MA4 CCD5=@ \8-188 %@4ABADN@S#
0uente: http:11+c3mouse.blogspot.com1;<,,1<D1convertir3numeros3letras3en3+ava3tipo.html
Datos en un jtexfield
,ay$sculas y minsculas en jtextfield
APara mayusculas
private void t*tNombre5ipoMantenimientoRe"=eleased(java#a/t#event#Re")vent evt)
t*tNombre5ipoMantenimiento#set5e*t(t*tNombre5ipoMantenimiento#get5e*t()#toCpperCase
())&
(
'ara minusculas
private void t*tNombre5ipoMantenimientoRe"=eleased(java#a/t#event#Re")vent evt)
t*tNombre5ipoMantenimiento#set5e*t(t*tNombre5ipoMantenimiento#get5e*t()#to4o/erCase
())&
(
No permitir nmeros
private void t*tNombreCargoRe"5"ped(java#a/t#event#Re")vent evt)
-- lee la tecla presionada
int k,(int)evt#getRe"C2ar()&
-- c2e:uea en DSCAA si esta entre los numeros de las teclas : son numeros
i0 (k X 7\ SS k V +Z)
evt#setRe"C2ar((c2ar)Re")vent#BR?C4)D=)&
G@ptionPane#s2o/Message;ialog(null<$No puede ingresar numerosEEE$<$Bentana
)rror ;atos$<G@ptionPane#)==@=?M)SSDU))&
(
-- si la tecla presionada es enter trans0iere el 0oco
i0(k,,18)
t*tNombreCargo#trans0er6ocus()&
(
(
0uente: http:11EEE.#orosdelEeb.com1#D=1auxilio3extraer3datos3+table3+text#ield39;D<991
jte)t%ield solo numerico
.ueno aqui te de+o un e+mplo lo debes poner en el $vento Aey"yped del +text#ield
private void t*tCompraRe"5"ped(java#a/t#event#Re")vent evt)
int k,(int)evt#getRe"C2ar()&
i0 (k X, Y\ SS k V, 1!! WW kX,9+ SS kV,Y8)
evt#setRe"C2ar((c2ar)Re")vent#BR?C4)D=)&
G@ptionPane#s2o/Message;ialog(null<$No puede ingresar letrasEEE$<$Bentana )rror
;atos$<G@ptionPane#)==@=?M)SSDU))&
(
i0(k,,!71 WW k,,!8Y)
evt#setRe"C2ar((c2ar)Re")vent#BR?C4)D=)&
G@ptionPane#s2o/Message;ialog(null<$No puede ingresar letrasEEE$<$Bentana )rror
;atos$<G@ptionPane#)==@=?M)SSDU))&
(
i0(k,,18)
t*tCompra#trans0er6ocus()&
(
(
Fola :as vale tarde que nunca aqui hay otro e+emplo que en mi programa #unciona al ,<<d
G5e*t6ieldt01 , ne/ G5e*t6ield()& --tambien 0unciona con G6ormatted5e*t6ield()&
--codigo para limitar a :ue solo introdusca N]meros
t01#addRe"4istener(ne/ Re"Ddapter()
public void ke"5"ped(Re")vent e)
c2ar c , e#getRe"C2ar()&
i0 (E(C2aracter#is;igit(c) WW
(c ,, Re")vent#BR?%DCR?SPDC)) WW
(c ,, Re")vent#BR?;)4)5))))
get5oolkit()#beep()&
e#consume()&
(
(
()&
0uente: http:11EEE.#orosdelEeb.com1#D=1+text#ield3solo3numerico3=H=;QU1
pasar de un jte)t3ield a otro pulsando enter
import java*#s/ing#.&
import java#a/t#event#.&
public class )jemplo e*tends G6rame implements Dction4istener
public GPane panel&
public G5e*t6ield campo1&
public G5e*t6ield campo!&
public )jemplo()
panel , ne/ GPanel(ne/ 6lo/4a"out())&
campo1 , ne/ G5e*t6ield('8)&
campo! , ne/ G5e*t6ield('8)&
campo1#addDction4istener(t2is)&
panel#add(campo1)&
panel#add(campo!)&
t2is#getContentPane#add(panel)&
(
public void actionPer0ormed(Dction)vent e)
i0(e#getSource() ,, campo1)
campo!#set5e*t(campo1#get5e*t)&
campo1#set5e*t($$)&
(
(
public static void main(String args[])
)jemplo ventana , ne/ )jemplo()&
ventana#setBisible(true)&
(
(
%uente: http:11ar.ansEers.yahoo.com1question1indexSqidO;<<Q<H;H;B;Q=HAAQuvog
Evento 4eypress
private void j5e*t6ield1Re"=eleased(java#a/t#event#Re")vent evt)
-- 5@;@: Dgrege su codigo a:ui:
i0 (evt#getRe"Code() ,, evt#BR?)N5)=)
--lo : debe 2acer cuando presione " suelte la tecla enter
(
(
0uente: http:11#orode+ava.com1shoEthread.php1U9<3$vento32eypress
Calidaci+n de 3ormularios en Java
!diLa validacin de #ormularios nos permite asegurarnos que los datos que, por e+emplo, un usuario
ingrese en un campo de texto sean v(lidos. Dicha validacin puede hacerse una veM 1ue el usuario
.aya digitado todos los datos, o mientras el usuario los est6 digitando.
-ara el primer caso, lo me+or es utilizar expresiones regulares usando el m%todo matc5es() de la clase
6tring >si necesitas un e+emplo, clic aqu6?.
-ara el segundo caso tendremos que mane+ar los eventos del teclado que se generen sobre determinado
control, usando la inter#az 7ey*dapter y el m%todo keyReleased. As6, en nuestro cdigo de e+emplo
tenemos un J.e/tField al 1ue le aQadimos un *istener 1ue escuc0ar los eventos del teclado, y
veri#icar( si la tecla presionada es un caract%r v(lido >solo letras?, de lo contrario lo elimina.
)o hay nada especial en el cdigo de e+emplo salvo por un par de l6neas:
?nea #": se utiliza el m%todo anidado get"ool2it>?.beep>?, que har( que el sistema alerte al
usuario con un pitido cada vez que un dato errneo.
?nea 9<: comparamos el c5ar que digite el usuario con el entero Q, que es el cdigo resultado
al usar el .ac2space >tecla para borrar hacia la izquierda?P lo cual permite al usuario borrar
caracteres.
C+digoT
import java#a/t#=obot&
import java*#s/ing#.&
import java#a/t#event#.&
public class Solo4etras e*tends G6rame
private G5e*t6ield caja , ne/ G5e*t6ield()&
public Solo4etras()
super($Solo dejo escribir letras$)&
caja#addRe"4istener(ne/ Re"Ddapter()
public void ke"=eleased(Re")vent e)
C2aracter caracter , ne/ C2aracter(e#getRe"C2ar())&
i0 (EesBalido(caracter))
String te*to , $$&
0or (int i , 8& i V caja#get5e*t()#lengt2()& iPP)
i0 (esBalido(ne/ C2aracter(caja#get5e*t()#c2arDt(i))))
te*to P, caja#get5e*t()#c2arDt(i)&
caja#set5e*t(te*to)&
get5oolkit()#beep()&
(
(
public boolean esBalido(C2aracter caracter)
c2ar c , caracter#c2arBalue()&
i0 ( E(C2aracter#is4etter(c) --si es letra
WW c ,, ^ ^ --o un espacio
WW c ,, Z --o backspace
))
return 0alse&
else
return true&
(
()&
getContentPane()#add(caja)&
setSiMe('88< 98)&
setBisible(true)&
(
public static void main(String args[])
G6rame#set;e0ault4ookDnd6eel;ecorated(true)&
Solo4etras ventana , ne/ Solo4etras()&
ventana#set;e0aultClose@peration(G6rame#)KA5?@N?C4@S))&
(
(
%uente: http:11casidiablo.net1validacion3de3#ormularios3en3+ava1
Calidacion de Campos vacios Bsando 8*jetc
.uenas de nuevo amigos, en esta ocacion eh estado creando unos metodos con los cuales quiero validar
si los campos de tipo &tex#ield estan vacios y el codigo es el siguiente.
public void validarGte*0ield(@bject[] entrada)
0or (int i , 8& i V entrada#lengt2& iPP)
i0 (entrada[i] instanceo0 G5e*t6ield)
i0 (entrada[i]#toString()#is)mpt"())
G@ptionPane#s2o/Message;ialog(null< $Ja" campos vacios$)&
(else
G@ptionPane#s2o/Message;ialog(null< $Correcto$)&
(
(
(
(
-.Metodo para validar los Gte*0ield e*istentes.-
public void validarCampos()
-.)n este caso tengo dos Gte*0ield en mi G0rame los cuales deseo validar.-
validarGte*0ield(j5e*t6ield1<j5e*t6ield!)&
(
%uente:
http:11EEE.+avamexico.org1#oros1+avaNstandardNedition1validacionNdeNcamposNvaciosNusandoNob+etc
Trans3ormando -tring a Date P uso de -impleDate%ormat
$n uno de los post, se planteo la pregunta acmo puedo trans#ormar un /tring a DateS -ara hacer m(s
interesante el asunto el valor de la variable /tring estaba en el siguiente #ormato a*o3mes3d6a. $n
cdigo se ver6a algo as6:
/tring str0echa V;<<H3,;3;=eP
!on anterioridad conoc6a la existencia de la clase /impleDate0ormat, que hasta ahora la utilic% para
V#ormatearW la salida de un ob+eto tipo Date. !uando se imprime en consola un ob+eto Date se obtiene:
Ged )ov ;, ,;:;H:== !@" ;<<H, pero mi salida debe ser algo as6: ;,1,,1;<<H. $n cdigo ser6a as6:
Calendar calendario , UregorianCalendar#getAnstance()&
;ate 0ec2a , calendario#get5ime()&
S"stem#out#println(0ec2a)&
Simple;ate6ormat 0ormato;e6ec2a , ne/ Simple;ate6ormat(_dd-MM-""""`)&
S"stem#out#println(0ormato;e6ec2a#0ormat(0ec2a))&
$l primer /ystem.out.println imprime Ged )ov ;, ,;:;H:== !@" ;<<H, mientras que el segundo
imprime la #echa de acuerdo al #ormato d6a1mes1a*o >;,1,,1;<<H? que se especi#ica como par(metro
del constructor de la clase /impleDate0ormat.
-ero la clase /impleDate0ormat no solamente me permite V#ormatearW ob+etos tipo Date, sino que me
permite crear ob+etos Date a partir de un /tring que se encuentra en un #ormato determinado. $s as6
cmo se puede hacer.
,. !reamos un ob+eto /impleDate0ormat y el par(metro del constructor ser( el #ormato en el que
se encuentra la variable tipo /tring.
;. !rear un ob+eto tipo date, en donde se almacenar( la #echa.
B. 4tilizar el m%todo parse de la clase /impleDate0ormat, tener en cuenta que puede lanzar
excepcines.
$n cdigo:
Simple;ate6ormat 0ormato;el5e*to , ne/ Simple;ate6ormat(_""""NMMNdd`)&
String str6ec2a , _!88\N1!N!+a&
;ate 0ec2a , null&
tr"
0ec2a , 0ormato;el5e*to#parse(str6ec2a)&
(catc2 (Parse)*ception e*)
e*#printStack5race()&
(
S"stem#out#println(0ec2a#toString())&
4na nota sobre los #ormatos: si utilizamos una m min'scula estamos diciendo minutos, si utilizamos :
may'scula decimos meses. Aqu6 pueden encontrar mayores detalles
%uente: http:11ca#elo+ano.Eordpress.com1;<<H1,,1;,1trans#ormando3string3a3date3uso3de3simpledate#ormat1
8peradores aritm6ticos, lectura, conversi+n y escritura Java A Net*eans!
8*jetivo:
4tilizar los conceptos de variable y tipo, (mbito de la variable, leer datos de la R45, mostrar datos en la
R45 del lengua+e seleccionado.
(l 3inaliMar la clase los estudiantes estarHn en capacidad de:
De#inir las operaciones elementales que o#rece el lengua+e seleccionado.
7ealizar e+ercicios de programacin en el lengua+e seleccionado.
!rear programas simples usando lectura y escritura de datos y las operaciones b(sicas en el lengua+e
seleccionado.
Tra*ajando con J(C(!
5mportante tener presente la bibliogra#6a dada.
?a estructura clave de un programa en
J(C(
?a parte #: es la exterior, en esta solo
pueden haber dos tipos de elementos,
primero el paquete que aparece con la
palabra pac2age nombreP en este e+emplo
no lo colocamos pues no debe usarse a la
ligera.
$l segundo tipo de elemento que puede
aparecer es la importacin que se logra con
la palabra import seguida de lo que se desea importar y terminando con punto y coma
package nombrepa:uete&
import java#io#.&
import java*#s/ing#.&
import ####
?a parte 9: fsta es la macro estructura que se denomina clase, todo debe estar dentro de la clase pero
en partes espec6#icas. la clase esta determinada as6:
public class )ombreAlgoritmoY
aqu6 adentro va todo el programa dividido en partes espec6#icas.
Z
$l bloque que #orma a la clase esta determinado por las llaves YZdesde donde abren signi#ica que inicia
y donde cierran signi#ica que termina. 5mportante que el nombre )ombreAlgoritmo sea el mismo del
archivo .+ava es decir del cdigo #uente.
"odo el programa debe estar contenido dentro de la estructura que denominamos clase.
?a parte :: $ste es un subprograma, cada subprograma tiene una estructura especial la cual
estudiaremos con m(s detalle en los prximos cursos.
$l bloque esta delimitado por las llaves que abren y las llaves que cierran dentro de este se colocan las
instrucciones que con#orman el programa.
?as varia*les y su Hm*ito
?os tipos de las varia*les:
Java maneja dos grandes tipos 1ue son, los primitivos y los e)tendidos!
?os primitivos son:
s.ort: entero muy corto >; bytes 3B;H9Q a B;H9H?
int: entero corto >D .ytes 3;,DHDQB9DQ a ;,DHDQB9DH?
long: entero largo >Q .ytes 3U;;BBH;<B9Q=DHH=Q<Q a U;;BBH;<B9Q=DHH=Q<H?
3loat: decimal corto >D .ytes ,.D<,;UQD9DB;DQ,H<H e3D= a B.D<;Q;BD99BQ=;QQ9<e8BQ? >positivo o
negativo?
dou*le: decimal largo >Q bytes D.UD<9=9D=QD,;D9=DDe3B;D a ,.HUH9UB,BDQ9;B,=H<e8B<Q? >positivo
o negativo?
c.ar: un car(cter incluido los extendidos >; bytes < to 9==B=?
*yte: esta en el rango >3,;Q a ,;H?
*oolean: valor lgico true3#alse >!orresponde a un bit?
?os e)tendidos:
Los tipos de datos extendidos son in#initos, dado que cualquier usuario puede de#inir el propio seg'n la
orientacin a ob+etos. Los m(s usados para el curso pueden ser.
-tring: para el mane+o de cadenas de texto.
Dou*le: para la conversin de tipos double
Integer: para la conversin de tipos int
-.ort: para conversin de tipos short
?ong: para la conversin de tipos long
%loat: para la conversin de tipos #loat.
De3inir una varia*le Ulo*al
$stas variables se debe colocar dentro de la clase y #uera de cualquier m%todo.
#orma general tipo nombre O valor5nicialP
tipo: es cualquiera de los antes mencionados.
nom*re: debe ser al#anum%rico, puede contender letras y n'meros siempre debe iniciar con una letra y
nunca debe contener espacios en blanco o caracteres especiales como 1>dg_O83S......
Ejemplos
/tring nombreOIIP
double salarioO<P
int edadO<P
De3inir una varia*le local
Lo que di#erencia a esta de las dem(s es el lugar en donde se colocan. "oda variable local debe
colocarse dentro de un m%todo y #uera de cualquier bloque que se de#ina dentro de este.
?as varia*les glo*ales: son accesibles desde cualquier parte de la clase y por tanto por cualquier
m%todo que este contenido en esta, la imagen nos muestra las variables Rlobales en el bloque
numerado con , y B. Dado que la parte en la cual #ueron de#inidas es la clase y #uera de cualquier
m%todo. La palabra static signi#ica que la variable pertenece a la clase y no a las instancias de la misma
aunque esta es teor6a orientada a ob+etos aplica para un me+or entendimiento.
?as varia*les locales: son accesibles solo para el m%todo en el cual han sido de#inidas en este caso las
encerradas en el bloque ;.
Dos variables de (mbitos distintos pueden llamarse igual, esto no se aconse+a dado que hace necesario
ingresar un elemento que se denomina resolucin de ambighedad this, con #ines pr(cticos evitaremos
que esto suceda.
?as varia*les de *lo1ue: son las que se de#inen dentro de los bloques como el si el mientras y otros
que m(s adelante traba+aremos en el curso.
?as 3ormas de conversi+n de te)tos a num6ricos son las siguientes:
5nteger.parse5nt>texto?P 11convierte el texto dado a entero
Long.parseLong>texto?P11convierte el texto dado a un entero
Double.parseDouble>texto?P11convierte el texto dado a decimal
<! 8peradores aritm6ticos de java!
Asignacin................................................................O
/uma.........................................................................8
7esta.........................................................................3
:ultiplicacin...........................................................X
Divisin....................................................................1
:odulo......................................................................d
-otenciacin..............................................................:ath.poE>base,exponente?
7aiz cuadrada...........................................................:ath.sqrt>radicando?
5ncremento de uno....................................................88
Decremento de uno...................................................333
! 8peradores relacionales 1ue aplica solo para los n$meros no para los te)tos
mayor que.................................................................C
menor que.................................................................]
mayor o igual que.....................................................CO
menor o igual que.....................................................]O
igual que...................................................................OO
di#erente que.............................................................JO
"! 8peradores l+gicos
A)D..........................................................................^^
@7.............................................................................TT
)@"..........................................................................J
?os algoritmos de tres pasos usando JavaANet*eans
'aso # Leer los datos
'aso 9 7ealizar los procesos Algoritmo
'aso : 5mprimir o mostrar los resultados.
'ara leer los datos ingresados por el usuario!
@btendremos los datos inicialmente de tres posibles elementos que son: campos de texto text0ield, las
areas de texto textArea, ventana de captura &@ption-ane. "odos los elementos mencionados retornan lo
capturado del usuario en el #ormato texto motivo por el cual se hace necesario convertirlo a num%rico
en los casos en que sea necesario.
#! 5ecolectando los datos de una campo de te)to!
nombre!ampo.get"ext>?P esta es la #orma general de capturar un texto que el usuario a ingresado en
el campo de texto.
$+emplo el campo de texto se llama nombre
/tring nomOnombre.get"ext>?P 11Lo que se encuentre escrito en el campo de texto lo recupera y lo
almacena en la variable.
9! 5ecolectando los datos de un Hrea de te)to!
nombreArea"exto.get"ext>?P es decir igual que como lo hicimos en el caso del campo de texto.
$+emplo el (rea de texto se llama in#o
/tring datOin#o.get"ext>?P
:! 5ecolectar los datos desde una ventana de captura!
&@ption-ane.shoE5nputDialog>I"exto que ilustra al usuario sobre lo que se le pideI?P
$+emplo
/tring apellidoO&@ption-ane.shoE5nputDialog>I5ngrese su apellidoI?P
'ara procesar los datos!
$n estos algoritmos de tres pasos, necesitamos mucho la conversin de tipos a los valores num%ricos y
textos al igual que los operadores aritm%ticos elementales.
Convertir los datos y ejemplos!
%orma general
Double.parseDouble> te)to?P 11 convierte un texto al tipo num%rico double
5nteger.parse5nt> te)to ?P 11 convierte un texto al tipo num%rico entero
Long.parseLong> te)to ?P 11 convierte un texto al tipo num%rico entero de mayor capacidad
0loat.parse0loat > te)to?P 11 convierte un texto al tipo num%rico decimal corto
te)to se re#iere a una de varias cosas que pueden ser >literal, variable, expresin o #uncin? todas de
tipo /tring.
Ejemplos para la captura de datos y su conversi+n a n$mero!
#! -i se desea leer un entero capturado de una caja de te)to o de una Hrea de te)to a la cual
llamaremos num#
DD3orma# de .acerlo
/tring sOnum,.get"ext>?P
int n,O5nteger.parse5nt>s?P
DD3orma9 de .acerlo
int n,O5nteger.parse5nt>num,.get"ext>??P 11en este e+emplo se ahorra el uso de la variable de tipo
texto.
9! -i se desea leer un decimal de una ventana de captura!
DD%orma # de .acerlo
/tring salO&@ptio-ane.shoE5nputDialog>IDigite el salario que desea: I?P
double salarioODouble.parseDouble>sal?P
DD%orma 9 de .acerlo
double salrioODouble.parseDouble>&@ption-ane.shoE5nputDialog>IDigite el salario que desea: I??P
'ara mostrar los datos
?os resultados de una sola linea se muestran 3Hcilmente en un campo de te)to asi:
campoDe"exto.set"ext> resultado ?P
resultado debe ser un elemento de tipo texto si no lo es, un truco es colocar inicialmente II8resultado
para lograr la conversin. resultado puede ser una variable, un literal, una expresin o una #uncin.
CuHndo el campo de te)to es mHs de una lnea podemos usar un Hrea de te)to!
areaDe"exto.set"ext> linea,8IinI?P
areaDetexto.set"ext>areaDe"exto.get"ext>?8linea;8IinI?P
areaDetexto.set"ext>areaDe"exto.get"ext>?8lineaB8IinI?P 11 y de esta manera agregar m(s l6neas IinI
corresponde a un enter
CuHndo se trata de mostrar en un mensaje de aceptar y cerrar se .ace as:
&@ption-ane.shoE:essageDialog>main-anel, resultado ?P se puede aplicar cualquiera de las #ormas
antes vistas para el resultado.
Ejemplo # completo en vdeo!
!rear un programa que muestre cu(ntos clic se le ha dado a un botn. La idea es que al momento de
hacer clic contamos uno y lo mostramos en un mensa+e emergente.
,. !onstruimos la inter#az gr(#ica. La cual solo constar( de un botn.
;. programamos el evento clic2ed del botn para realizar en este el algoritmo
B. )ecesitamos una variable global donde vamos guardando el n'mero de veces que se ha presionado
el botn.
D. 4tilizaremos el &@ption-ane.shoE:essageDialog para mostrar los resultados.
Cideo: http:11EEE.youtube.com1EatchSvOpLULL&/Diq$
Ejemplo 9 completo en vdeo!
!rear un programa que permita convertir uno minutos ingresados por el usuario a horas.
,. !onstruir la R45 del e+ercicio, para lo cual usaremos dos ca+as de texto una para los minutos
ingresados y otra para colocar su equivalente a horas es decir la respuesta el problema dado.
;. Asignar nombres a las ca+as de texto de #orma que sean usados correctamente en el cdigo para
captura y mostrar los datos.
B. a en el cdigo capturar los minutos ingresados convertirlos a variables decimales.
D. Aplicar la regla de tres para pasar minutos a horas.
=. :ostrar en el campo de texto seleccionado el resultado de la operacin.
Cideo: http:11EEE.youtube.com1EatchSvO=g!D7/dM0DQ
,. /olicitar que un usuario ingrese la base de un n'mero y el exponente al cual desea elevarlo, el
programa debe mostrar el resultado de la operacin.
;. /olicitarle a una persona que ingrese su nombre, identi#icacin y cuantos billetes de ,<<<, =<<<,
,<<<<, ;<<<<, =<<<< tiene, para que el sistema le imprima el valor total de dinero del que dispone.
B. Dado el lado de un cuadrado, imprimir el (rea del mismo.
D. Dada la base y la altura de un triangulo, imprimir el (rea del mismo
=. -edir a un usuario que ingrese un n'mero, luego otro y el programa deber( imprimir el residuo de la
divisin entera del primer n'mero sobre el segundo.
9. -edir a un usuario que ingrese su nombre, identi#icacin, nombre de la materia, y las notas de
seguimiento, parcial y #inal, el sistema deber( imprimir todos los datos +unto con la nota de#initiva.
H. Dada una lista de cuatro productos, leer el nombre y el precio de cada uno de ellos, el precio no
incluye iva, luego imprimir, el valor del iva para cada producto y el costo total de la compra con y
sin iva.
Q. Dado un nombre, a*o de nacimiento y teniendo presente el a*o actual, calcular la edad de la
persona.
U. -ensando en los datos de un triangulo rect(ngulo, calcular, dados la hipotenusa y uno de los catetos,
el (rea de dicho triangulo.
,<. Dado el nombre de un estudiante, la materia, las notas de seguimiento y parcial, el programa deber(
imprimir todos los datos y cuanto necesita el estudiante para ganar la asignatura.
,,. Dada una cantidad de dolares y el valor de la tasa de cambio a pesos, imprimir a cuantos pesos
equivale la ci#ra ingresada.
,;. -edir a una persona que ingrese el monto que desea que le presten en una natillera, si los intereses
son anticipados al =d mensual, preguntar a cuantos meses desea el pr%stamo y generarle cuanto
paga de intereses y cuanto realmente le terminan prestando.
,B. !onstruir un programa que permita calcular el valor real de un electrodom%stico del cual se debe
identi#icar el nombre, el n'mero de cuotas y el costo de cada cuota.
,D. Dado el n'mero de pelda*os de una escalera, al ancho del pelda*o y la distancia entre dos pelda*o,
imprimir el largo de dicha escalera. /i el ancho del pelda*o esta dado en mil6metros, la distancia
entre ellos esta dada en metros y se pide el largo de la escalera en cent6metros.
,=. Dados Q d6gitos binarios ingresados por el usuario, imprimir su equivalente decimal.
,9. Dados Q d6gitos octales ingresados por el teclado, imprimir el equivalente decimal.
0uente: http:11sites.google.com1site1tutoriasdeingenieria1lengua+es3de3programacion1operadores3y3operaciones3basicas3de3
+ava3netbeans
Bsando I3 en JavaANet*eans
8*jetivo:
7econocer la toma de decisiones en el lengua+e seleccionado.
(l 3inaliMar la clase los estudiantes estarHn en capacidad de:
4tilizar las decisiones que o#rece el lengua+e seleccionado.
7ealizar e+ercicios de programacin en el lengua+e seleccionado.
?os operadores relacionales para los tipos primitivos
]................................................................................menor que
C................................................................................mayor que
]O..............................................................................menor o igual que
CO..............................................................................mayor o igual que
JO...............................................................................di#erente de
OO..............................................................................5gual a
?os operadores l+gicos
^^............................................................................and
TT.................................................................................or
J.................................................................................not
?os valores l+gicos *oolean
true
#alse
?as 3unciones para comparar te)tos
-ara veri#icar si es igual te)to!e1uals/ te)toComparaci+n 0
para veri#icar si es mayor, menor incluso igual te)to!compareTo/ te)toComparaci+n0
?as decisiones!
Las sentencias de decisin se denominan /5 D$ L@ !@)"7A75@. /u #inalidad es la de hacer una
pregunta lgica o relacional y con base en dicha pregunta hacer un bloque de cdigo u otro. /e dice que
un si esta anidado cuando se encuentra dentro de otro bloque si o por de lo contrario.
-i de una sola lnea
$sta decisin solo aplica para una l6nea que se encuentra exactamente despu%s del i#, tambi%n aplica
para else, cuando sea de una sola l6nea no necesita las llaves.
-i de un *lo1ue
La #inalidad de este es evaluar la expresin y en caso que sea verdadera e+ecutar todas las instrucciones
que se encuentran encerradas por YZ. 7ecordemos a a esa parte que est( delimitada por las llaves se les
denomina bloque.
-i con de lo contrario
La #inalidad es evaluar la expresin si es verdadera ingresa al bloque que est( deba+o del i# desde Yabre
hasta Zcierra. $n caso de ser la expresin #alsa, salta el bloque principal y entra al bloque else que esta
delimitado por YZ, Yabre el bloque Zcierra el bloque.
$sta es excluyendo es decir o entra al bloque de verdad o lo hace al de #alsedad pero no a ambos. A
esto se le denomina exclusin mutua.
-i de lo contrario -i!!! else!
$sta decisin es especial en la medida que muestra un anidamiento impl6cito. La #inalidad es hacer la
pregunta inicial si esta es #alsa, por de lo contrario se realiza otra pregunta, esto se repite
inde#inidamente y solo hasta el #inal se agrega de lo contrario. !uando se ingresa a un bloque ya no se
ingresa a ning'n otro de manera que siguen siendo excluyentes entre /5
?as decisiones anidadas!
/igni#ican que dentro de cualquiera de los bloques de los i#,else e i# else, se pueden colocar otros i#,
else e i# else y a su vez dentro de estos otros y esto sin un l6mite dado. 4na clave es respetar la
indentacin:
Claves necesarias para las decisiones
,. /iempre la expresin del i# debe estar encerrada entre par%ntesis > expresin? y dentro de %sta se
pueden colocar otros i#, else, i# else...
;. $s me+or siempre delimitar los bloques con YZde #orma que no se preste para con#usiones.
B. /iempre respetar la sangr6a, tabulacin o indentacin.
D. $s me+or anidar preguntas, que hacer expresiones muy comple+as de entender.
=. $l mayor o igual cuando se habla de enteros, puede ser reemplazado por C valor 3, y ] valor8,
9. !uando se comparan textos OO no #unciona y debe ser utilizada la palabra equals as6:
3orma #
String s,$2ola$&
i0 (s#e:uals($prueba$),,true)
--blo:ue de verdad
(
3orma 9
String variable,$$&
i0 ($prueba$#e:uals(variable))
--blo:ue de verdad
(
3orma :
String var1,$$<var!,$$&
i0 ( var1#e:uals(var!))
--blo:ue de verdad
(
3orma ;
String var1,$$<var!,$$&
i0 ( var1#e:uals(var!P$e*presiIn$))
--blo:ue de verdad
(
H. !uando se de#ine una variable dentro de un bloque, %sta solo IviveI para el bloque por tanto #uera de
este sirve, para recordar el tema del (mbito ver clases anteriores
?a instrucci+n casos
$s usada para determinar de entre un grupo de elementos cual de ellos es igual a uno dado. /u
desventa+a radica en que solo #unciona para enteros int o char y en los casos solo pueden haber valores
constantes, aclaro que este solo es un comportamiento de +ava otros lengua+es no la mane+an o lo hacen
de manera distinta.
La palabra brea2, determina el #in del caso y los dos puntos despu%s del literal determinan el inicio. $n
el gr(#ico lo que aparece con corchetes signi#ica que puede estar pero no es obligatorio.
de#ault es el caso por de#ecto si despu%s de evaluar todos los anteriores no encuentra coincidencias
entonces por de#ecto ingresa a %ste.
Dentro del grupo de sentencias se puede ubicar cualquiera de las vistas o por ver es decir i#, else, #or,
Ehile sEitch.....
7espetar la tabulacin hace la di#erencia entre entender o complicar el problema.
%uente: http:11sites.google.com1site1tutoriasdeingenieria1lengua+es3de3programacion1usando3i#3en3+ava3netbeans
?imitar los caracteres en un JTe)t%ield
$ste es un e+emplo muy basico, donde se limita la entrada de caracteres en un &"ext0ield, pues es una
#orma muy util cuando se necesita.
-ara que quede claro, la clase &"ext0ieldLimit es una clase de tipo Document que sobreescribir(
insert-tring/T0 que controlar( la condicion de la cantidad de caracteres como l6mite. $sta clase es
llamada donde se instancia el &"ext0ield, es decir donde se declara dicho componente, veamos:
-..
.
. Faut2or mani*
.-
import java*#s/ing#te*t#.&
public class G5e*t6ield4imit e*tends Plain;ocument
private int limit&
-- optional uppercase conversion
private boolean toCppercase , 0alse&
G5e*t6ield4imit(int limit)
super()&
t2is#limit , limit&
(
G5e*t6ield4imit(int limit< boolean upper)
super()&
t2is#limit , limit&
toCppercase , upper&
(
F@verride
public void insertString
(int o00set< String str< DttributeSet attr)
t2ro/s %ad4ocation)*ception
i0 (str ,, null) return&
i0 ((get4engt2() P str#lengt2()) V, limit)
i0 (toCppercase) str , str#toCpperCase()&
super#insertString(o00set< str< attr)&
(
(
(
$l constructor recibe un int, que indica el l6mite de caracteres que se permitir( ingresar en el &"ext0ield
G5e*t6ield4imit(int limit)
Ahora veamos como se usa esta clase con aplic(ndolo a nuestro &"ext0ield:
G5e*t6ield te*t0ield , ne/ G5e*t6ield()&
te*t6ield#set;ocument(ne/ G5e*t6ield4imit(1+))&
)oten como se hace una instancia de la clase &"ext0ieldLimit antes mencionada recibiendo el numero
,= como limitador de cararteres. Ac( podr(n ver el e+emplo completo, y aba+o los encontraran el cdigo
empleando.
%uente: http:11EEE.apuntes.delibertad.com1+ava1limitar3los3caracteres3en3un3+text#ield1
-8%T@(5E DE INCENT(5I8 DE-(558??(D8 EN NETBE(N-
.uenas, a continuacin les de+o un aplicativo que hice como
proyecto en la universidad en el Ber ciclo y quisiera compartirlo
para ver si pueden aportar me+oras al programa y si a alguien le
sirve que pueda usarlo para un proyecto y me+orarlo al mismo
estilo de so#tEare libre.
.ueno por motivos de tiempo me #alto programar las
instrucciones del botn de Aardex, pues bueno si alguien se
anima a complementarlo o enviar sugerencias para
complementarlo se puede hacer. $spero sus comentarios y
sugerencias para la me+ora de un programa.
N4n sistema grande y comple+o que no ha evolucionado a partir
de otro peque*o y simple no #unciona y, adem(s, es imposible
arreglarlo para que #uncioneO 3 Bjarne -troustrup.
( continuaci+n les dejo unas capturas del aplicativo
-rimera pantalla o ventana principal de control con todos los botnes:
/egunda captura que corresponde al botn proveedores, el cual contiene los datos mas resaltantes de un
proveedor de productos:
"ercera captura que le corresponde al botn de clientes, el cual contiene los datos principales de los
clientes que se tiene:
La cuarta captura corresponde al botn de productos al cual se ingresaran los atributos de cada
producto para tenerlos en la base de datos y a partir de hay hacer una orden de compra.
La quinta captura o imagen que se muestra corresponde al botn de personal, el cual contiene los datos
o atributos mas resaltantes de cada vendedor o almacenero que mane+ara el so#tEare de inventario:
La sexta y 'ltima imagen que se muestra corresponde a el botn de orden de compra el cual va a
interactuar con los productos existentes para a partir de los que se tiene hacer una orden de compra.
E-'ECI%IC(CI8NE-:
!uando intenten cargar el aplicativo en su )et.eans quiz( les aparezca una advertencia de error, eso
por el problema de compatibilidad ya que lo desarroll% en la versin del )et.eans 9.H., . -ero omiten
la advertencia de error y le dan simplemente a continuar o aceptar y se cargar( el aplicativo a su lista de
proyectos con un peque*o icono de advertencia en la taza de ca#%, pero correr( sin ning'n problema..
4na vez que hayan cargado el aplicativo a su lista de proyectos en )et.eans aparecer(n dos paquetes,
el paquete llamado IneEpac2ageI es el que contiene las claces y #ormularios y para que vean correr el
aplicativo completo abren ese paquete y dan clic2 derecho al #ormulario llamado I-resentacion.+avaI y
seleccionan e+ecutar archivo.
Aparecer( despu%s de la presentacin una peque*a ventana que pedir( la validacin y existen dos tipos
como acceder como administrador o como vendedor, si se selecciona vendedor se activara el cuadro
donde les pide el cdigo del vendedor, pero en este caso ingresaremos como administrador, para eso en
nivel de acceso seleccionamos IAD:5)5/"7AD@7I y la contrase*a es IA!7$D5"A!5j)I le dan a
I@AI y listo.
&ustamente despu%s de logearse les aparecer( una ventana que les pide el tipo de cambio, bueno es sin
importancia por que lo puse mas que todo para complementarlo, claro eso no quita que sea importante
ya que mane+aremos precios, pero bueno no a#ecta en nada lo que pongan en ese apartado de tipo de
cambio, si pueden codi#icarlo y darle un uso para que sea utilizado el tipo de cambio dentro del
aplicativo ser6a excelente, pero hay esta solo para resaltar ese atributo dentro del aplicativo, entonces
solo colocan un valor num%rico cualquiera al tipo de cambio y le san en I/AL$I y se abrir( reci%n el
#ormulario de control, asimismo la #echa que aparece es I#icticiaI ya que no encontr% el m%todo de que
como se cargue la #echa actual para ese cuadro de texto.
Algo muy importante, se observa en cada #ormulario en la parte izquierda un +List o me+or dicho una
lista que contiene el listado de proveedores, vendedores, productos segun sea el #ormulario
seleccionado, el algoritmo lo implemente para que mediante un evento de teclado se impriman los
atributos del ob+eto seleccionado que este en la lista, es decir, por e+emplo seleccionan el botn de
-7@D4!"@/ se abrira el #ormulario correspondiente y se observa un listado de productos en una lista
al lado izquierdo, seleccionamos cualquiera le damos un clic2 y le damos $)"$7 y se imprimiran los
atributos del producto seleccionado.
Lo que quise desarrollar y esto si lo resalto mucho por que quise desarrollar un algoritmo que me
permita #iltrar la lista >+List? a trav%s de un campo de texto >"ext0ield? para que el metodo de b'squeda
sea mas sencillo, si alguien encuentra la #orma de hacerlo se agradecer(, ya que lo busque por 5nternet
y nunca logr% encontrar la manera como.
-rincipalmente cabe mencionar que no se utiliz conexiones a bases de datos como /QL o :y/ql ni
@racle por motivos que en aquel siclo aun no veiamos ese tema, pero tiene un estilo de base de datos ya
que los datos ingresados se guardan en archivos binarios de extensin I.binI, lo cual guarda los datos
ingresados en la misma carpeta donde se encuentran los archivos del aplicativo.
Adicionalmente si alguien sabe como insertarle un calendario I+!alendarI al aplicativo en las partes
donde se necesita #echa lo agradecer6a mucho ya que trate de insertarlo pero no entend6 nunca por que
me identi#icaba como error, bueno es un detalle mas para me+orar la apariencia del aplicativo.
$l cdigo de cada producto se genera aleatoriamente con el m%todo I7andonI para que no existan
problemas al momento de crear uno manualmente.
-or motivos de tiempo no implemente el botn de Aardex, ademas por #alta de conocimiento en la
parte tem(tica ya que es un tema mas de contabilidad, ya que si alguien podr6a darme ideas de como
implementar un Aardex se podr6a traba+ar en ello.
$n conclusin este es un peque*o aplicativo que desarroll%, con la intencin que sea totalmente
intuitivo para un usuario, con el genial )et.eans 5D$ y lo posteo con la intencin tambien de me+orarlo
y asimismo aprender mas de este programa tan completo e interesante, cualquier aporte al aplicativo,
comentario, cr6tica constructiva y puntos se agradecer(n mucho, saludos.
%uente: http:11EEE.taringa.net1posts1in#o1,<<U=;;=1/o#tEare3de3inventario3desarrollado3en3+ava333)et.eans.html
C+mo .acer cuadros de diHlogo simples
DDttulo e icono por de3ecto
&@ption-ane.shoE:essageDialog>null,I"exto del mensa+e.I?P
DDttulo personaliMado, icono de aviso
&@ption-ane.shoE:essageDialog>null,I"exto del mensa+e.I,I"6tulo del marcoI,
&@ption-ane.GA7)5)RN:$//AR$?P
DDttulo personaliMado, icono de error
&@ption-ane.shoE:essageDialog>null,I"exto del mensa+e.I,I"6tulo del marcoI,
&@ption-ane.$77@7N:$//AR$?P
DDttulo personaliMado, sin icono
&@ption-ane.shoE:essageDialog>null,I"exto del mensa+e.I,I"6tulo del marcoI,
&@ption-ane.-LA5)N:$//AR$?P
0uente: http:11ayuda3+ava.blogspot.com1;<<H1<H1cmo3hacer3cuadros3de3dilogo3simples.html
Uenerar un archivo jar ejecutable
:uchas veces necesitamos crear un archivo que podamos e+ecutar , esto es mas cuando empezamos a
traba+ar con inter#ace gr(#ica y en #in necesitamos crear un e+ecutable. $l propio )et.eans posee una
sencilla #orma de como crear e+ecutables con nuestros proyectos para esto hay que tener en cuenta lo
siguiente:
#!A Al momento de crear nuestro proyecto debemos haber desmarcado las casillas de Create 'ain
Class y set as 'ain 1ro-ect 2
9!A Ahora nos ubicamos en nuestro proyecto , en mi caso ser( este proyecto:
:!A nos vamos a .uild k !lean and .uild :ain -ro+ect
;!A )et.eans nos debe con#irmar que ya se construyo el archivo +ar de nuestra aplicacin con un
mensa+e de BBI?D -BCCE--%B? el cual nos indica que la construccin ha sido exitosa . $s en este
momento que en la carpeta de nuestro proyecto se ha creado una nueva carpeta llamada dist en la cual
esta nuestro archivo +ar:
Ahora cada vez que deseamos e+ecutar nuestro proyecto sin abrir el netbeans solo bastar( con hacer
doble clic en el archivo &A7 y listo.
"ambi%n se puede agregar nuestro arc.ivo J(5 a nuevos proyectos que desarrollemos .
%uente: http:11+avax<H,,.blogspot.com1;<<U1<D1generar3un3archivo3+ar3e+ecutable.html
-a*er cuantas 3ilas tiene un 5esult-et
!reo que no se puede, no me suena al menos. -ero puedes hacer un
7esult/et rsP
..
rs.last>?P
int cuantos O rs.get7oE>?P
en vez de hacer tantos .next>?. "e devolver( el n'mero de la 'ltima #ila, lo que no s% es si tendr(s que
sumarle ,, restarle ,, o quedarte con ese n'mero ya >haz alguna pruebita? para saber cuantas #ilas hay.
%uente: http:11EEE.#orosdelEeb.com1#D=1saber3cuantas3#ilas3tiene3resultset3D;=UH91
INetBeans !S IComo convertir un int a su codigo (-CIIJ
1X
Fola, puedes hacer un casting con >char?
para las conversiones de octal, hexadecima y binario puedes usar la clase 5nteger
"e de+o los e+emplos
X1
public class Main
public static void main(String[]args)
int n , Y\&
S"stem#out#println( (c2ar)n )&
S"stem#out#println( Anteger#to%inar"String(n))&
S"stem#out#println( Anteger#toJe*String(n))&
S"stem#out#println( Anteger#to@ctalString(n))&
(
(
--)l entero n se convierte al caracter ^a^
--Saludos#
%uente: http:11mx.ansEers.yahoo.com1question1indexSqidO;<,,<B,B,=;<=UAAFa9Qp
Tutorial de Java -&ing /##0: J,enuBar, J,enu, J,enuItem!
Lamos a ver ahora una ventana principal &0rame >ventana principal? que contiene un :enu principal
>&:enu.ar? con varias opciones >Archivo, $ditar, Ayuda y /alir?, cada una de las cuales contiene otras
opciones de men' >&:enu5tem? y una barra de progreso >&-rogress.ar?. !olocaremos tambi%n un
componente &"extArea.
La me+or manera de a#rontar este dise*o es crear desde )et.eans un proyecto nuevo siguiendo la
plantilla correspondiente a V-royecto )uevoW, V&avaW y V&ava Des2top AplicationW. >Aplicacin
b(sica?.
/i llamamos al proyecto VAplie+emploW aparecer( un paquete con dicho nombre. $ste paquete contiene
tres componentes +ava: Apli$+emploAbout.ox, Apli$+emploApp, Apli$+emploLieE.
(pliEjemplo(pp
Apli$+emploApp, de#ine una clase llamada igual VApli$+emploAppW que deriva de la clase por
extensin V/ingle0rameApplicationW, de#inida en el paquete org.+des2top.application./ingle0rame3
Application. )tese que la plantilla ha incorporado dos nuevas bibliotecas de clases denominadas
app#rameEor23,.<.B.+ar y sEing3Eor2er3,.,.+ar. /i despliega la primera de ellas, en el paquete
org.+des2top.application encontrar( la de#inicin de la clase V/ingle0rameApplicationW que buscamos.
$sta clase contiene el m%todo est(tico main >m%todo vinculado a la clase y no a sus instancias u
ob+etos? necesario para arrancar, a trav%s de la m(quina virtual de &ava, el proyecto. aQu% hace
exactamente el m%todo mainS. -ues llamar a launch>Apli$+emploApp.class, args?P
$sto crea una instancia de la clase Apli$+emploApp y llama al m%todo startup de la instancia u ob+eto
reci%n creado. $n el m%todo startup tenemos el m%todo shoE>neE Apli$+emploLieE>this??P con esto
instanciamos la clase Apli$+emploLieE y la visualizamos.
(pliEjemploCie&
Apli$+emploLieE es la clase que describe al &0rame o ventana principal. /i desplegamos desde el
V5nspectorW los componentes >tenemos que estar en modo Dise*o? veremos el siguiente (rbol
Lemos pues que el &0rame, contiene
4n panel >&-anel? principal que ocupa todo el &0rame
4n menu principal >&:enu.ar? con dos opciones #ile:enu y help:enu >los dos son
componentes &:enu5tem y los dos tienen a su vez una opcin de men', son los llamados
&:enu5tem?.
4n panel o componente &-anel que a su vez contiene dos etiquetas &Label, un separador
&/eparator y una barra de progreso.
0inalmente, la plantilla ha creado otro &0rame, Apli$+emploAbout.ox, que muestra una ventana con
in#ormacin b(sica de nuestra aplicacin.
$sta inter#az est( compuesta b(sicamente de un componente &Dialog >un tipo especial de ventana? que
a su vez contiene componentes del tipo &.uton y &Label. @bserve que los componentes del tipo &Label
pueden contener textos y1o im(genes. !omo es natural, para una aplicacin particular tendremos que
modi#icar los val<res de estos componentes.
Lamos ahora a singularizar la inter#az (pliEjemploCie&.
La primera tarea que vamos a hacer es particularizar la barra de men', pues deseamos que las
opciones principales del men' principal sean Archivo, $ditar, Ayuda y !errar. -ara ello lo primero
ser( cambiar el texto de la primera opcin V0ileW por VArchivoW. -ara ello seleccionamos el &:enu
correspondiente a 0ile y desde la ca+a de propiedades cambiamos la propiedad VtextW. Despu%s
seleccionamos desde la paleta de men's un componente men' en el men' principal al que le
asignaremos la propiedad VtextW en V$ditarW. Facemos lo mismo con una opcin de V!errarW.
!ambiamos el texto de la opcin VFelpW y #inalmente reorganizamos la opciones. $s decir:
Ahora en la opcin principal VArchivoW queremos que se desplieguen las cuatro opciones
VAbrirW, V/alvarW, V/alvar como`W y V/alirW. -ara ello, insertamos tres elementos de men'
>&:enu5tem? por encima del ya existente. !ambiamos la propiedad VtextW a los textos previstos,
cambiamos las propiedades Vtool"ip"extW a VAbrir archivo nuevoW, V/alvar archivoW, V/alvar con
otro nombreW y V/alir de la aplicacinW respectivamente. 0inalmente, cambiamos las propiedades
VacceleratorW de cada una de las opciones de VArchivoW a trav%s de
de esta manera cambiamos el ata+o de te+ado a !trl8A, !trl8/, !trl8! las tres primeras opciones de
VArchivoW. $s decir:
Lamos #inalmente a colocar un icono en las opciones VAbrirW y V/alvarW. -ara hacer esto lo primero
que tenemos que hacer es localizar la carpeta !:i$+emplos&avaiApli$+emploisrciaplie+emploiresources
>o en su caso, la correspondiente a los recursos del proyecto? y copiar los iconos que representar(n las
dos #unciones. Luego seleccionando el elemento de men' VAbrirW y desde la ca+a de propiedades
seleccionamos la propiedad ViconW y seleccionamos #inalmente el archivo, es decir:
0inalmente,
0uente: http:11+tagua.Eordpress.com1;<,<1<U1;D1tutorial3de3+ava3sEing3,,3+menubar3+menu3+menuitem3+progressbar3+textarea1
I?lamar J%rame dede Bn j,enuItem NETBE(N-J
-ues en el evento onclic2 del menu, lo puedes hacer tansolamente debes, si estas traba+ando desde el
editor de #ormularios del netbeans, hacer cli2 derecho3Ceventos3Cmouse clic2ed te parecera el metodo
que te captara el evento clic2 >tambien se lo puede hacer desde el evento action? luego llamas a tu
#ormulario instanciandolo
0ormualrio #ormOneE 0ormulario>?P
#orm.setLisible>true?P
y listo con esto tendria que andar
ha y tambien tendrias que tener en cuenta, si los #ormualrios estan en modal o no, siempre la ventana
principal tiene que ser un +#rame y la que despues se abren tienen que ser +dialog, y a estas se la pueden
poner como modal o no...saludos
%uente: http:11es.ansEers.yahoo.com1question1indexSqidO;<,,<;<,<U=9,QAA,HlcU
JCom*oBo) Con 8*jetos y Base de Datos ,y->?
public BectorVClase@bjetoParaCombo%o*X 4ista;e@bjetosParaCombo%o*()
Connection cone*ion&
cone*ion , Cone*ion%;#obtenerCone*ion()&
tr"
=esultSet resultado&
Statement sentencia&
sentencia,cone*ion#createStatement()&
resultado,sentencia#e*ecute3uer"($S)4)C5 . 6=@M @bjetoParaCombo%o*$)&
BectorVClase@bjetoParaCombo%o*X data,ne/ BectorVClase@bjetoParaCombo%o*X()&
i0(resultado#ne*t())
do
Clase@bjetoParaCombo%o* o4ista5emporal , ne/
Clase@bjetoParaCombo%o*(resultado#getAnt(1)<resultado#getString(!))&
data#add)lement(o4ista5emporal)&
(
/2ile(resultado#ne*t())&
return data&
(
else
return null&
(
( catc2()*ception e*)
S"stem#out#print(e*)&
return null&
(
(
%uente: http:11chuEi2i.chuidiang.org1index.phpStitleO&!ombo.oxN!onN@b+etosNyN.aseNdeNDatosN:y/QL
Ejecutar ->? en Java
$n esta ocasin veremos como e+ecutar sentencias /QL en &ava, tomando en cuenta la conexin que
realizamos a la base de datos anteriormente.
-ara este e+emplo uso una tabla llamada VusuariosW, la cual tiene 'nicamente B campos: id>autoinc?,
nombre y contrase*a
$l cdigo de la clase es el siguiente:
import java#s:l#.&
public class Cone*ion
private String user&
private String pass/ord&
private String db&
private String 2ost&
private String url&
private Connection conn , null&
private Statement stm&
private =esultSet rs&
public Cone*ion(String usuario< String contraseLa< String bd< String servidor)
t2is#user , usuario&
t2is#pass/ord , contraseLa&
t2is#db , bd&
t2is#2ost , servidor&
t2is#url , $jdbc:m"s:l:--$ P t2is#2ost P $-$ P t2is#db&
(
public void conectar()
tr"
Class#0orName($org#gjt#mm#m"s:l#;river$)&
conn , ;riverManager#getConnection(url< user< pass/ord)&
i0 (conn E, null)
S"stem#out#println(rs#getString($nombre$))&
S"stem#out#println(rs#getString($contraseLa$))&
(
(
public void actualiMar() t2ro/s S34)*ception
t2is#user , usuario&
t2is#pass/ord , contraseLa&
t2is#db , bd&
t2is#2ost , server&
t2is#url , _jdbc:m"s:l:--` P t2is#2ost P _-` P t2is#db&
(
public void connectar!
tr"
Class#0orName(_org#gjt#mm#m"s:l#;river`)&
conn , ;riverManager#getConnection(url< user< pass/ord)&
i0 (conn E, null)
tr"
stm#e*ecute(_ANS)=5 AN5@ usuarios (nombre< contraseLa) BD4C)S (c` P
usuario#get(_nombre`) P _c<Q` P usuario#get(_contraseLa`) P _c)`)&
(catc2 (S34)*ception e*)
S"stem#out#println(e*)&
(
(
public void actuali+arStrin" tabla# &ashtable usuario# Strin" nombre!
tr"
stm#e*ecute(_CP;D5) ` P tabla P ` S)5 nombre,Q` P usuario#get(_nombre`) P _c HJ)=)
nombre,Q` P nombre P _c`)&
(catc2 (S34)*ception e*)
S"stem#out#println(e*)&
(
(
public void eliminarStrin" tabla# Strin" nombre!
tr"
stm#e*ecute(_;)4)5) 6=@M ` P tabla P ` HJ)=) nombre,Q` P nombre P _c`)&
(catc2 (S34)*ception e*)
S"stem#out#println(e*)&
(
(
(
!omo podemos observar, esta clase cuenta con sobrecarga de constructores lo cual nos permite
conectarnos de ; maneras distintas a la base de datos. La primera es utilizar el constructor que no
recibe ning'n par(metro y de#inirlos mediante los m%todos set y get para despu%s llamar al m%todo
conectar. La segunda es enviarle directamente los valores al constructor y, al igual que en la #orma
anterior, e+ecutar el m%todo conectar, y esta ser( la #orma que usaremos para nuestro e+emplo.
-rimero que nada vamos a conectarnos a nuestra base de datos y realizaremos una consulta de todos
los registros:
S34connection con , ne/ S34connection(_local2ost`<_usuario`<_contraseLa`<_prueba`)&
con#connectar()&
=esultSet rs&
rs , con#consultar(_usuarios`)&
/2ile(rs#ne*t())
S"stem#out#println(rs#getString(1))&
S"stem#out#println(rs#getString(!))&
S"stem#out#println(rs#getString('))&
(
$n esta clase tambi%n implementamos una opcin que nos permite realizar b'squedas por medio de
nombres>es el campo de la base de datos que eleg6 para este e+emplo?P ha este m%todo le mandamos ;
par(metros, que son la base de datos y el nombre:
S"stem#out#println(con#buscarNombre(_usuarios`< _0rago`))&
-ara insertar un nuevo registro vamos a hacer uso del Fastable para enviarle los valores que queremos
agregar:
Jas2table usuario , ne/ Jas2table()&
usuario#put(_nombre`<_0rago`)&
usuario#put(_contraseLa`<_***`)&
con#insertar(usuario)&
-ara eliminar un registro simplemente le e+ecutamos el m%todo correspondiente y le pasamos como
parametros la tabla y el nomrbe del usuario a eliminar:
con#eliminar(tabla< _0rago`)&
-ara actualiMar un registro le tenemos que pasar B par(metros al m%todo. $L primero es el nombre de
la tablaP el segundo es un Fastable en el que se incluya la modi#icacin que se quiere realizar y el tercer
es, en este caso, el nombre de la persona a la que se le va realizar la modi#icacin:
Jas2table usuario , ne/ Jas2table()&
usuario#put(_nombre`< _0rago1a)&
con#actualiMar(tabla< usuario< _0rago`)&
0uente: http:11#ragoEb.Eordpress.com1;<<Q1<H1;;1e+emplo3de3+ava3sql3netbeans1
C8NECT(5 ,W->? ( J(C( /Net*eans0
!onocemos la #orma de conectar mysql o alguna base de datos como lo es /ql /erver, @racle,
-osgre/QL a +ava perousando lis drivers:anager una #orma visual muy practica pero muy comple+a a
la hora de mandar la aplicacion a alguna otra computadora, para olvidarnos de esto y no tener un
desorden de codi#icaciones visuales en el #orm crearemos una clase de conexcion, en ella realizaremos
un metodos para la conexion y otros dos para hacer las consultas y operaciones de insert y update a la
base de datos.
?a Clase
-ara crear la clase de conexion en nuestra solucion damos clic en el boton de Agregar Archivo, o nos
vamos a archivo una vez que nos aparesca la ventana de nuevo archivo esco+emos la carpeta de !lases
&ava y el tipo de archivo !lase &ava, una vez que nos ha creado la , empezamos bueno de esta seccion,
la codi#icacion.
Codi3icacion:
$mpezamos anexando la siguiente directiva que utilizaremos +ava.sql.X, esto nos permitira utilizar
todos los componentes para la creacion de la conexion y otros metodos que utilizemos
$+emplo:
&mport 8aa1sql19
:etodo de conexion , para el metodo de conexcion para ello utilizaremos los siguientes componentes:
!onnection, /tatement y 7esult/et, a continuacion generamos el metodo o en este caso el constructor
de la clase.
p&'li% Conexion() {
tr/
{
Cl"ss.$or!"me(0%om.m/s1l.jd'%.2rier3);
String &rl = 0jd'%(m/s1l(**lo%"lhost(3345*'dpr&e'r"sj""3;
%n= 2rier6"n"ger.getConne%tion( &rl7 0root37 0+234#58 );
.
%"t%h(Ex%eption ee)
{
S/stem.o&t.println(0Error( 3 ) ee.get6ess"ge());
.
.
/i se observa detenidamente, se utiliza una variable string denominada url, que sera la direccion de
nuestra base de datos, la primera linea nos crea la in#ormacion del driver de conexion y por ultimo se
genera dicha conexion usando la variable VcnW y asignandole los parametros de ruta de la base de
datos,usuario y contrase*a.
'etodos Au/iliares
*continuacion crearemos los metodos para generar los insert/ update y deletes de los registros de la
base de datos1
p&'li% String Eje%&t"r(String s1l)
{
String error=3";
Tr/
{
St=Cone%.%re"teSt"tement();
St.exe%&te(s1l);
.
%"t%h(Ex%eption ex)
{
error = ex.get6ess"ge();
.
ret&rn(error);
.
$l /t es nuestro /tatemen el cual generara el comando de e+ecucion, para ello todo este comando lo
mandamos en el parametro sql, la #uncion es de tipo string, por ello se regresa la variable de tipo string
error la cual contendra el error que pueda optenerce en el proceso de insert o update,o en su caso no
traer nada debido a que la accion #ue exitosa.
-or ultimo creamos el metodo para e+ecutar consultas para ello utilizaremos un componente llamado
7esult/et.
p&'li% 9es<Set Cons<"(String s1l){
String error=3";
Tr/
{
St=Cone%.%re"teSt"tement();
reg=St.exe%&te:&er/(s1l);
.
%"t%h(Ex%eption ee)
{
error = ee.get6ess"ge();
.
ret&rn(reg);
.
Dentro de esta #uncion volvemos a encontrar a nuestro /tatement por lo anteriormente mencionado sera
nuestro e+ecutor de comandos del parametro sql el cual tendra como valor la consulta que deseamos
e+ecutar.
Conclusion:
"odas la variables de conexion >cn?, /tatement >/t? y 7esult/et>reg? #ueron declaradas #uera de todos
los metodos, es decir son globales y pueden verse en toda la clase no importa en que proceso lo
utilizemos, y para saldar la duda, anteriormente di+e que todos estos son metodos, asi es pero por que
e+ecutar y consulta los llame #unciones, es sencillo recordemos algo de teoria, toda #uncion retorna un
valor es por ello que se le llama #unciones a e+ecutar y a consulta por que regresan el valor de la
variable error y reg respectivamente.
Bso
-ara terminar esta entrada, les de+o la #orma de utilizar esta clase.
**;nst"n%i"mos l" %l"se de %onexion
Conexion %xn = ne- Conex%ion();
**<ener"mos &n insert en l" t"'l" de %lientes &s"ndo el metodo eje%&t"r de l"
%l"se %onexi=n
string msg =
%xn.Eje%&t"r(0;!SE9T ;!T> tpj%lientes (nom're7"pellidos) ?@ABES (CD&"nE7F,ereGE);
**<ener"mos &n sele%t " l" t"'l" de %lientes7 el res<"do %"er" en res<set
9es<Set = %xn.Cons<"(0SEAECT H F9>6 tpj%lientes3);
N8T( I,'85T(NTE: Las #unciones o metodos utilizados, regresan un tipo de datos o componente
especi#ico, es por ello que en e+ecutar el resultado lo guardo en eun string y en consulta lo guardo en n
7esult/et, ademas hay que resaltar algo, +ava obliga a los usuarioa utilizar el clasico catch y try para
mane+ar correctamente las exepciones que puedan existir dentro de la llamada al metodo, eso es todo
por el dia de hoy espero les sea de gran utilidad este codigo, de+en sus comentarion y1o sugerencias de
que desean ver sobre tecnologia en el blog.
0uente: http:11+hodric2gg.Eordpress.com1;<<H1,,1B<1conectar3mysql3a3+ava3netbeans1
Conectando 'ostgre->? con Java
$n este mini tutorial intentar% explicar la manera en conectar nuestra aplicacin hecha en &ALA con la
.ase de Datos de -ostgre/QL.
-rimero, es necesario descargarse el &D.! Driver para -ostgre/QL. $ste se encuentra en la p(gina
http:11+dbc.postgresql.org1index.html @bviamente, ser( necesario contar con nuestra .ase de Datos
#uncionando para realizar las consultas necesarias.
-osteriormente hay que determinar la manera de agregar este Driver a nuestro proyecto. )et.eans
o#rece una manera mas que sencilla.
!onociendo la ubicacin de nuestro Driver y con el proyecto abierto, en el -anel de -royectos,
ubicamos en el mrbol de -royecto la opcin Libraries, clic Derecho en ella y seleccionamos Add &A7 1
0older..., de esta manera estaremos
agregando e+ .&A7 del Driver que descargamos. $sto nos crea en nuestro proyecto una carpeta llamada
IdistI y en ella otra de nombre IlibI donde esta nuestro Driver.
Ahora, teniendo lo necesario, podemos probar nuestra conexin con -ostgre/QL y realizar lo que nos
concierne, Altas, .a+as y :odi#icaciones a nuestras tablas.
-ara empezar, debemos de importar lo siguiente:
import java#s:l#.&
!abe mencionar que hay una gran di#erencia entre /elect y 4pdate, 5nsert o Delete, ya que no se
aplican de igual manera. A continuacin muestro el proceso para realizar un /elect >en idioma gee2,
vamos a selectear?
public class Main
public static void main(String[] args)
DXCaria*le para almacenar la B5? de cone)i+n a nuestra Base de Datos, si esta estuviera en otra
mH1uina, necesitariamos estar registrados en ella y contar con su I'XD
String url , $jdbc:postgres:l:--local2ost-moo$&
tr"
DD(cceso al Driver
Class#0orName($org#postgres:l#;river$)&
DD?a cone)i+n con los parHmetros necesarios
Connection con , ;riverManager#getConnection( url<$postgres$<$postgres$)&
DD(*rimos la cone)i+n y la iniciamos
Statement stmt , con#createStatement()&
DXBn 5esult-et es como en !NET un Data-et, un arreglo temporal donde se almacenarH el
resultado de la consulta ->?XD
=esultSet rs&
DDBna varia*le -tring para almacenar la sentencia ->?
String :uer" , $select id as A; 0rom moo#usuarios$&
DDEn el 5esult-et guardamos el resultado de ejecutar la consulta
rs , stmt#e*ecute3uer"(:uer")&
DDEn un ciclo &.ile recorremos cada 3ila del resultado de nuestro -elect
/2ile ( rs#ne*t())
DX(1ui practicamente podemos .acer lo 1ue deseemos con el resultado, en mi caso solo lo mande
a imprimirXD
S"stem#out#println(rs#getString($A;$) P $ $ P rs#getString($A;$))&
(
DDCerramos la cone)i+n
stmt#e*ecute($)N;$)&
stmt#close()&
con#close()&
(
catc2( )*ception e )
DD'or si ocurre un error
S"stem#out#println(e#getMessage())&
e#printStack5race()&
(
(
(
'ara realiMar todo a1uello di3erente a un -elect, utilMaremos lo siguiente:
DXCaria*le para almacenar la B5? de cone)i+n a nuestra Base de Datos, si esta estuviera en otra
mH1uina, necesitariamos estar registrados en ella y contar con su I'XD
String url , $jdbc:postgres:l:--local2ost-moo$&
tr"
DD(cceso al Driver
Class#0orName($org#postgres:l#;river$)&
DD?a cone)i+n con los parHmetros necesarios
Connection con , ;riverManager#getConnection( url<$postgres$<$postgres$)&
DD(*rimos la cone)i+n y la iniciamos
Statement stmt , con#createStatement()&
DDBna varia*le -tring para almacenar la sentencia ->?
String :uer" , $update moo#usuarios set nombre , ^Mauricio^ /2ere id ,
^1^$&
DDEjecutamos la consulta ->?
stmt#e*ecute3uer"(:uer")&
DDCerramos la cone)i+n
stmt#e*ecute($)N;$)&
stmt#close()&
con#close()&
(
catc2( )*ception e )
DD'or si ocurre un error
/ystem.out.println>e.get:essage>??P
e.print/tac2"race>?P
Z
$s muy importante tener en cuenta que si este m%todo lo utilizas en una #uncin para hacerla llamar
cuando lo necesites, y quieras enviarle tanto argumentos como retornar resultados, en la #uncin de
/elect las l6neas siguientes )@ deben de estar presentes:
stmt#e*ecute($)N;$)&
stmt#close()&
en la parte de 4pdate, 5nsert o Delete, solo la siguiente l6nea:
stmt#e*ecute($)N;$)&
$spero que sea 'til esta in#ormacin.
0uente: http:11mygnet.net1articulos1+ava1conectandoNpostgresqlNconN+ava.,,9;
5esult-et Y JTa*le
.asado en el tutorial :eter un 7esult/et en un &"able veremos muy brevemente como hacerlo,
destacando las principales l6neas del cdigo.
$n primera instancia nos conectamos a la .D y e+ecutamos la consulta /QL que nos llenar( el
7esult/et
Driver,anager#register;river(new com#m"s:l#jdbc#Driver())&
**9eempl"G"r lo%"lhost7 pr&e'"7 &s&"rio / %l"e por los host de l" '"se de d"tos7
nom're de es1&em"7 &ser / p"ss.
Connection conexion O
Driver,anager.get!onnection>I+dbc:mysql:11localhost1pruebaI,IusuarioI,IclaveI?P
-tatement s O conexion.createn>?P
5esult-et rs O s.executeQuery>Iselect X #rom personaI?P
!rear un &"able, pasando como par(metro un De#ault"able:odel
De3aultTa*le,odel modelo , new De3aultTa*le,odel()&
JTa*le tabla , new JTa*le(modelo)&
)os queda resolver como llenar el De#ault"able:odel. .(sicamente, la #orma es esta:
** Cre"mos l"s %ol&mn"s.
modelo#addColumn($id$)&
modelo#addColumn($nombre$)&
modelo.add!olumn>InacimientoI?P
:: $ucle para cada resultado en la consulta
Ehile >rs.next>?? Y
:: 6e crea un array que ser una de las .ilas de la tabla1
,bject [\ #ila O ne& ,bject[B\P :: ;ay tres columnas en la tabla
** Se rellen" %"d" posi%i=n del "rr"/ %on &n" de l"s %ol&mn"s de l" t"'l" en
'"se de d"tos.
0or (int i,8&iV'&iPP)
#ila[i\ O rs.get@b+ect>i8,?P 11 $l primer indice en rs es el ,, no el cero, por eso se suma ,.
11 /e a*ade al modelo la #ila completa.
modelo.add7oE>#ila?P
Z
4na alternativa propuesta en el tutorial es crear una clase !onversor7esult/etADe#ault"able:odel
>puedes optar por un nombre m(s corto? que haciendo uso del atributo 7esult/et:etaData del
7esult/et pueda obtener la metadata de las columnas seleccionadas. De esta #orma, nos
independizamos de la consulta que se realice y el n'mero de #ilas y columnas devueltas.
%uente: http:11luau#.com1;<<Q1<D1;B1resultset3+table1
?lamar 8tro J%rame
-ara llamar a un &#rame desde un boton, ya sea, situado en la pantalla principal o no, solo debes escribir
el siguiente codigo en el evento del boton que deseas:
6rame! dg,ne/ 6rame!()&
;imension dlgSiMe,dg#getPre0erredSiMe()&
;imension pantalla,getSiMe()&
;imension ventana,dg#getSiMe()&
dg#set4ocation((pantalla#/idt2Ndg#HA;5J)-!<(pantalla#2eig2tNdg#J)AUJ5)-!)&
dg#set4ocation=elative5o(null)&--Centra el segundo 0rame en la pantalla
dg#pack()&
dg#set=esiMable(true)&--Permite redimensionarlo o agrandarlo
dg#setBisible(true)&--)sto 2ace :ue se vea el segundo j0rame
%uente: http:11EEE.laEebdelprogramador.com1#oros1&.uilder1HBQB<=3LlamarN@troN&0rameNNN.html
,andar llamar a otra ventana desde un *oton utiliMando NetBeans!
/aludos compa*eros , en la universidad apenas comienzo a ver +ava, y no hemos visto mucho sobre
este lengua+e.
:e impuse un peque*o reto el cual consiste en conectar el programa creado en )et.eans a una base de
datos creada en :y/QL, la conexion #ue correcta y despues de leer y moverle por un rato pude lograr
insertar datos a la base desde el propio programa en netbeans.
Ahora lo que quiero hacer es crear otras tablas en la base y obvio desde el programa meter los datos >lo
cual ya se hacer?, la cosa aqui es no se como hacerle para cuando yo le de clic a al boton de I:aestrosI
por e+emplo me aparezca la ventana para desde ahi insertar los datos.
@sea lo que quiero es que cuando yo le de clic a M boton me aparezca la otra ventana para insertar los
datos.
$l code es el siguiente:
!digo -F-:
-.
. alumnos#java
.
. Created on Z de marMo de !818< 8Y:+! DM
.-
package desktopapplication1&
import java#s:l#.&
import java*#s/ing#G@ptionPane&
-..
.
. Faut2or D4CMN@
.-
public class alumnos e*tends java*#s/ing#G6rame
private Connection conn&
private Statement sentencia&
private =esultSet res&
-.. Creates ne/ 0orm alumnos .-
public alumnos()
initComponents()&
tr"
Class#0orName($org#gjt#mm#m"s:l#;river$)&
onn,;riverManager#getConnection($jdbc:m"s:l:--local2ost-control?escolar$<$root$<$ro
ot$)&
sentencia,conn#createStatement()&
G@ptionPane#s2o/Message;ialog(t2is<$4a cone*ion 0ue correcta$)&
(catc2()*ception e)
G@ptionPane#s2o/Message;ialog(t2is<e#getMessage())&
(
(
-.. 52is met2od is called 0rom /it2in t2e constructor to
. initialiMe t2e 0orm#
. HD=NANU: ;o N@5 modi0" t2is code# 52e content o0 t2is met2od is
. al/a"s regenerated b" t2e 6orm )ditor#
.-
FSuppressHarnings($unc2ecked$)
-- VeditorN0old de0aultstate,$collapsed$ desc,$Uenerated Code$X
private void initComponents()
j%utton1 , ne/ java*#s/ing#G%utton()&
j5e*t6ield1 , ne/ java*#s/ing#G5e*t6ield()&
j5e*t6ield! , ne/ java*#s/ing#G5e*t6ield()&
j5e*t6ield' , ne/ java*#s/ing#G5e*t6ield()&
j5e*t6ield7 , ne/ java*#s/ing#G5e*t6ield()&
j4abel1 , ne/ java*#s/ing#G4abel()&
j4abel! , ne/ java*#s/ing#G4abel()&
j4abel' , ne/ java*#s/ing#G4abel()&
j4abel7 , ne/ java*#s/ing#G4abel()&
j4abel+ , ne/ java*#s/ing#G4abel()&
j4abel9 , ne/ java*#s/ing#G4abel()&
j5e*t6ield+ , ne/ java*#s/ing#G5e*t6ield()&
j5e*t6ield9 , ne/ java*#s/ing#G5e*t6ield()&
j%utton! , ne/ java*#s/ing#G%utton()&
j%utton' , ne/ java*#s/ing#G%utton()&
j%utton7 , ne/ java*#s/ing#G%utton()&
set;e0aultClose@peration(java*#s/ing#Hindo/Constants#)KA5?@N?C4@S))&
setName($6orm$)& -- N@A1ZN
org#jdesktop#application#=esourceMap resourceMap ,
org#jdesktop#application#Dpplication#getAnstance(desktopapplication1#;esktopDpplica
tion1#class)#getConte*t()#get=esourceMap(alumnos#class)&
j%utton1#set5e*t(resourceMap#getString($btn?prim#te*t$))& -- N@A1ZN
j%utton1#setName($btn?prim$)& -- N@A1ZN
j%utton1#addDction4istener(ne/ java#a/t#event#Dction4istener()
public void actionPer0ormed(java#a/t#event#Dction)vent evt)
j%utton1DctionPer0ormed(evt)&
(
()&
j5e*t6ield1#set5e*t(resourceMap#getString($Ad?t*t#te*t$))& -- N@A1ZN
j5e*t6ield1#setName($Ad?t*t$)& -- N@A1ZN
j5e*t6ield!#set5e*t(resourceMap#getString($j5e*t6ield!#te*t$))& -- N@A1ZN
j5e*t6ield!#setName($j5e*t6ield!$)& -- N@A1ZN
j5e*t6ield'#set5e*t(resourceMap#getString($j5e*t6ield'#te*t$))& -- N@A1ZN
j5e*t6ield'#setName($j5e*t6ield'$)& -- N@A1ZN
j5e*t6ield7#set5e*t(resourceMap#getString($j5e*t6ield7#te*t$))& -- N@A1ZN
j5e*t6ield7#setName($j5e*t6ield7$)& -- N@A1ZN
j4abel1#set5e*t(resourceMap#getString($j4abel1#te*t$))& -- N@A1ZN
j4abel1#setName($j4abel1$)& -- N@A1ZN
j4abel!#set5e*t(resourceMap#getString($j4abel!#te*t$))& -- N@A1ZN
j4abel!#setName($j4abel!$)& -- N@A1ZN
j4abel'#set5e*t(resourceMap#getString($j4abel'#te*t$))& -- N@A1ZN
j4abel'#setName($j4abel'$)& -- N@A1ZN
j4abel7#set5e*t(resourceMap#getString($j4abel7#te*t$))& -- N@A1ZN
j4abel7#setName($j4abel7$)& -- N@A1ZN
j4abel+#set5e*t(resourceMap#getString($j4abel+#te*t$))& -- N@A1ZN
j4abel+#setName($j4abel+$)& -- N@A1ZN
j4abel9#set5e*t(resourceMap#getString($j4abel9#te*t$))& -- N@A1ZN
j4abel9#setName($j4abel9$)& -- N@A1ZN
j5e*t6ield+#set5e*t(resourceMap#getString($j5e*t6ield+#te*t$))& -- N@A1ZN
j5e*t6ield+#setName($j5e*t6ield+$)& -- N@A1ZN
j5e*t6ield9#set5e*t(resourceMap#getString($j5e*t6ield9#te*t$))& -- N@A1ZN
j5e*t6ield9#setName($j5e*t6ield9$)& -- N@A1ZN
j%utton!#set5e*t(resourceMap#getString($j%utton!#te*t$))& -- N@A1ZN
j%utton!#setName($j%utton!$)& -- N@A1ZN
j%utton!#addDction4istener(ne/ java#a/t#event#Dction4istener()
public void actionPer0ormed(java#a/t#event#Dction)vent evt)
j%utton!DctionPer0ormed(evt)&
(
()&
j%utton'#set5e*t(resourceMap#getString($j%utton'#te*t$))& -- N@A1ZN
j%utton'#setName($j%utton'$)& -- N@A1ZN
j%utton'#addDction4istener(ne/ java#a/t#event#Dction4istener()
public void actionPer0ormed(java#a/t#event#Dction)vent evt)
j%utton'DctionPer0ormed(evt)&
(
()&
j%utton7#set5e*t(resourceMap#getString($j%utton7#te*t$))& -- N@A1ZN
j%utton7#setName($j%utton7$)& -- N@A1ZN
j%utton7#addDction4istener(ne/ java#a/t#event#Dction4istener()
public void actionPer0ormed(java#a/t#event#Dction)vent evt)
j%utton7DctionPer0ormed(evt)&
(
()&
java*#s/ing#Uroup4a"out la"out , ne/
java*#s/ing#Uroup4a"out(getContentPane())&
getContentPane()#set4a"out(la"out)&
la"out#setJoriMontalUroup(
la"out#createParallelUroup(java*#s/ing#Uroup4a"out#Dlignment#4)D;ANU)
#addUroup(la"out#createSe:uentialUroup()
#addContainerUap()
#addUroup(la"out#createParallelUroup(java*#s/ing#Uroup4a"out#Dlignment#4)D;ANU)
#addComponent(j4abel1< java*#s/ing#Uroup4a"out#P=)6)==);?SAT)<
+'< java*#s/ing#Uroup4a"out#P=)6)==);?SAT))
#addComponent(j4abel!)
#addComponent(j4abel7)
#addComponent(j4abel')
#addComponent(j4abel+)
#addComponent(j4abel9))
#addUap(!'< !'< !')
#addUroup(la"out#createParallelUroup(java*#s/ing#Uroup4a"out#Dlignment#4)D;ANU<
0alse)
#addComponent(j5e*t6ield9)
#addComponent(j5e*t6ield+)
#addComponent(j5e*t6ield7)
#addComponent(j5e*t6ield!<
java*#s/ing#Uroup4a"out#;)6DC45?SAT)< 1\!< S2ort#MDK?BD4C))
#addComponent(j5e*t6ield')
#addComponent(j5e*t6ield1))
#addUap('!< '!< '!)
#addUroup(la"out#createParallelUroup(java*#s/ing#Uroup4a"out#Dlignment#4)D;ANU)
#addComponent(j%utton!)
#addComponent(j%utton')
#addComponent(j%utton1)
#addComponent(j%utton7))
#addContainerUap(''< S2ort#MDK?BD4C)))
)&
la"out#setBerticalUroup(
la"out#createParallelUroup(java*#s/ing#Uroup4a"out#Dlignment#4)D;ANU)
#addUroup(la"out#createSe:uentialUroup()
#addUroup(la"out#createParallelUroup(java*#s/ing#Uroup4a"out#Dlignment#4)D;ANU)
#addUroup(la"out#createSe:uentialUroup()
#addUap(!Z< !Z< !Z)
#addUroup(la"out#createParallelUroup(java*#s/ing#Uroup4a"out#Dlignment#%DS)4AN))
#addComponent(j5e*t6ield1<
java*#s/ing#Uroup4a"out#P=)6)==);?SAT)< java*#s/ing#Uroup4a"out#;)6DC45?SAT)<
java*#s/ing#Uroup4a"out#P=)6)==);?SAT))
#addComponent(j4abel1)))
#addUroup(la"out#createSe:uentialUroup()
#addContainerUap()
#addComponent(j%utton7)))
#addUap(1Z< 1Z< 1Z)
#addUroup(la"out#createParallelUroup(java*#s/ing#Uroup4a"out#Dlignment#%DS)4AN))
#addComponent(j5e*t6ield!<
java*#s/ing#Uroup4a"out#P=)6)==);?SAT)< java*#s/ing#Uroup4a"out#;)6DC45?SAT)<
java*#s/ing#Uroup4a"out#P=)6)==);?SAT))
#addComponent(j4abel!)
#addComponent(j%utton1))
#addUroup(la"out#createParallelUroup(java*#s/ing#Uroup4a"out#Dlignment#4)D;ANU)
#addUroup(la"out#createSe:uentialUroup()
#addUap(1Z< 1Z< 1Z)
#addUroup(la"out#createParallelUroup(java*#s/ing#Uroup4a"out#Dlignment#%DS)4AN))
#addComponent(j5e*t6ield'<
java*#s/ing#Uroup4a"out#P=)6)==);?SAT)< java*#s/ing#Uroup4a"out#;)6DC45?SAT)<
java*#s/ing#Uroup4a"out#P=)6)==);?SAT))
#addComponent(j4abel7))
#addUap(1Z< 1Z< 1Z)
#addUroup(la"out#createParallelUroup(java*#s/ing#Uroup4a"out#Dlignment#%DS)4AN))
#addComponent(j5e*t6ield7<
java*#s/ing#Uroup4a"out#P=)6)==);?SAT)< java*#s/ing#Uroup4a"out#;)6DC45?SAT)<
java*#s/ing#Uroup4a"out#P=)6)==);?SAT))
#addComponent(j4abel'))
#addUap(1Z< 1Z< 1Z)
#addUroup(la"out#createParallelUroup(java*#s/ing#Uroup4a"out#Dlignment#%DS)4AN))
#addComponent(j4abel+)
#addComponent(j5e*t6ield+<
java*#s/ing#Uroup4a"out#P=)6)==);?SAT)< java*#s/ing#Uroup4a"out#;)6DC45?SAT)<
java*#s/ing#Uroup4a"out#P=)6)==);?SAT))
#addComponent(j%utton'))
#addUap(1Z< 1Z< 1Z)
#addUroup(la"out#createParallelUroup(java*#s/ing#Uroup4a"out#Dlignment#%DS)4AN))
#addComponent(j4abel9)
#addComponent(j5e*t6ield9<
java*#s/ing#Uroup4a"out#P=)6)==);?SAT)< java*#s/ing#Uroup4a"out#;)6DC45?SAT)<
java*#s/ing#Uroup4a"out#P=)6)==);?SAT))))
#addUroup(la"out#createSe:uentialUroup()
#addUap('9< '9< '9)
#addComponent(j%utton!)))
#addContainerUap(+9< S2ort#MDK?BD4C)))
)&
pack()&
(-- V-editorN0oldX
private void j%utton1DctionPer0ormed(java#a/t#event#Dction)vent evt)
-- 5@;@ add "our 2andling code 2ere:
tr"
Class#0orName($org#gjt#mm#m"s:l#;river$)&
conn,;riverManager#getConnection($jdbc:m"s:l:--local2ost-control?escolar$<$root$<$r
oot$)&
sentencia,conn#createStatement()&
res,sentencia#e*ecute3uer"($S)4)C5 . 6=@M estudiantes$)&
res#0irst()&
j5e*t6ield1#set5e*t(res#getString(1))&
j5e*t6ield!#set5e*t(res#getString(!))&
j5e*t6ield'#set5e*t(res#getString('))&
j5e*t6ield7#set5e*t(res#getString(7))&
j5e*t6ield+#set5e*t(res#getString(+))&
j5e*t6ield9#set5e*t(res#getString(9))&
(
catc2()*ception e)
G@ptionPane#s2o/Message;ialog(t2is<e#getMessage())&
(
(
private void j%utton!DctionPer0ormed(java#a/t#event#Dction)vent evt)
tr"
String Matricula,($8$)&
String Nombre?)studiante,j5e*t6ield!#get5e*t()&
String )dad,j5e*t6ield'#get5e*t()&
String Se*o,j5e*t6ield7#get5e*t()&
String 5ele0ono,j5e*t6ield+#get5e*t()&
String ;ireccion,j5e*t6ield9#get5e*t()&
j5e*t6ield1#set5e*t($$)&
j5e*t6ield!#set5e*t($$)&
j5e*t6ield'#set5e*t($$)&
j5e*t6ield7#set5e*t($$)&
j5e*t6ield+#set5e*t($$)&
j5e*t6ield9#set5e*t($$)&
sentencia#e*ecuteCpdate($ANS)=5 AN5@ estudiantes BD4C)S
(^$PMatriculaP$^<^$PNombre?)studianteP$^<^$P)dadP$^<^$PSe*oP$^<^$P5ele0onoP$^<^$P;i
reccionP$^ )$)&
(
catc2()*ception e)
G@ptionPane#s2o/Message;ialog(t2is<e#getMessage())&
(
(
private void j%utton'DctionPer0ormed(java#a/t#event#Dction)vent evt)
String Nombre?)studiante,j5e*t6ield!#get5e*t()&
tr"
sentencia#e*ecuteCpdate($;)4)5) 0rom estudiantes /2ere
Nombre?)studiante,^$PNombre?)studianteP$^$)&
(
catc2()*ception e)
G@ptionPane#s2o/Message;ialog(t2is<e#getMessage())&
(
(
private void j%utton7DctionPer0ormed(java#a/t#event#Dction)vent evt)
(
-..
. Fparam args t2e command line arguments
.-
public static void main(String args[])
java#a/t#)vent3ueue#invoke4ater(ne/ =unnable()
public void run()
ne/ alumnos()#setBisible(true)&
(
()&
(
-- Bariables declaration N do not modi0"
private java*#s/ing#G%utton j%utton1&
private java*#s/ing#G%utton j%utton!&
private java*#s/ing#G%utton j%utton'&
private java*#s/ing#G%utton j%utton7&
private java*#s/ing#G4abel j4abel1&
private java*#s/ing#G4abel j4abel!&
private java*#s/ing#G4abel j4abel'&
private java*#s/ing#G4abel j4abel7&
private java*#s/ing#G4abel j4abel+&
private java*#s/ing#G4abel j4abel9&
private java*#s/ing#G5e*t6ield j5e*t6ield1&
private java*#s/ing#G5e*t6ield j5e*t6ield!&
private java*#s/ing#G5e*t6ield j5e*t6ield'&
private java*#s/ing#G5e*t6ield j5e*t6ield7&
private java*#s/ing#G5e*t6ield j5e*t6ield+&
private java*#s/ing#G5e*t6ield j5e*t6ield9&
-- )nd o0 variables declaration
(
%uente: http:11#orode+ava.com1shoEthread.php1;B,B3:andar3llamar3a3otra3ventana3desde3un3boton3
utilizando3)et.eans#
TamaQo del resultset
Statement stmt , connection#createStatement(
=esultSet#5>P)?SC=@44?ANS)NSA5AB)<=esultSet#C@NCC= ?=)D;?@N4>)&
=esultSet resultSet , stmt#e*ecute3uer"($S)4)C5 . 6=@M tutabla$)&
resultSet#last()&
int ro/Count , resultSet#get=o/()&
%uente: http:11#orode+ava.com1shoEthread.php1,=U3tamad!Bd.,o3del3resultset
,ostrar un 5esult-et en un JTa*le en Java
J(C(:
**,rimero se o'tiene l" %onexi=n " l" '"se de d"tos %on &n %=digo %omo
este(
%river-ana"er#register;river(new com#m"s:l#jdbc#%river())&
.onnection cone*ion ,
%river-ana"er#getConnection($jdbc:m"s:l:--local2ost-prueba$<$usuario$<$clav
e$)&
**El sig&iente p"so es re"liG"r l" %ons<" / o'tener el 9es<Set.
El%=digo es el sig&iente
Statements,cone*ion#createStatement()&
(esultSetrs,s#e*ecute3uer"($select.0romtablaprueba$)&
**,"r"meterlosd"tosenelDT"'le7&s"remosl"%l"se2e$"<T"'le6odel.,"r"ello'"st
"%oninst"n%i"relDT"'le%omosem&estr"enel%odigo
%efault/able-odelmodelo,new%efault/able-odel()&
0/abletabla,new0/able(modelo)&
**@hor"s=loh"/1&erellen"rel2e$"<T"'le6odel%onlosd"tosdel9es<Set.
**Cre"mosl"s%ol&mn"s.
modelo#addColumn($id$)&
modelo#addColumn($nombre$)&
modelo#addColumn($tele0ono$)&
**9e%orremoslosregistros%on&n%i%lo-hile
/2ile(rs#ne*t())
**Se%re"&n"rr"/1&eserI&n"del"s$il"sdel"t"'l".
,bject[]0ila,new,bject[']&**J"/tres%ol&mn"senl"t"'l"
**Serellen"%"d"posi%i=ndel"rr"/%on&n"del"s%ol&mn"sdel"t"'l"en'"seded"tos.
0or(inti,8&iV'&iPP)
0ila[i],rs#get@bject(iP1)&**Elprimerindi%eenrsesel+7noel%ero7poresoses&m"+.
**!oes%omoen,J,ootrosleng&"jesdondelosindi%esini%i"n%on4
**Se"K"de"lmodelol"$il"%omplet".
modelo#add=o/(0ila)&
(
%uente: http:11EEE.scriptmatico.com1;<<Q1<D1,Q1mostrar3un3resultset3en3un3+table3en3+ava1
Cargar un jcom*o*o) desde un resulset con Net*eans <!E 5C9
/2ile( =esultado#is%e0ore6irst()E,true)
4ista#addAtem(=esultado#getString('))&
S"stem#out#println(=esultado#is6irst())&
=esultado#previous()&
--S"stem#out#println(=esultado#getString('))&
(
%uente: http:11EEE.programacion.com1#oros1+ava3basico1cargarNunN+comboboxNdesdeNunNresulsetNconNnetbeansN=N<Nrc;N;QB;;H
Consultar DB en Java P ,ostrar resultados en un JTa*le
/iguiendo con nuestro tema de cone)iones a *ases de datos desde Java` !uando estamos traba+ando
con bases de datos y aplicaciones que usen /Eing, la manera m(s elegante de presentar los datos a un
usuario es usando tablas usando la clase &"able.
Lo que haremos ser( b(sicamente crear una clase que herede de la clase Abstract"able:odel:
$sta clase abstracta provee la implementacin por de#ecto de la mayor6a de los m%todos en la inter#az
"able:odel. -ara crear un "able:odel como subclase de Abstract"able:odel necesitar(s
implementar 'nicamente los sigientes tres m%todos:
public int get=o/Count()& public int getColumnCount()&public @bject
getBalueDt(int ro/< int column)&
Dicha clase administrar( el contenido de nuestra tabla. "en en cuenta que vamos a traba+ar con la base
de datos que hicimos aqu6. Leamos entonces el cdigo:
import java#s:l#.&
import java#util#.&
import java*#s/ing#table#.&
-- 4as 0ilas " columnas del objeto =esultSet se cuentan desde 1 " las 0ilas
-- " columnas del objeto G5able se cuentan desde 8# Dl procesar 0ilas
-- o columnas del objeto =esultSet para usarlas en un objeto G5able< es
-- necesario sumar 1 al n]mero de 0ila o columnas para manipular la
-- columna apropiada del objeto =esultSet (es decir< la columna 8 del objeto G5able
-- es la columna 1 del objeto =esultSet " la 0ila 8 del objeto G5able es la 0ila 1
del objeto =esultSet)#
public class Modelo5abla=esultados e*tends Dbstract5ableModel
private Connection cone*ion&
private Statement instruccion&
private =esultSet conjunto=esultados&
private =esultSetMeta;ata meta;atos&
private int numero;e6ilas&
-- mantener el registro del estado de la cone*iIn a la base de datos
private boolean conectadoD4a%ase;e;atos , 0alse&
-- inicialiMar conjunto=esultados " obtener su objeto de meta datos&
-- determinar el n]mero de 0ilas
public Modelo5abla=esultados( String controlador< String url<
String consulta ) t2ro/s S34)*ception< ClassNot6ound)*ception
-- cargar clase de controlador de base de datos
Class#0orName( controlador )&
-- conectarse a la base de datos
cone*ion , ;riverManager#getConnection( url )&
-- crear objeto Statement para consultar la base de datos
instruccion , cone*ion#createStatement(
=esultSet#5>P)?SC=@44?ANS)NSA5AB)<
=esultSet#C@NCC=?=)D;?@N4> )&
-- actualiMar estado de cone*iIn a la base de datos
conectadoD4a%ase;e;atos , true&
-- establecer consulta " ejecutarla
establecerConsulta( consulta )&
(
-- obtener la clase :ue representa al tipo de columna
public Class getColumnClass( int columna ) t2ro/s AllegalState)*ception
-- asegurar :ue la cone*iIn a la base de datos est disponible
i0 ( EconectadoD4a%ase;e;atos )
t2ro/ ne/ AllegalState)*ception( $No 2a" cone*ion a la base de datos$ )&
-- determinar la clase de Gava de columna
tr"
String nombreClase , meta;atos#getColumnClassName( columna P 1 )&
-- devolver objeto Class :ue representa a nombreClase
return Class#0orName( nombreClase )&
(
-- atrapar e*cepciones S34)*ception " ClassNot6ound)*ception
catc2 ( )*ception e*cepcion )
e*cepcion#printStack5race()&
(
-- si ocurren problemas arriba< suponer :ue es tipo @bject
return @bject#class&
(
-- obtener el n]mero de columnas en el objeto =esultSet
public int getColumnCount() t2ro/s AllegalState)*ception
-- asegurar :ue la cone*iIn a la base de datos est disponible
i0 ( EconectadoD4a%ase;e;atos )
t2ro/ ne/ AllegalState)*ception( $No 2a" cone*ion a la base de datos$ )&
-- determinar el n]mero de columnas
tr"
return meta;atos#getColumnCount()&
(
-- atrapar e*cepciones S34)*ception e imprimir mensaje de error
catc2 ( S34)*ception e*cepcionS34 )
e*cepcionS34#printStack5race()&
(
-- si ocurren problemas arriba< devolver 8 para el n]mero de columnas
return 8&
(
-- obtener el nombre de una columna especd0ica en el objeto =esultSet
public String getColumnName( int columna ) t2ro/s AllegalState)*ception
-- asegurar :ue la cone*iIn a la base de datos est disponible
i0 ( EconectadoD4a%ase;e;atos )
t2ro/ ne/ AllegalState)*ception( $No 2a" cone*ion a la base de datos$ )&
-- determinar el nombre de la columna
tr"
return meta;atos#getColumnName( columna P 1 )&
(
-- atrapar e*cepciones S34)*ception e imprimir mensaje de error
catc2 ( S34)*ception e*cepcionS34 )
e*cepcionS34#printStack5race()&
(
-- si 2a" problemas< devolver cadena vacda para el nombre de la columna
return $$&
(
-- devolver el n]mero de 0ilas en el objeto =esultSet
public int get=o/Count() t2ro/s AllegalState)*ception
-- asegurar :ue la cone*iIn a la base de datos est disponible
i0 ( EconectadoD4a%ase;e;atos )
t2ro/ ne/ AllegalState)*ception( $No 2a" cone*ion a la base de datos$ )&
return numero;e6ilas&
(
-- obtener el valor en una 0ila " columna especd0icas
public @bject getBalueDt( int 0ila< int columna ) t2ro/s AllegalState)*ception
-- asegurar :ue la cone*iIn a la base de datos est disponible
i0 ( EconectadoD4a%ase;e;atos )
t2ro/ ne/ AllegalState)*ception( $No 2a" cone*ion a la base de datos$ )&
-- obtener un valor en una 0ila " columna especd0icas del objeto =esultSet
tr"
conjunto=esultados#absolute( 0ila P 1 )&
return conjunto=esultados#get@bject( columna P 1 )&
(
-- atrapar e*cepciones S34)*ceptions e imprimir mensaje de error
catc2 ( S34)*ception e*cepcionS34 )
e*cepcionS34#printStack5race()&
(
-- si 2a" problemas< devolver objeto cadena vacda
return $$&
(
-- establecer nueva cadena de consulta para la base de datos
public void establecerConsulta( String consulta )t2ro/s S34)*ception<
AllegalState)*ception
-- asegurar :ue la cone*iIn a la base de datos est disponible
i0 ( EconectadoD4a%ase;e;atos )
t2ro/ ne/ AllegalState)*ception( $No 2a" cone*ion a la base de datos$ )&
-- especi0icar consulta " ejecutarla
conjunto=esultados , instruccion#e*ecute3uer"( consulta )&
-- obtener meta datos para el objeto =esultSet
meta;atos , conjunto=esultados#getMeta;ata()&
-- determinar el n]mero de 0ilas en el objeto =esultSet
conjunto=esultados#last()& -- mover a la ]ltima 0ila
numero;e6ilas , conjunto=esultados#get=o/()& -- obtener n]mero de 0ila
-- noti0icar al objeto G5able :ue el modelo 2a cambiado
0ire5ableStructureC2anged()&
(
-- cerrar objetos Statement " Connection
public void desconectar;e4a%ase;e;atos()
-- cerrar objetos Statement " Connection
tr"
instruccion#close()&
cone*ion#close()&
(
-- atrapar e*cepciones S34)*ception e imprimir mensaje de error
catc2 ( S34)*ception e*cepcionS34 )
e*cepcionS34#printStack5race()&
(
-- actualiMar estado de cone*iIn a la base de datos
0inall"
conectadoD4a%ase;e;atos , 0alse&
(
(
( -- 0in de la clase =esultSet5ableModel
Cosas por e)plicar el en c+digo anterior:
/i tienes dudas respecto a las operaciones hechas con el A-5 de &D.! signi#ica que debes leer
esto primero: $+emplo -rogramacin con &D.!
pu*lic Class getColumnClass/0Z con este m%todo obtendremos el tipo de dato de la columna
>5nteger, /tring, 0loat, etc?.
pu*lic int getColumnCount/0Z este m%todo devuelve el n'mero de columnas que tendr( la
tabla.
pu*lic -tring getColumnName/int )0Z devuelve el nombre de la columna M de la tabla.
pu*lic int get5o&Count/0Z este m%todo devuelve el n'mero de #ilas que tendr( la tabla.
pu*lic 8*ject getCalue(t/int 3, int c0Z asigna a la tabla el valor de la celda que se encuentra
en la #ila . y en la columna c.
3ireTa*le-tructureC.anged/0Z esto le indica al ob+eto Abstract"able:odel que la estructura
de la tabla ha cambiado.
Ahora el cdigo del #rame que contiene la tabla:
import java#a/t#.&
import java#a/t#event#.&
import java#s:l#.&
import java#util#.&
import java*#s/ing#.&
import java*#s/ing#table#.&
public class Mostrar=esultadosConsulta e*tends G6rame
-- controlador G;%C " C=4 de la base de datos
static 0inal String C@N5=@4D;@=?G;%C , $com#m"s:l#jdbc#;river$&
static 0inal String C=4?%DS););D5@S , $jdbc:m"s:l:--local2ost-ejemploe
user,rootSamp&&pass/ord,$&
-- la consulta predeterminada recupera todos los datos de la tabla autores
static 0inal String C@NSC45D?P=);)5)=MAND;D , $S)4)C5 . 6=@M datos$&
private Modelo5abla=esultados modelo5abla&
private G5e*tDrea areaConsulta&
-- crear objeto Modelo5abla=esultados " UCA
public Mostrar=esultadosConsulta()
super( $Mostrando resultados de la consulta$ )&
-- crear objeto Modelo5abla=esultados " mostrar tabla de la base de datos
tr"
-- crear objeto 5ableModel para los resultados del a consulta S)4)C5 .
6=@M autores
modelo5abla , ne/ Modelo5abla=esultados( C@N5=@4D;@=?G;%C<
C=4?%DS););D5@S<
C@NSC45D?P=);)5)=MAND;D )&
G5able tabla=esultados , ne/ G5able(modelo5abla)&
getContentPane()#set4a"out(ne/ %order4a"out())&
getContentPane()#add( ne/ GScrollPane(tabla=esultados) <
%order4a"out#C)N5)= )&
-- establecer tamaLo de ventana " mostrarla en pantalla
setSiMe( +88< !+8 )&
setBisible( true )&
( -- 0in de blo:ue tr"
-- atrapar la e*cepciIn ClassNot6ound)*ception lanMada por el
-- objeto Modelo5abla=esultados si no se encuentra el controlador de la
base de datos
catc2 ( ClassNot6ound)*ception claseNo)ncontrada )
G@ptionPane#s2o/Message;ialog( null<
$No se encontro el controlador de la base de datos$< $No se
encontro el controlador$<
G@ptionPane#)==@=?M)SSDU) )&
S"stem#e*it( 1 )& -- terminar la aplicaciIn
( -- 0in de blo:ue catc2
-- atrapar la e*cepciIn S34)*ception lanMada por el objeto
Modelo5abla=esultados
-- si ocurren problemas al establecer la cone*iIn a la base de datos
-- " realiMar la consulta en la misma
catc2 ( S34)*ception e*cepcionS34 )
G@ptionPane#s2o/Message;ialog( null< e*cepcionS34#getMessage()<
$)rror en la base de datos$< G@ptionPane#)==@=?M)SSDU) )&
-- asegurar :ue la cone*iIn a la base de datos est cerrada
modelo5abla#desconectar;e4a%ase;e;atos()&
S"stem#e*it( 1 )& -- terminar la aplicaciIn
(
-- desec2ar la ventana cuando el usuario salga de la aplicaciIn
-- (esta opciIn sobrescribe a la opciIn predeterminada de JA;)?@N?C4@S))
set;e0aultClose@peration( ;ASP@S)?@N?C4@S) )&
-- asegurar :ue la cone*iIn a la base de datos est cerrada cuando el
usuario salga de la aplicaciIn
addHindo/4istener(
ne/ Hindo/Ddapter()
-- desconectarse de la base de datos " salir cuando se 2a"a cerrado la
ventana
public void /indo/Closed( Hindo/)vent evento )
modelo5abla#desconectar;e4a%ase;e;atos()&
S"stem#e*it( 8 )&
(
(
)&
( -- 0in del constructor de Mostrar=esultadosConsulta
-- ejecutar la aplicaciIn
public static void main( String args[] )
G6rame#set;e0ault4ookDnd6eel;ecorated(true)&
ne/ Mostrar=esultadosConsulta()&
(
( -- 0in de la clase Mostrar=esultadosConsulta
%uente: http:11casidiablo.net1consultar3base3datos3+ava3mostrar3resultados3+table1
?imitar la cantidad de caracteres en un JTe)t%ield
-ara empezar debo poner que estoy traba+ando en )et.eans, bueno, lo mismo del t6tulo...
Lo que quiero hacer es que una ca+a de texto >&"ext0ield? no me permita colocar m(s de un caracter, lo
que he logrado hacer es validar eso pero reci%n cuando se presenta alg'n evento:
$+emplo:
!digo:
i0(G5e*t6ield#get5e*t()#lengt2() E, 1)
--aca la e*cepciIn
)lse
--aca sigue todo normal
-ero yo quisiera que no se pudiera colocar m(s de un caracter, sin necesidad de hacer v(lido algun
evento, he buscado en las propiedades del mismo &"ext0ield, pero sin encontrar nada que me ayude.
$spero haberme hecho entender y que alguien pueda ayudarme.
$n mi caso uso:
C+digo:
5e*t6ield (nombre de variable),ne/ 5e*t6ield ($lo :ue :uieres :ue va"a en el
campo$< !+)&
luego mas aba+o donde quieras ponerlo le das un: add>nombre de la variable?
Donde el ;= es la cantidad de caracteres permitidos, asi lo mane+o yo, tambien en )et.eans.
-ues yo soy mas applets que programas a consola y a nivel maquina, pero si puedo ayudarte.
$n tu i# has probado poner que si es mas largo haga #ocus en el siguiente campo o pierda #ocusS
tambien puede ser otra #orma con +"ext0ield lo que he hecho hasta el momento es algo asi >me da
#lo+era abrir el netbeans, pero lo se mas o menos de memoria?:
C+digo:
t*t1#re:uest6ocus()&
( else i0(t*t1#get5e*t()#to4o/erCase()#lengt2() E, 1
lblMensaje#set5e*t($ingrese solo un caracter$)&
t*t1#set5e*t($$)&
t*t1#re:uest6ocus()&
( else
-->D DCD 5@;@ C@M@ ;)%) 6CNCA@ND= C@N CN CD=DC5)= ANU=)SD;@
(
%uente: http:11#orospamloco.net1limitar3la3cantidad3de3caracteres3en3un3+text#ield3t,UB.html
7ay alguna 3unci+n en Java D Net*eans 1ue me devuelva el valor (-CII de un caracterJ
c2ar c , ^D^&
int ascii , (int) c&
%uente: http:11mx.ansEers.yahoo.com1question1indexSqidO;<<U,,,Q<H,B,UAADM7tG
8*tener los c+digos (-CII de una cadena de te)to
$n este e+emplo vamos a ver como obtenemos los cdigos A/!55 de una cadena de texto con &ava. -ara
ello recorreremos los caracteres de la cadena e iremos obteniendo el cdigo. -ara ello nos apoyamos en
el m%todo.code-ointAt>?.
$l m%todo .code-ointAt>? devuelve el cdigo A/!55 de un car(cter en concreto. $l car(cter ser( el que
coincida con el 6ndice que se pasa como par(metro al m%todo.
$mpezamos de#iniendo la cadena:
String sCadena , $)sto es una cadena de te*to$&
Ahora empezamos recorriendo la cadena, para ello nos apoyamos en un bucle #or y en el m%todo
.length>?, el cual nos ayuda a conocer el tama*o de la cadena. $n el interior del bucle, y apoy(ndonos
en el elemento de interaccin vamos obteniendo el cdigo A/!55 de los caracteres con el
m%todo.code-ointAt>?
0or (int *,8&*VsCadena#lengt2()&*PP)
S"stem#out#println(sCadena#c2arDt(*) P $ , $ P sCadena#codePointDt(*))&&
Lemos que utilizamos el m%todo.charAt>? para sacar el car(cter asociado al cdigo A/!55.
package com#lineadecodigo#java#string&
-..
. F0ile CodigosDSCAACadena#java
. Fversion 1#8
. Faut2or 4inea de Codigo (2ttp:--lineadecodigo#com)
. Fdate 7-enero-!818
. Furl 2ttp:--lineadecodigo#com-java-obtenerNlosNcodigosNasciiNdeNunaNcadenaNdeN
te*to-
. Fdescription )*traer los cIdigos DSCAA de una cadena de te*to
.-
public class CodigosDSCAACadena
public static void main(String[] args)
String sCadena , $)sto es una cadena de te*to$&
0or (int *,8&*VsCadena#lengt2()&*PP)
S"stem#out#println(sCadena#c2arDt(*) P $ , $ P
sCadena#codePointDt(*))&
(
(
%uente: http:11cucutaloco.es.tl1@btener3los3cd0Bdigos3A/!553de3una3cadena3de3texto.htm
8*tener codigo ascii de un -tring
String cadena , $2ola$&
S"stem#out#println((int) cadena#c2arDt(8))&
--4o de arriba devuelve tu 187###
int c , 8&
0or (int i , 8& i V cadena#lengt2()& iPP)
c P, (int)cadena#c2arDt(i)&
(
S"stem#out#println(c)&
%uente: http:11EEE.#orosdelEeb.com1#D=1obtener3codigo3ascii3string3BQDQ,B1
C+digo (scii
)o hace #alta ning'n m%todo para obtener esto. Debes tener en cuenta que el tipo char es un n'mero de
< a ;==, simplementes debes hacer un casting, algo como:
c2ar a , ^a^&
S"stem#out#println((int)a)&
$sto te devolver( el cdigo ascii del car(cter a.
%uente: http:11EEE.todoexpertos.com1categorias1tecnologia3e3internet1programacion1+ava1respuestas19DH9D<1codigo3
ascii
Convertir c.ar a -tring
Lo m(s #(cil, aunque carretero es:
c2ar c,^'^&
String d , $$Pc&
-- concatenar un caracter nulo ($$) P la variable de tipo c2ar#
%uente: http:11EEE.#orosdelEeb.com1#D=1convertir3char3string3,Q<,<91
,6todos de la clase -tring
:%todo Descripcin
V !oncatenacin >unin de hilera?."ambi%n permite concatenar una hilera con un dato num%rico o
booleano.
$&$:-L@
,3? /tring cadena O V4niversidad I 8 V "%cnicaIP
Ahora cadena contendr(: I4niversidad "%cnicaI
!adena 8O V )acionalWP
Ahora cadena contiene 4niversidad "%cnica )acional
;3? int i O =P
/tring resultado O I$l valor de i es I 8 iP
Ahora resultado contiene: V$l valor de i es =W
lengt./ 0 7etorna la cantidad de caracteres que tiene la /tring
$&$:-L@
,3? /tring cadena O V4niversidad "%cnicaWP
int a O cadena.length>?P
La variable VaW contendr( ,U
int inde)83/-tring + c.ar0 7etorna el 6ndice o posicin donde aparece por primera vez la /tring o
char
que se recibe como par(metro, o un 3, si no la encuentra
$&$:-L@
,3? /tring cadena O I/an &oseIP
int posicion O cadena.index@#>I&oseI ?P
Ahora posicin contiene un D
int a O cadena.index@#>oop?P
Ahora la variable a contiene un =
7ecuerde que la primera posicin es cero.
-tring replace /c.ar viejoC.ar, c.ar nuevoC.ar0 7emplaza en la hilera que invoca el m%todo, el
vie+o!har por el nuevo!har. /e utiliza para reemplazar caracteres
$&$:-L@
,3? /tring hilera, cadena O Vmam(IP
hilera O cadena.replace>omp,ppp ?P
Ahora hilera contiene Vpap(W y cadena contin'a teniendo Vmam(W.
-tring replace(ll /-tring vieja-tring, -tring nueva-tring0 7emplaza en la hilera que invoca al
m%todo la vie+a /tring por la nueva /tring. /e utiliza para reemplazar subhileras
$&$:-L@
,3? /tring cadena O V&os% /otoIP
cadena O cadena.replaceAll>V/otoW,W/ol6sW ?P
Ahora cadena contiene V&os% /ol6sW ya que se modi#ic sobre ella misma
-tring to?o&erCase/0 !onvierte todos los caracteres de la hilera a min'scula.
/olo para hileras, no #unciona para char.
$&$:-L@
,3? /tring cadena O I&ALAIP
cadena O cadena.toLoEer!ase>?P
Ahora cadena contiene V+avaW
-tring toBpperCase/0 !onvierte todos los caracteres de la hilera a may'scula. /olo para hileras, no
#unciona para char.
$&$:-L@
,3? /tring cadena O I+avaIP
cadena O cadena.to4pper!ase>?P
Ahora cadena contiene V&ALAW
*oolean e1uals/-tring str0: !ompara la hilera que invoca al m%todo con la del par(metro. /i son
iguales retorna true y si n, retorna #alse. $s sensitivo a may'sculas y min'sculas.
$&$:-L@
,3? /tring cadena, O Vala+uelaI, cadena; O VAla+uelaWP
i# >cadena,.equals>cadena;??Y
out.println>V/on igualesW?P
else
out.println>V/on di#erentesW?P
La impresin ser(: /on di#erentes
*oolean e1ualsIgnoreCase /-tring str0 !ompara la hilera que invoca al m%todo con la del par(metro.
/i son iguales retorna true y si n, retorna #alse. )o es sensitivo a may'sculas y min'sculas.
$&$:-L@
,3? /tring cadena, O Vala+uelaIP
/tring cadena; O VAla+uelaWP
i# >cadena,.equals5gnore!ase>cadena;??Y
out.println>V/on igualesW?P
else
out.println>V/on di#erentesW?P
La impresin ser(: /on iguales
int compareTo/-tring str#0 !ompara ; cadenas y retorna un valor num%rico.:
!ero >o?: si ambas cadenas son iguales
4n n'mero ] < si la primera hilera es menor a la segunda.
4n n'mero C < si la primera hilera es mayor a la segunda.
$&$:-L@
/tring cad,OI,;BDIP
/tring cad;OI,BBDIP
valorOcad,.compare"o>cad;?P
i#>valorOO<?ut.println>I/on igualesIP
else
i# >valor]<?
out.println>Icad, menor cad;IP
else
out.println>Icad, mayor cad;IP
-tring trim/0:
$limina espacios en blanco al principio y al #inal de la cadena. )o elimina los espacios situados entre
las palabras.
$&$:-L@
,3? /tring cadena O I -rogramacin , IP
cadena O cadena.trim>?P
Ahora cadena contiene V-rogramacin ,W
-tring su*string/int indiceInicial, int indice%inal0 7etorna el segmento de la /tring entre la posicin
oindice5nicialp inclusive hasta una posicin anterior a oindice0inalp.
$&$:-L@
,3? /tring cadena O IDesarrollo @rientado a @b+etosIP
out.println>cadena.substring>,,,;<??P
5mpresin: @rientado
c.ar c.ar(t /int indice0 Devuelve el car(cter que ocupa la posicin indicada por el 6ndice.
$&$:-L@
,3? /tring cadena O I-olimor#ismoIP
out.println>cadena.charAt>D??P
5mpresin : m
;3? char caracter O cadena.charAt>H?P
Ahora car(cter contiene o#p
-tring!value83 !onvierte valores de una clase a otra. -ermite convertir valores que no son de tipo
/tring a valores de tipo /tring.
$ste m%todo pertenece a la clase /tring directamente, no hay que utilizar el nombre del ob+eto creado
>es un m%todo est(tico?.
$&$:-L@
/tring numero O /tring.value@#>,;BD?P
/tring #echa O /tring.value@#>neE Date>??P
:%todos de la clase !ar(cter
*olean is?etter/c.ar caracter00
7etorna un verdadero si el car(cter del par(metro es una letra
$&$:-L@
,3? char caracterP
i# >!haracter.isLetter>caracter??
out.println>caracter 8I es una letraIP
*olean isDigit/c.ar caracter00
7etorna un verdadero si el car(cter del par(metro es un d6gito
$&$:-L@
,3? char caracterP
i# >!haracter.isDigit>caracter??
out.println>caracter 8I es un d6gitoIP
*olean isBpperCase/c.ar caracter0
7etorna un verdadero si el car(cter del par(metro es una letra may'scula
$&$:-L@
,3? char caracterP
i# >!haracter.is4pper!ase>caracter??
out.println>caracter 8I es una letra may'sculaIP
*oolean is?o&erCase/c.ar caracter0
7etorna un verdadero si el car(cter del par(metro es una letra min'scula
$&$:-L@
,3? char caracterP
i# >!haracter.isLoEer!ase>caracter??
out.println>caracter 8I es una letra min'sculaIP
Conversiones
int valor O 5nteger.parse5nt>/tring?DD 'asar de -tring a int
/tring resultado O 5nteger.to/tring>,;BD=? DD 'asar de int a -tring
/tring resultado O Double.to/tring>,;BD=.;=?DD 'asar de dou*le a -tring
/tring resultado O 0loat.to/tring>,;BD=.H<?DD 'asar de int a -tring
/tring hilera O !haracter.to/tring>caracter?DD'asar de caracter a .ilera
/tring numero O /tring.value@#>,;BD?P
/tring #echa O /tring.value@#>neE Date>??P
%uente: http:11EEE.taringa.net1posts1apuntes3y3monogra#ias1H=D=BBB1:etodos3de3la3clase3
/tring.html
JTa*le en Net*eans
-.
. 5o c2ange t2is template< c2oose 5ools W 5emplates
. and open t2e template in t2e editor#
.-
-.
. Ne/G6rame'#java
.
. Created on 89-89-!811< 81:'7:+\ DM
.-
package mariscal#pruebas&
-..
.
. Faut2or Ddministrador
.-
public class Ne/G6rame' e*tends java*#s/ing#G6rame
-.. Creates ne/ 0orm Ne/G6rame' .-
public Ne/G6rame'()
initComponents()&
j5able1#getColumnModel()#getColumn(8)#setHidt2(!+)&
j5able1#getColumnModel()#getColumn(8)#setMa*Hidt2(!+)&
j5able1#getColumnModel()#getColumn(8)#setMinHidt2(!8)&
j5able1#getColumnModel()#getColumn(1)#setHidt2(1++)&
j5able1#getColumnModel()#getColumn(1)#setMa*Hidt2(1++)&
j5able1#getColumnModel()#getColumn(1)#setMinHidt2(1+8)&
(
-.. 52is met2od is called 0rom /it2in t2e constructor to
. initialiMe t2e 0orm#
. HD=NANU: ;o N@5 modi0" t2is code# 52e content o0 t2is met2od is
. al/a"s regenerated b" t2e 6orm )ditor#
.-
FSuppressHarnings($unc2ecked$)
-- VeditorN0old de0aultstate,$collapsed$ desc,$Uenerated Code$X
private void initComponents()
jScrollPane1 , ne/ java*#s/ing#GScrollPane()&
j5able1 , ne/ java*#s/ing#G5able()&
set;e0aultClose@peration(java*#s/ing#Hindo/Constants#)KA5?@N?C4@S))&
j5able1#setModel(ne/ java*#s/ing#table#;e0ault5ableModel(
ne/ @bject [][]
null< null< null(<
null< null< null(<
null< null< null(<
null< null< null(
(<
ne/ String []
$5itle 1$< $5itle !$< $5itle '$
(
))&
j5able1#setDuto=esiMeMode(java*#s/ing#G5able#DC5@?=)SAT)?@66)&
jScrollPane1#setBie/portBie/(j5able1)&
java*#s/ing#Uroup4a"out la"out , ne/ java*#s/ing#Uroup4a"out(getContentPane())&
getContentPane()#set4a"out(la"out)&
la"out#setJoriMontalUroup(
la"out#createParallelUroup(java*#s/ing#Uroup4a"out#Dlignment#4)D;ANU)
#addUroup(la"out#createSe:uentialUroup()
#addComponent(jScrollPane1< java*#s/ing#Uroup4a"out#P=)6)==);?SAT)< '\+<
java*#s/ing#Uroup4a"out#P=)6)==);?SAT))
#addContainerUap(!+< S2ort#MDK?BD4C)))
)&
la"out#setBerticalUroup(
la"out#createParallelUroup(java*#s/ing#Uroup4a"out#Dlignment#4)D;ANU)
#addUroup(la"out#createSe:uentialUroup()
#addComponent(jScrollPane1< java*#s/ing#Uroup4a"out#P=)6)==);?SAT)< !\+<
java*#s/ing#Uroup4a"out#P=)6)==);?SAT))
#addContainerUap(!+< S2ort#MDK?BD4C)))
)&
pack()&
(-- V-editorN0oldX
-..
. Fparam args t2e command line arguments
.-
public static void main(String args[])
java#a/t#)vent3ueue#invoke4ater(ne/ =unnable()
public void run()
ne/ Ne/G6rame'()#setBisible(true)&
(
()&
(
-- Bariables declaration N do not modi0"
private java*#s/ing#GScrollPane jScrollPane1&
private java*#s/ing#G5able j5able1&
-- )nd o0 variables declaration
(
%uente: http:11EEE.laEebdelprogramador.com1#oros1&ava1,;9UHB,3AyudaN&"ableNenN)etbeans.html
Java: JTa*le
Las tablas nos permiten tener tabulados de in#ormacin que se vean organizados y que sean de utilidad
para los clientes. Las tablas son muy utilizadas en programas similares a excel, donde se deben tener
re+illas de in#ormacinP o en programas de administracin donde pueden haber varios productos que
tienen un con+unto de caracter6sticas, o en programas de ventas, donde pueden haber varios vendedores
con n'mero de ventas y con total vendido.
-ara agregar una tabla en )et.eans selecciona el icono de tabla de la paleta >que regularmente se
encuentra a la derecha? . 4na vez que lo hayas seleccionado agr%galo a la ventana principal. $l
&"able utiliza un Data:odel para representar sus datos, de la misma manera que varios otros
componentes como &List.
Creando un modelo estHtico
$l modelo nos permite indicarle a la tabla qu% in#ormacin va a contener. /i slo queremos presentar
in#ormacin est(tica >que nunca cambia? al cliente entonces podemos usar un modelo est(tico, para
hacer esto vamos a hacer clic2 en el atributo model que se encuentra en las propiedades.
4na vez que hicimos clic2 aparecer( una pantalla en la que podemos editar cmo queremos que se vea
la tabla. $n esta pantalla podemos seleccionar el n'emro de columnas, el nombre de las columnas e
incluso podemos agregar algunos datos.
$n la pantalla anterior podemos ver cmo mane+ar el n'mero de columnas >con los botones de 5nsert,
Delete o con los botones de 8, 3? y tambi%n podemos ver una re+illa donde podemos poner el t6tulo que
aparece en la columna, el tipo de dato que va a guardar y si se puede editar o no.
!on esto podemos crear una tabla est(tica que siempre va a iniciar con los mismos datos.
Creando un modelo dinHmico
La mayor6a de las veces un usuario no va a querer una tabla est(tica >en la que aunque pueda editar los
valores no se muestren los valores que se hab6an guardado previamente?. $s por esto que es necesario
crear un modelo din(mico. -ara poder crear un modelo din(mico es necesario implementar la inter#az
5ableModel que nos obliga a sobrecargar un gran n'mero de m%todos:
getColumnClass(): $s un m%todo que nos permite saber qu% clase tiene guardada cada
columna, esto es para que sean m(s #(ciles de pintar para +ava.
getColumnCount(): $s un m%todo que nos permite saber cu(ntas columnas tiene la tabla.
getColumnName(): $s un m%todo que nos permite saber el encabezado de la tabla para una
cierta columna.
get=o/Count(): $s un m%todo que nos permite saber cu(ntas #ilas tiene la tabla.
getBalueDt(): $s un m%todo que nos devuelve el valor que se encuentra en la posicin pasada
como par(metro.
isCell)ditable(): $s un m%todo que nos devuelve verdadero si la celda puede ser
modi#icada, o #also en caso contrario.
setBalueDt(): $s un m%todo que nos permite cambiar el valor que se encuentra en la posicin
pasada como par(metro mediante cdigo >el usuario puede cambiar los datos dependiendo del
m%todo isCell)ditable()?.
getBalueDt(): $s un m%todo que nos devuelve el valor que est( guardado en la celda pasada
como par(metro, este valor va a ser de la clase que indica getColumnClass() para esa columna.
Adem(s de todos los m%todos anteriores, la inter#az 5ableModel tiene un par de m%todos para mane+ar
eventos >como por e+emplo, que el usuario haga clic2, que edite una celda?. $stos m%todos involucran
agregar cdigo a nuestra clase que cuando modi#ique alg'n valor o que agregue nuevos datos tenga que
disparar eventos. $ste cdigo, aunque no es muy complicado, no tendr6a ninguna utilidad >a menos que
vayamos a escribir una manera de deshacer acciones o algo similar?, sin embargo como tenemos que
implementar 5ableModel tendr6amos que implementarlos. -or suerte &ava cuenta con un modelo ya
implementado >el que utilizan todas las tablas al ser creadas? que podemos utilizar para no implementar
estos m%todos, entonces, en lugar de implmentar la inter#az 5ableModel vamos a extender la clase
;e0ault5ableModel que ya implementa la inter#az anterior.
Implementando el modelo dinHmico
)ormalmente las tablas slo crecen en una direccin >hacia aba+o, aumentando el n'mero de #ilas?. -or
e+emplo, en el reporte de empleados, es probable que contratemos o despidamos empleados, por lo que
vamos a tener que agregar m(s #ilas, sin embargo ser6a raro que apareciera un nuevo atributo que
quisi%ramos mane+ar del empleado >y m(s raro a'n que el cliente pudiera modi#icar el programa de tal
manera que lo agregue?. $ntonces, como la mayor6a de las tablas crecen en una sola dimensin>slo
aumenta el n'mero de #ilas? vamos a implementar un modelo en el que utilizando un ArrayList que
contiene arreglos vamos a mane+ar el crecimiento de la tabla >el ArrayList puede crecer, pero los
arreglos no?.
$l Drra"4ist va a representar las #ilas de la tabla, y va a contener arreglos, que representan las
columnas.
-rimero veamos a crear una clase nueva, que extienda ;e0ault5ableModel.
public class )ditable5ableModel
e*tends ;e0ault5ableModel
)uestro modelo debe tener alguna manera de almacenar los datos >ya vimos cmo vamos a resolver
este problema? y adem(s debe contar con variables de control que nos #aciliten la tarea de saber cu(l es
el nombre de las columnas, qu% tipo de dato guarda cada columna >importante para poder guardar
n'meros o booleanos? y si la columna es editable >la mayor6a de las veces este par(metro va a ser
verdadero, pero podr6an haber ocasiones en que necesit(ramos que #uera #also?.
private Drra"4istV@bject[]X data&
private int numColumns&
private String columnNames[]&
private Class classes[]&
private boolean editable[]&
$l constructor que recibe todos los par(metros debe de crear un tabla de datos en blanco y debe de leer
los par(metros que manda el usuario. !omo vamos a tener varios constructores que reciban di#erente
n'mero de par(metros debemos construir un m%todo que nos permita iniciar el ob+eto y llamarlo desde
todos los constructores, el m%todo ser6a algo similar a:
private void initComponents(String columnNames[]< Class classes[]< boolean
editable[])
t2ro/s AllegalDrgument)*ception
i0 (columnNames#lengt2 E, classes#lengt2 WW classes#lengt2 E,
editable#lengt2)
t2ro/ ne/ AllegalDrgument)*ception($52e arra"s passed as parameters
must be o0 t2e same siMe$)&
data , ne/ Drra"4istV@bject[]X()&
t2is#numColumns , columnNames#lengt2&
t2is#columnNames , columnNames&
t2is#classes , classes&
t2is#editable , editable&
(
La mayor6a de los m%todos son simples getters y setters >por e+emplo get=o/Count() slo debe
regresar el tama*o de data con data#siMe(), getBalueDt() slo debe obtener el valor de la celda
con data#get(ro/)[col]?, por lo que estos m%todos no van a ser consultados con m(s detenimiento.
/in embargo, para permitir que la tabla pueda crecer debemos crear m%todos que nos permitan agregar
o quitar #ilas. $stos m%todos deben agregar o quitar arreglos de ob+etos de la lista de datos. $s decir:
public void add=o/()
int num=o/s , data#siMe()&
@bject[] ro/ , ne/ @bject[numColumns]&
data#add(ro/)&
t2is#0ire5able=o/sAnserted(num=o/s< num=o/sP1)&
(
> para remover va a ser mu" similar:
F@verride
public void remove=o/(int ro/)
data#remove(ro/)&
t2is#0ire5able=o/s;eleted(ro/< ro/)&
(
$n los m%todos anteriores no est( sucediendo mucho que no sepamos, excepto por los m%todos
0ire5able=o/sAnserted() y 0ire5able=o/s;eleted(). $stos dos m%todos le indican a la tabla >y la
tabla se encarga de comunicarle a todos los componentes que dependan de ella? que se agregaron o
quitaron #ilas. /i no hici%ramos esta llamada entonces no ver6amos los cambios hasta que
modi#iquemos los datos en la lista, que ser6a cuando la tabla se dar6a cuenta de que el modelo cambi.
@tro m%todo que quiz(s ser6a importante implementar ser6a uno que nos permitiera agregar #ilas con
datos, ya que muchas veces vamos a leer los datos de un archivo y vamos a querer construir la tabla.
public void add=o/(@bject[] ro/)
int num=o/s , data#siMe()&
data#add(ro/)&
t2is#0ire5able=o/sAnserted(num=o/s< num=o/sP1)&
(
Quiz(s tambi%n ser6a prudente crear un constructor que reciba una matriz de datos y de ah6 obtenga
todos los datos para crear la tabla.
Bsando el modelo
!onstruir el modelo es un proceso un poco abstracto y muchas veces no sabemos cmo est(n
sucediendo las cosas sino hasta que lo comenzamos a usar, para poder usar nuestro modelo vamos a
crear una clase de prueba que tenga una ventana con una tabla y dos botones de la siguiente manera:
Lamos a declarar el modelo en la parte de declaraciones globales, para que toda la inter#az gr(#ica
pueda acceder a ella >esto es conveniente porque as6 los botones van a poder usarlo directamente, sin
tener que sacarlo de la tabla pero podr6a considerarse una mala pr(ctica de programacin?.
private )ditable5ableModel model&
$n el constructor de la ventana vamos a agregar el siguiente cdigo:
public )ditableModel5est()
initComponents()&
String columnNames[] , $Nombre$< $)dad$< $5ele0ono$ (&
Class classes[] , String#class< Anteger#class< String#class (&
boolean editable[] , true< true< true (&
model , ne/ )ditable5ableModel(columnNames< classes< editable)&
tbl)mplo"ees#setModel(model)&
(
!omo podemos ver, el cdigo est( creando tres arreglos, el primero tiene los nombres de las columnas
>son tres columnas: nombre, edad y tel%#ono?, el segundo arreglo es un arreglo de clases, que nos dice
de qu% tipo va a ser cada columna. -odemos utilizar cualquier clase de &ava, pero regularmente
queremos utilizar /tring, 5nteger, Double, 0loat o .oolean, que son las clases para las que ya est(
creado un renderer y por lo tanto no tenemos que preocuparnos por eso. 06+ate que despu%s del nombre
de la clase ponemos .class para que obtenga la clase. $l 'ltimo arreglo es un arreglo de boolean y nos
dice si las columnas van a ser editables >en la mayor6a de los casos s6?.
Ahora vamos a implementar el botn para agregar #ilas:
private void btnDdd=o/DctionPer0ormed(java#a/t#event#Dction)vent evt)
model#add=o/()&
(
!omo nuestro modelo est( bien implementado esto #ue sencill6simo, ahora vamos a implementar el
botn que borra las #ilas seleccionadas:
private void btn=emove=o/DctionPer0ormed(java#a/t#event#Dction)vent evt)
int ro/s[] , tbl)mplo"ees#getSelected=o/s()&
model#remove=o/s(ro/s)&
(
5gual de sencillo. 4na vez que hayamos hecho todo esto nuestro programa debe permitir agregar y
quitar #ilas y poner los datos que querramos adentro de las #ilas.
Uuardar datos
4na vez que los usuarios tengan la oportunidad de modi#icar la tabla van a agregar datos y van a querer
guardar esos datos >imaginen que cada que abran excel tienen que volver a poner todos los datos que
hab6an puesto la vez anterior?. -ara guardar los datos vamos a crear un m%todo en el modelo que se
encargue de poner los datos en una matriz >para que sea m(s #(cil de mane+ar? y despu%s, utilizando
este m%todo vamos a utilizar un par de ciclos para guardar los datos en un archivo.
$n el modelo vamos a agregar el siguiente m%todo:
public @bject[][] get;ataMatri*()
int num=o/s , get=o/Count()&
int numCols , getColumnCount()&
@bject matri*[][] , ne/ @bject[num=o/s][numCols]&
0or (int ro/Ande* , 8& ro/Ande* V data#siMe()& ro/Ande*PP)
@bject[] ro/ , data#get(ro/Ande*)&
0or (int colAnde* , 8& colAnde* V ro/#lengt2& colAnde*PP)
@bject object , ro/[colAnde*]&
matri*[ro/Ande*][colAnde*] , object&
(
(
return matri*&
(
dentro de la inter#az gr(#ica hay que crear un nuevo botn que sea el que guarda y debemos poner el
siguiente cdigo:
private void btnSaveDctionPer0ormed(java#a/t#event#Dction)vent evt)
tr"
PrintHriter 0ile@ut , ne/ PrintHriter(ne/ 6ileHriter($out#csv$))&
@bject[][] data , model#get;ataMatri*()&
0or (int i , 8& i V data#lengt2& iPP)
0ile@ut#print(data[i][8])&
0or (int j , 1& j V data[i]#lengt2& jPP)
@bject object , data[i][j]&
i0 (object E, null)
0ile@ut#print($<$ P object#toString())&
else
0ile@ut#print($<$)&
(
0ile@ut#println()&
(
0ile@ut#close()&
G@ptionPane#s2o/Message;ialog(t2is< $;atos guardados$)&
( catc2 (A@)*ception e*)
G@ptionPane#s2o/Message;ialog(t2is< $)rror al guardarE$)&
(
(
$l m%todo anterior deber6a mostrar una ventana para seleccionar el archivo y deber6a de proporcionar
in#ormacin m(s relevante en los errores, pero para este e+emplo es su#iciente para ver que los datos se
guardan. 4na vez que hagamos esto se va a crear un archivo llamado out.csv que puede ser abierto por
excel.
%uente: http:11EEE.maguso#t.net1neotrials1pages1+ava1+table.html
C+mo seleccionar una 3ila de un JTa*le de Java
A veces nos vemos en la necesidad de seleccionar o resaltar mediante c-digo una .ila de un JTa*le,
ya sea porque necesitamos realizar una b'squeda en la tabla o por cualquier otro motivo. /i el JTa*le
se encuentra dentro de un J-croll'ane, las barras de desplazamiento se deben mover autom(ticamente
para que se vea la #ila que se seleccion.
-ara realizar %sta tarea tenemos el m%todo c.ange-election de la clase JTa*le, el cual cuenta con D
par(metros: ro&Inde), columnInde), toggle y e)tendP los dos primeros son dos n'meros enteros que
indican la #ila y columna de la celda, mientras que toggle y e)tend son booleanos que sirven para
indicar si queremos seleccionar una #ila, un rango de #ilas o varias #ilas.
-ara entender me+or el #uncionamiento de %ste m%todo realizaremos un e+emplo pr(ctico, que consistir(
en realizar la b'squeda de un elemento qu6mico dentro de una tabla. $s decir tendremos una tabla con
cierta cantidad de elementos qu6micos, para buscar un determinado elemento deberemos introducirlo
dentro del campo de texto respectivo, seguidamente deberemos presionar el botn .uscar e
inmediatamente se resaltar( la #ila en la cual se encuentra el dato que est(bamos buscando >si #ue
encontrado?.
La inter#az gr(#ica quedar6a como sigue:
!omo vemos en la anterior imagen buscamos el elemento IDecanoI que se encuentra a lo 'ltimo de la
tabla, por lo que las barras de desplazamiento se movieron autom(ticamente hasta hacer visible la #ila
donde se encuentra el dato.
/i realizamos una nueva b'squeda, la #ila seleccionada anteriormente se deseleccionar( y se
seleccionar( la #ila donde se encuentra el dato de la 'ltima b'squeda, como podemos ver en la siguiente
imagen:
$l cdigo que va dentro del botn Buscar para realizar este programa es el siguiente:
private void btn%uscarDctionPer0ormed(java#a/t#event#Dction)vent evt)
String ele , t*t)lemento#get5e*t()&
0or (int i , 8& i V tbComponentes#get=o/Count()& iPP)
i0 (tbComponentes#getBalueDt(i< 1)#e:uals(ele))
tbComponentes#c2angeSelection(i< 1< 0alse< 0alse)&
break&
(
(
(
Del anterior cdigo podemos observar en la l6nea de cdigo H que los par(metros toggle y e)tend del
m%todo c.ange-election deben estar en .alse, para traba+ar de la manera que nos propusimos en el
e+emplo: mantener seleccionada solamente una #ila por cada b'squeda.
/in embargo puede haber otras ocasiones en las que se necesita seleccionar m(s de una #ila a la vez,
para ello pueden I+ugarI con el cdigo de e+emplo que les estoy pasando, cambiando los valores de los
par(metros toggle y e)tend para poder visualizar me+or qu% Ipapel +ueganI dentro del m%todo.
Les recomiendo leer la documentacin o#icial del m%todo selection!hange de la clase &"able, donde
encontrar(n una breve explicacin sobre el mismo y sus par(metros.
)o se preocupen que no me olvido de de+arles el c+digo 3uente programado en Java utilizando
NetBeans !< para que puedan practicar. $spero les haya sido de utilidad, cualquier acotacin o aporte
ser( bienvenido, hasta la prxima.
%uente: http:11+edicerocool.blogspot.com1;<,,1<,1como3seleccionar3una3#ila3de3un3+table.html
Desplegar datos en jta*le /net*eans0
-uedes en un boton o #uncion colocar esto:
!digo:
@bject[][] dtPer&
String[] columNames , $aleatorio$<$2ora de llegada$<$2ora de entrada$<$tiempo de
servicio$<$2ora de salida$<$longitud de la cola$(&
dtPer , get;atos()&
;e0ault5ableModel datos , ne/ ;e0ault5ableModel(dtPer<columNames)&
tabla#setModel(datos)&
y la #uncion getDatos>? seria:
!digo:
public @bject [][] get;atos()
int registros , 8&
tr"
PreparedStatement pstm , con#getConnection()#prepareStatement($S)4)C5
count(1) as total 6=@M 2orario$)&
=esultSet res , pstm#e*ecute3uer"()&
res#ne*t()&
registros , res#getAnt($total$)&
res#close()&
(catc2(S34)*ception e)
S"stem#out#println(e)&
(
@bject[][] data , ne/ String[registros][9]&
tr"
PreparedStatement pstm , con#getConnection()#prepareStatement($S)4)C5 $ P
$ aleatorio< 2ora?llegada< 2ora?entrada< tiempo?servicio< 2ora de
salida< longitud?cola $ P
$ 6=@M 2orario$ P
$ @=;)= %> aleatorio $)&
=esultSet res , pstm#e*ecute3uer"()&
int i , 8&
/2ile(res#ne*t())
String v1 , res#getString($aleatorio$)&
String v! , res#getString($2ora?llegada$)&
String v' , res#getString($2ora?entrada$)&
String v7 , res#getString($tiempo?servicio$)&
String v+ , res#getString($2ora de salida$)&
String v9 , res#getString($longitud?cola$)&
data[i][8] , v1&
data[i][1] , v!&
data[i][!] , v'&
data[i]['] , v7&
data[i][7] , v+&
data[i][+] , v9&
iPP&
(
res#close()&
(catc2(S34)*ception e)
S"stem#out#println(e)&
(
return data&
(
%uente: http:11EEE.#orosdelEeb.com1#D=1desplegar3datos3+table3netbeans3Q9<;HQ1
E)traer datos de un jta*le a un jte)t3ield
-ara obtener un valor de una tabla existe un metodo getLalueAt>#ila, columna? un e+emplo seria asi
Anteger id , (Anteger) tabla#getBalueDt(tabla#getSelected=o/()< 8)&
luego 2arias el t*t#set5e*t(Anteger#toString(id))&
%uente: http:11EEE.#orosdelEeb.com1#D=1auxilio3extraer3datos3+table3+text#ield39;D<991
CustomiMando un JTa*le, .Hgalo usted mismo en < simples pasos
$l ob+etivo de este art6culo es modi#icar un &"able para que quede totalmente distinto y me+orado. /i no
les sirve tal como queda al #inal, no se preocupen ya que pueden sacar buenas ideas de los pasos
intermedios. $mpecemos, el ob+etivo es tran#ormar:
$n`
'aso #: ,odi3icar el ,odelo del JTa*le JDe3aultTa*le,odel
-ara no meter m(gia y misticismo en esto, vamos a usar directamente el editor de )etbeans. -ara ello
seleccionamos la "abla, y en las propiedades buscamos VmodelW y le damos a los tres puntitos VTW
$sto va a abrir un editor muy simple, la idea es de+ar sin #ilas la tabla y con solo dos columnas >para
este caso la primera tiene el icono y la segunda tiene el texto?.
Deber6an con0igurar algo como esto:
!uando terminemos ya deber6amos tener nuestra tabla en el siguiente estado:
'aso 9: >ue no se muestre la ca*ecera del JTa*le
$sto es muy simple de hacer, pero es por la mayor6a desconocido. La idea es que la cabecera >5cono c
"exto? est%, pero no se muestre. -ara esto seleccionamos el &"able, y buscamos en el cuadro de
propiedades Vta*le7eaderW y le damos a los tres puntitos VTV. La idea aca es poner un null como
parametro del constructor para esto, dentro del editor, seleccionamos en el combo VC+digo 'ersonalW
y ponemos >null?.
Lamos avanzando y seguro ya tenemos algo como %sto:
'aso :: Creando el 5enderiMador de las celdas
$ste es el V2iller stepW de la idea, donde la mayoria toma aire, cuenta hasta ,< y tira la compu al patio
no sin antes recordar a la madre de los desarrolladores de sun y desear que les pase un 0ocus por arriba.
Lo que tenemos que hacer es crear una clase que ser( utilizada para renderizar las celdas, en ella vamos
a escribir como se va a mostrar cada una y de que #orma. -arece sumamente complicado, salvo que
tenemos un As ba+o la manga, los +Label.
$l +Label si tiene algo de bueno es que podemos mostrar un icono1im(gen en %l, entonces ser6a buena
idea poder hacer que cada celda del JTa*le sea un j?a*el!
$l cIdigo de esta clase se los dejo a continuaciIn " comentado< luego 2ago unas
breves acotaciones:
-..
. ;escripciIn: Cn renderiMador de celdas de un G5able :ue pone
. un j4abel en cada una de las celdas para :ue se pueda poner
. un icono-imagen
. Fversion 1#8
. Faut2or Auga
. Fcambios
. Ftodo
.-
public class AconCell=enderer e*tends ;e0ault5ableCell=enderer
-..
. DcO rede0inimos como se muestra< vemos : a2ora lo 0orMamos a
. trabajar con G4abel< pero si no lo es< por ejemplo un String
. igual lo muestro llamando a Super
.-
public Component get5ableCell=endererComponent (G5able table< @bject value< boolean
isSelected<boolean 2as6ocus< int ro/< int column)
i0(isSelected)
l#set%ackground(t#getSelection%ackground())&
l#set6oreground(t#getSelection6oreground())&
(
else
l#set%ackground(t#get%ackground())&
l#set6oreground(t#get6oreground())&
(
(
!omo vemos, rede#inimos dos m%todos de De#ault"able!ell7enderer, el primero indica que y como
vamos a mostrar la celda >y vemos que traba+amos con &Label? y el segundo m%todo est( atento a los
cambios de color para ahcerlo uni#orme y que no desentonen los colores.
Ahora lo que resta es pasarle el 7ederer al &"able para que use %ste en lugar del De#ault.
j5able1#set;e0ault=enderer(@bject#class<ne/ AconCell=enderer())&
$n este punto no tenemos cambios visuales, as6 que sigamos con el siguiente paso
'aso ;: ?lenando el JTa*le con datos de 'rue*a
Ahora a probar el producto terminado. Lamos a cargar algunas #ilas con datos, vamos con los datos de
una sola #ila para que se entienda la idea:
@bject[] 0ila , ne/ @bject[!]&
AmageAcon icon , ne/
AmageAcon(getClass()#get=esource($-res-iconos-plantillas-vacio#png$))&
0ila[8] , ne/ G4abel(icon)&
0ila[1] , $Presupuesto en %lanco$&
!omo vemos el primer valor del Array es un &Label con un icono y sin texto. >Nota: 6i/ podr<amos
5aber 5ec5o una sola columna y que muestre icono y te%to al mismo tiempo/ pero era para me8orar el
e8emplo y demostrar que podemos me=clar JLabels y otros tipos de datos sin complicar el modelo?.
4na vez que tenemos los datos solo queda agregarlos al modelo de la tabla:
;e0ault5ableModel modelo , (;e0ault5ableModel)j5able1#getModel()&
modelo#add=o/(0ila)&
'aso <: ,ejorando la Cisual del JTa*le y la altura de las celdas
-rimero tenemos que a+ustar, en cada caso, la altura de las celdas de acuerdo al tama*o de los
iconos1im(genes que mostremos, as6 no nos corta la im(gen como en el caso anterior.
-- ;onde +8 es el tamaLo :ue :uerramos en la celda seg]n lo : necesitemos
j5able1#set=o/Jeig2t(+8)&
Ahora podemos cambiar un poco el tama*o de la tabla para que quede acorde a los datos y el tama*o
de las celdas. -ara esto nuevamente recurrimos a la #acilidad que nos da )etbeans y vamos a otro editor
haciendo Vclic4 derec.oW en la &"able y en VContenido de la Ta*laTW y vamos a la segunda /olapa
VColumnasV, en cada una podemos con#igurar el tama*o m6nimo, sugerido y m(ximo.
"odo lo bueno tiene #in, y este #ue el nuestro, ya con esto tenemos nuestro &"able modi#icado
completamente y si seguimos bien los pasos deber6amos tener algo como esto:
Lo que sigue es llenar la tabla con datos a nuestro anto+o, poner o sacar columnas, simplemente
modi#icarla a nuestro anto+o.
%uente: http:11hac2elare.Eordpress.com1;<,<1<U1;B1customizando3un3+table3hagalo3usted3mismo3en3
=3simples3pasos3leer3con3la3voz3de3sprayette1
Ta*las en net*eans
:uchas veces me han preguntado, oye como se usan las tablas en netbeansS o como puedo hacer
din(mica una tabla en +avaS, y la mas #recuente como puedo hacer din(mica una tabla con netbeansS la
cual es la misma que la anterior, por lo que decid6 escribir cada paso de lo que yo normalmente hago
cuando mane+o tablas, no se si sea lo mas correcto, pero a mi me #unciona:
Aqu6 supondr% que sabemos usar netbeans hasta el punto en el que se inserta una tabla, es decir cuando
podemos ver algo como esto:
a teniendo la tabla creada se pueden modi#icar sus propiedades de #orma gr(#ica dando clic23derecho
sobre la tabla que creamos
Aparecer( un cuadro de dialogo que describe las propiedades de la tabla, en la primera pesta*a Imodelo
de la tablaI se indica de donde se obtendr(n los datos de la tabla, la verdad, de esa pesta*a no se casi
nada si embargo si nos pasamos a la pesta*a que dice !olumnas ,
-odemos ver las propiedades de cada columna ; en esta parte podemos cambiar el tipo de el valor que
aceptara la tabla, si es editable o si se puede cambiar el tama*o de la celda y por supuesto el nombre de
la columna y los n'meros B,D,=,9 en la seleccin de modelo indican la #orma en que se podr(n
seleccionar las celdas de la tablaP a continuacin una descripcin de lo que hacen:
B solo permite la seleccin de #ilas
/i se selecciona D solo se podr( seleccionar una sola celda
/i se selecciona = se podr( seleccionar m'ltiples celdas, pero estas deber(n ser vecinas
por ultimo si se selecciona 9 se podr( seleccionar celdas sin importar que sean vecinas o no
Los tipos que se pueden seleccionar en las tablas son los que se muestran en la imagen, lo cual puede
ser 'til para recabar datos con #ormato, en lo personal, no me gusta usar las +tables para recabar datos
porque siempre se tiene un problema al insertar el ultimo dato, pero de igual #orma al de#inir el tipo del
ob+eto de una columna esta no aceptara que se inserte otro tipo de valor y en adicin, al seleccionar
boolean el valor de las columnas cambiaran por un chec2box donde la palomita signi#ica true, y vaci
#alse
Despu%s de cambiarle el #ormato a la tabla todo lo que quieras, podemos seguir con lo din(mico, ahhh
la pesta*a de #ilas o roEs solo permite agregar o quitar renglones en la tabla, pero bueno eso no nos
sirve si lo que queremos es ponerlos dinamicamente.
$sto de #ormatear la tabla servir( ahora tenemos una tabla que solo acepta ciertos tipos de datos, con
todos los renglones en blanco.
$stas tablas, sin tener que ver con netbeans se mane+an de #orma di#erente de la que muchos pensamos,
la +"able es mas bien una versin gr(#ica, y sus datos provienen de un "able:odel y ese es el que se
necesita saber utilizar bueno, en si el "able:odel no, sino un hi+o de este, el De#ault"able:odel, el
cual permite manipularlo #(cilmente. solo necesitamos pues sacarlo de ah6, ya que si revisas el cdigo
que genero el netbeans en la #uncin de init!omponents dice algo como
ne/ jtable(ne/ ;e0ault5ableModelcosas raras de netbeans()&
$n las cosas raras de netbeans se desarrollan todas las caracter6sticas que seleccionamos gr(#icamente
para aplicar a la tabla, entonces, despu%s de init!omponets sacamos el ob+eto del modelo de la tabla, lo
casteamos y lo guardamos en un atributo de nuestra clase.
private java*#s/ing#table#;e0ault5ableModel modelo&--atributo de nuestra clase
public Anicio() --este es el constructor de la tabla
initComponents()&
modelo , (java*#s/ing#table#;e0ault5ableModel)tabla#getModel()&--con esta
linea obtenemos el modelo
tabla#setModel(modelo)&--con esta instruccion se pueden cambiar las
caracteristicas de la tabla por otro modelo
(
con el modelo guardado podemos realizar varias acciones como agregar un rengln, borrar un
rengln, agregar datos, modi#icarlos, y obtener los valores de la tabla.
--borrar renglIn seleccionado
tr"
modelo#remove=o/(tabla#getSelected=o/())&
(catc2()*ception e)
java*#s/ing#G@ptionPane#s2o/Message;ialog(t2is< $Seleccione almenos
una celda$<$)rror$<java*#s/ing#G@ptionPane#)==@=?M)SSDU))&
(
--insertar renglIn con datos
modelo#add=o/(ne/ @bject[]!'<$Jola$<!'#+<true()&--4os datos del nuevo
renglon de la tabla< se puede insertar un renglon vacio si en lugar de los
datos se pone (
--modi0icar datos de la tabla esto se puede 2acer directamente desde la tabla< pero
lo 2aremos con el modelo
modelo#setBalueDt($valorNuevo$<renglon<columna)&
--tomar un valor de la tabla ojo:los valores salen en 0orma de object por lo :ue se
necesitan castear
@bject variable , modelo#getBalueDt(renglon<columna)&
listo tenemos una tabla din(mica P?
De cualquier #orma de+o el cdigo de e+emplo en mi pagina http:11luismy.espaciogratis.in#o
%uente: http:11#aq3netbeans.blogspot.com1;<,,1<,1tablas3en3netbeans.html
J?ist
(rc.ivos necesarios:
$l &List nos permite crear una lista para agregar a nuestras aplicaciones. A di#erencia del &!ombo.ox
que puede crecer muy #(cilmente, el &List es un poco m(s di#6cil de mane+ar pero nos permite hacer
cosas m(s interesantes que el &!ombo.ox. "ambi%n veremos cmo utilizar algunas otras clases que
nos van a permitir mane+ar un &List de una manera m(s e#iciente por e+emplo para permitir que crezca
de manera din(mica. -odemos utilizar listas para mostrar a los +ugadores en un +uego de mesa o
tambi%n podemos utilizarla para mostrar una lista de contactos.
La clase que incluye este trial es un programa que 'nicamente incluye un &List con los nombres de los
empleados de una empresa. $l programa nos permite contratar m(s empleados y despedirlos seg'n sea
necesario.
:ain.+ava
IC+mo utiliMar un J?istJ
!onstruir un &List
es muy sencillo si
no queremos que
sea din(mico, es
decir: si queremos
que el usuario no
pueda agregar m(s items. -ara hacerlo basta con declarar un arreglo de /tring y pasarlo como
par(metro al constructor del &List.
-ara hacer que el &List tenga una barra
de desplazamiento es necesario utilizar
una clase auxiliar llamada &/croll-ane.
$sta clase se va a detallar en alg'n trial m(s adelante, pero por el momento se debe de construir como
se ve en la #oto.
$s importante notar que el &/croll-ane es el que se a*ade a la #orma y no la lista en si. $sto es porque
el &/coll-ane contiene a la lista.
-ara escuchar eventos en una lista
>por e+emplo para saber cuando se
seleccion un elemento? es necesario
importar un nuevo tipo de escuchador
de eventos. -rimero que nada
tenemos que importar la librer6a:
+avax.sEing.event.X despu%s la clase
tiene que implementar List/election3
Listener y por 'ltimo tenemos que
hacer un m%todo value!hanged>? que
recibe un ob+eto List/election$vent.
Dentro de este m%todo podemos utilizar la variable List/election$vent para saber cu(l #ue el &List que
mand llamar el m%todo mediante el m%todo get/ource>? que es igual que el que hab6amos utilizado
hasta ahora.
Bn paso mHs allH
4na parte importante de las listas es el poder agregar
y eliminar registros. -ara hacer esto necesitamos
crear un ob+eto llamado De#aultList:odel e iniciar
el &List con este ob+eto en vez de con el arreglo de
/tring como hab6amos visto en la primera parte.
!omo podemos ver aqui podemos agregar elementos
al De#aultList:odel utilizando el m%todo
add$lement>? que recibe un /tring con el elemento a
a*adir.
4na vez que ya tengamos el De#aultList:odel con todos los elementos que queramos es hora de crear
la lista con el constructor que recibe el De#aultList:odel. 7ecuerda que la variable list:odel que
estamos utilizando en el cdigo es un ob+eto tipo De#aultList:odel.
4na vez que ya creamos la lista
podemos utilizar nuestro De#ault3
List:odel para eliminar los eleven3
tos que queramos, si sabemos el 6n3
dice en que lugar #ueron agregados
>que es la misma posicin en la que
aparecen en el &List? con el m%todo
remove$lementAt>? que recibe 'ni3camente un n'mero que es el 6ndice a borrar. "ambi%n hay un
m%todo del &List que nos permite saber qu% elemento est( seleccionado. $l m%todo get/elected5ndex>?
nos devuelve el 6ndice del elemento que est% seleccionado en ese momento.
$ntonces, para poder borrar un elemento de un &List podemos utilizar +untos el m%todo para borrar el
registro en un 6ndice y el m%todo que nos devuelve el 6ndice que est( actualmente seleccioando, con lo
que podemos borrar el elemento que seleccion el usuario. /i nuestro &List permite elegir m(s de un
elemento entonces el m%todo get/elected5ndex>? no #unciona, para leer un poco m(s acerca de cmo
mane+ar listas donde se puedan mane+ar multiples selecciones consulten la clase :ain.+ava que se les
da al principio.
"ambi%n es importante saber cmo
guardar los datos de un
De#aultList:odel a un archivo.
"ambi%n hay un m%todo que nos
devuelve que tantos elementos se han
agregado al De#aultList:odel llamado
get/ize>?, este m%todo lo podemos utilizar para hacer un #or que guarde desde < hasta el tama*o todos
los registros que encuentre, es m(s sencillo mane+ar este tipo de guardado en archivos de texto por lo
que les recomiendo que lo hagan as6.
%uente: http:11EEE.maguso#t.net1trials1list.html
7acer 1ue una celda del JTa*le no sea edita*le
/i usamos De3aultTa*le,odel las celdas del JTa*le son editables por de#ecto. A veces esto no nos
interesa y JTa*le no tiene m6todos para impedirlo. La #orma de decidir qu% celdas son o no editables
es hacer nuestro propio modelo de datos, nuestro Ta*le,odel. La #orma sencilla de hacerlo es heredar
de De3aultTa*le,odel y rede#inir el m%todo isCellEdita*le/0 para que sirva a nuestros propositos
public class MiModelo e*tends ;e0ault5ableModel
-.. Se le pasa el te*to del editor " debe devolver una clase Ma"uscula .-
public @bject string5oBalue(String te*t) t2ro/s Parse)*ception
return ne/ Ma"usculas(te*t)&
(
-.. Se le pasa una clase Ma"uscula o null " devuelve la cadena para poner en
el editor .-
public String value5oString(@bject value) t2ro/s Parse)*ception
i0 (value,,null)
return ($$)&
return value#toString()&
(
(
.ien, ya tenemos todo lo necesario construido. Ahora solo hay que instanciar el &0ormatted"ext0ield
pas(ndole en el constructor nuestra clase 0ormateador y con setLalue>? darle un primer valor v(lido
para evitar problemas.
G6ormatted5e*t6ield te*t6ield , ne/ G6ormatted5e*t6ield(ne/ 6ormateador())&
te*t6ield#setBalue(ne/ Ma"usculas($2ola$))&
$l m%todo getCalue/0 nos devolver( una clase ,ayusculas y a trav%s de setCalue/0 podemos pasarle
una clase ,ayusculas sin problemas.
-uedes ver un Applet con este editor #uncionando y descargarte sus #uentes.
J%ormattedTe)t%ield con mHscara para %loat
$xisten varios J%ormattedTe)t%ield!(*stract%ormatter adem(s de los que podamos hacernos
nosotros. 4no de los m(s conocidos es el ,as4%ormatter. $ste #ormateador restringe el texto v(lido
incluso mientras lo estamos tecleando. Al instanciar el ,as4%ormatter le damos un IpatrnI sobre
cmo queremos que sea el texto. 4na vez con#igurado todo, el usuario no podr( escribir en el
%ormattedTe)t%ield nada que se salga de ese IpatrnI. Leamos con un e+emplo qu% quiero decir.
/upongamos que quiero un editor que me permita escribir un n'mero con dos ci#ras enteras y dos
decimales. )o queremos que el usuario escriba algo que no sea un n'mero y no queremos que escriba
ni m(s ni menos de las ci#ras de las indicadas. $l editor debe admitir y devolvernos con setCalue/0 y
getCalue/0 un %loat.
-ara conseguir esto, basta instanciar un :as20ormatter y pas(rselo al &0ormatted"ext0ield en el
constructor. -ara evitar problemas, le damos un valor v(lido inicial v(lido al editor. $l neE
:as20ormatter lanza una excepcin, as6 que debemos capturarla.
tr"
super()&
te*to , te*t&
conpunto , condecimales&
puntodecimal , punto;ecimal&
(
F@verride
public void ke"5"ped(Re")vent e)
c2ar tecla , e#getRe"C2ar()&
i0(conpunto SS (tecla ,, puntodecimal))
i0 (te*to#get5e*t()#contains($$Ppuntodecimal))
e#consume()&
(
( else
i0 ($81!'7+9\ZY$#inde*@0(tecla) ,, N1)
e#consume()&
(
(
(
%uente: http:11#orode+ava.com1shoEthread.php1DH=D3)ecesito3Lalidar3un3&text0ield3y3de#inir3un3tamad!Bd.,o3#i+o3para3mi3aplicacid!Bd.Bn#
Java: Convertir un Date en un -tring 3ormato ddD,,Daaaa
/i tenemos un Date y lo queremos convertir en una #echa, por e+emplo, en el #ormato que se*alo en el
t6tulo, simplemente hay que hacer:
java#util#;ate date , ne/ java#util#;ate()&
java#te*t#Simple;ate6ormat sd0,ne/ java#te*t#Simple;ate6ormat($dd-MM-""""$)&
String 0ec2a , sd0#0ormat(date)&
7ealmente, con el /impleDate0ormat, podemos dar el #ormato que deseemos a las #echas. /i por
e+emplo quisi%semos poner la #echa en #ormato anglosa+n, simplemente habr6a que cambiar la l6nea
donde usamos el constructor y escribir`
java#te*t#Simple;ate6ormat sd0,ne/ java#te*t#Simple;ate6ormat($""""-MM-dd$)&
%uente: http:11blogs.vandal.net1BUU91vm1,HBHB,B,H;<<Q
Convertir datetime a string
m"String;ate,m"String;ate#trim()&
i0(m"String;ate#e:uals($$) WW m"String;ate#e:ualsAgnoreCase($null$))
m"String;ate,t2is#0ec2aJo"S()&
dia,m"String;ate#substring(9< Z)&
mes,m"String;ate#substring(7< 9)&
ano,m"String;ate#substring(8< 7)&
( else
dia,m"String;ate#substring(Z<18)&
mes,m"String;ate#substring(+<\)&
ano,m"String;ate#substring(8<7)&
(
%uente2 http:11EEE.todoexpertos.com1categorias1tecnologia3e3internet1programacion1+ava1respuestas1;<BDD<,1convertir3datetime3a3string
Java: JTa*le scroll a la $ltima 3ila cada veM 1ue se agrega una
?a Idea:
!uando se agrega dinamicamente una #ila a un &"able, el #oco de %sta no se altera, osea parecen las
#amosas barras de scroll y se siguen agregando datos, que si queremos ver, tenemos que scrollear. $l
ob+etivo de %ste cdigo ser6a que automaticamente cada vez que se agrega una #ila, ponerla en #oco
El Bso:
4na tabla que vaya registrando eventos de bit(cora > 4n Log ? e ir viendo en tiempo real que sucede sin
tener que estar usando la barra.
El C+digo:
public void agregar6ila5abla(###)
--CIdigo :ue agrega una 0ila en la tabla
--######
-- Scroll a la ]ltima 0ila
int ro/,tabla#get=o/Count()N1&
=ectangle rect,tabla#getCell=ect(ro/< 8< true)&
tabla#scroll=ect5oBisible(rect)&
tabla#clearSelection()&
tabla#set=o/SelectionAnterval(ro/< ro/)&
;e0ault5ableModel modelo,(;e0ault5ableModel)tabla#getModel()&
modelo#0ire5able;ataC2anged()&
(
%uente: http:11hac2elare.Eordpress.com1;<,,1<91;H1+ava3+table3scroll3a3la3ultima3#ila3cada3vez3que3
se3agrega3una1
JT(B?E
4n &"able es un componente visual de &ava que nos permite dibu+ar una tabla, de #orma que en cada
#ila1columna de la tabla podamos poner el dato que queramosP un nombre, un apellido, una edad, un
n'mero, etc.
http:11EEE.abcdatos.com1tutoriales1tutorial1zB,;Q.html
#e.inici-n Jtable
&table es una clase que me permite organizar una determinada in#ormacin en tabla, esta di#iere de una
base de datos normal porque al utilizar &table tu puedes visualizar esta tabla, brind(ndole a el usuario
organizacin de in#ormacin, oportunidades de editar y cambiar el tama*o de las columna entre otras.
&3&C&(6 #' J!*$L'
$n principio se creo la clase &table para constituir un inter#az ligado a bases de datos a trav%s de I&ava
Database !onnectivityI >&D.!?, y as6 evita la comple+idad que exist6a par el mane+o de datos, dando
as6 al programador mucha mas #acilidad a la hora de traba+ar con este tipo de in#ormacin.
&table le da al programador muchas #acilidades, pues este posee varias caracter6sticas que permiten
hacer desde tablas con in#ormacin comple+a y muy estructurada hasta tablas con in#ormacin sencilla
y Ib(sicaI.
!*$L' @(#'L
La clase &table controla como se presentan los datos, siendo el "able:odel quien controla los datos s6
mismos. para crear una &table habr( pues que crear un "able:odel antes, normalmente. "able:odel lo
que hace es predeterminar ciertas caracter6sticas para el &table es decir que tu puedes poner ciertos
par(metros dentro de un "able:odel y as6 no tener que determinarlos siempre. "able:odel es un
programa que guarda los datos de la tabla para si mismo, es decir, puede tener la in#ormacin de la
tabla pero estos datos son los visualizados por el computador, es decir, para visualizar una tabla el
"A.L$:@D$L puede tener la in#ormacin pero sin el &table no se puede visualizar para el usuario.
'#&!*$L' ( 3(A
&table tiene una caracter6stica muy llamativa, este permite que el programador pueda decirdir que se
edita y que no, sin embargo si el programador dentro de su programa o de su "A.L$:@D$L no tiene
determinado este aspecto, &table autom(ticamente hace editable las celdas dentro de la tabla. $xisten
varias maneras de hacer editable o no las celdas dentro de la tabla, para ver estos comandos tu te
puedes dirigir a Dentro de las celdas encontradas en una tabla se puede permitir al usuario editar o no
editar seg'n lo desee el programador, esta propiedad se puede arreglar desde el table model o
directamente y1o desde el programa. &table tiene la propiedad de de+ar editable las celdas si no
encuentra nada que hable de esto.
B L* &3"(R@*C&C3/ B L*6 C(LD@3*6A1
&table te brinda muchas #acilidades para poder crear una table, y as6 mismo de llenarla con la
in#ormacin que desees > n'meros, letras etc...? por lo que sencillamente dentro de una tabla esta
autom(ticamente a trav%s de la in#ormacin debidamente separada 3 por II>comillas? o por , >coma? 3 es
capaz de contabilizarlas y al mismo tiempo llenarla con la in#ormacin que se le dioP es decir el
programador solo se debe encargar de poner los t6tulos de las tablas y as6 mismo de escribir la
in#ormacin en el mismo orden en que desee que salga de acuerdo con los t6tulos y &table se encargara
autom(ticamente de colocar la in#ormacin donde se le indico.
D3 C;'C7 $(EA
-ara un !ell7endered con un "able:odel sencillo, tal vez identi#icar clases pueda ser algo mas
comple+o que no pueda hacer, pero para uno un poco mas avanzado, esto seria muy #(cil, y para esto
cito el caso de un !F$!A .@M>casilal de veri#icacin? el cual es un componente gra#ico generado por
&table despu%s de que identi#ica una in#ormacin tipo boolean, d(ndole as6 la apariencia de un cuadro
rellenable, un chec2 box no es mas que eso, una opcin 3 que puede ser editable o no 3 que simplemente
se chulea para indicar un si o un no > si esta chuleado signi#ica verdadero, sino lo esta indica #also?, la
cual el usuario solo puede colocar mediante un "able:odel que sepa identi#icar clases.
D3 L&6! $(EA
$n algunas oportunidades, para cierto tipo de in#ormacin que deseamos que el usuario complete,
necesitamos darle a el usuario, cierto tipo de opciones cosa que a trav%s de un List .ox tu puedes
o#recer al usuario el tipo de respuestas que tu desees que el selecciones, este tipo de organizacin de
in#ormacin ya no es tan sencillo como declarar una in#ormacin tipo boolean, toca crear la lista.
http:11EEE.g#c.edu.co1estudiantes1anuario1;<<;1sistemas1ale+andra1&table.+un21c;.html
La #orma m(s sencilla de usar un &"able y tener toda su #uncionalidad es instanciar un De#ault"able3
:odel y meterlo en el &"able, en el constructor
;e0ault5ableModel modelo , ne/ ;e0ault5ableModel()&
G5able tabla,ne/ G5able(modelo)&
-odemos a*adir columnas directamente en el modelo
modelo#addColumn($eti:ueta columna 1$)&
modelo#addColumn($eti:ueta columna !$)&
-odemos a*adir datos directamente en el modelo, as6 como borrarlos o modi#icarlos
@bject [] 0ila , ne/ @bject[!]&
0ila[8],$dato columna 1$&
0ila[1],$dato columna '$&
modelo#add=o/ ( 0ila )&-- DLade una 0ila al 0inal
modelo#setBalueDt ($nuevo valor$< 8< 1)&--Cambia el valor de la 0ila 1< columna !#
modelo#remove=o/ (8)&-- %orra la primera 0ila
"odo lo que hagamos se re#le+ar( de inmediato en el &"able.
@btener #ila y columna del &"able en la que se hace clic2
A veces nos interesa seleccionar una #ila del &"able para hacer algo con ella >sacar un men', recoger
datos para mostrarlos en otro sitio, etc?.
4na #orma de hacerlo es a*adiendo un :ouseListener al &"able, de esta manera:
tabla#addMouse4istener(ne/ MouseDdapter()