Upload
ben-avraham
View
215
Download
0
Embed Size (px)
DESCRIPTION
tip
Citation preview
14/4/2015 TutorialesdeProgramacionJava:CreacindeReportesconJasperRepotsyiReportsParte2:UsodeDataSourcesPersonalizados
http://www.javatutoriales.com/2009/03/creaciondereportesconjasperrepotsy.html 1/26
BlogdedicadoatemasdeprogramacinactualesusandoellenguajedeprogramacinJavaylasltimasversionesdesusAPIsyHerramientas.
TutorialesdeProgramacionJava
Pginaprincipal PginadeConcursos TutorialesUPAO2010 PresentacionesCapacitacin
LUNES,2DEMARZODE2009
Creacin de Reportes con JasperRepots y iReports Parte 2: Uso deDataSourcesPersonalizadosEnelprimerpostdelaseriedeJasperReportshabldecmocrearunabibliotecaparatrabajarconJasperReportsycmocrearunreporteenmltiplesformatos.AdemshicimosunejemplodecreacindereportesusandounaconexinJDBCdirectaanuestrabasededatos.
Ahora veremos cmogenerar nuestros reportes sin hacer uso de una conexin.Esto puede sermuy til en los casos en los que yatengamoslosdatosenmemoriaynonecesitemosrealizarunaconexinalabasededatosoenelcasoenque,poralgunaraznajenaanosotros,nopodamosobtenerlaconexin.
Para poder hacer esto se nos proporciona una interface: "net.sf.jasperreports.engine.JRDataSource". Esta interface tienesolodosmtodos:
getFieldValue(JRFieldjrField)
next()
Explicarestosmtodosunpocomsadelante,porahoracomencemosagenerartodolonecesarioparatenernuestroreporte.
CreamosunnuevoproyectoenNetBeans(men"File>NewProject...").Enlaventanadenuevosproyectosseleccionamoslacategora"Java"ycomo tipodeproyectoseleccionamos"JavaApplication" yhacemosclicenelbotn "Next".En lasiguienteventana introducimoselnombredenuestroproyectoydejamosseleccionadalasopciones"CreateMainClass"y"SetasMainProject".
Para que podamos pasar datos a nuestro reporte es necesario que utilicemos un datasource. En el ejemplo anterior veamos que eldatasourcequeusbamosera labasededatosy laconexina lamisma.Enestaocasineldatasourceserunadenuestrasclases.Esta clase deber implementar la interface "JRDataSource" y contendr la lgica para pasar los datos correspondientes a nuestroreporte.
Creamosunanuevaclasehaciendoclicderechosobreelnodo"SourcePackages"delaventana"Projects",osobreelpaquetequeyatenemoscreado,yenelmencontextualqueseabreseleccionamoslaopcin"New>JavaClass...".
Enlaventanaqueseabreescribimoscomoennombredelanuevaclase"Participante"ypresionamoselbotn"Finish".Conestoveremosenlaventanadenuestroeditorlanuevaclase"Participante".
Esta clase "Partcipante" representar los datos que semostrarn en el reporte, tal como en el ejemplo anterior cada uno de losregistrosdelatabla"participantes"representabaunafilaenelreportefinal,cadaobjetoparticipantequecreemosrepresentarunafilaenelnuevoreporte.
Agreguemoslossiguientesatributosanuestraclase:
DONACIONES
JAVATUTORIALESENFACEBOOK
JavaTutoriales
A24386personaslesgustaJavaTutoriales
PluginsocialdeFacebook
Megusta
JavaTutorialeshaaadidounafotonueva.
16MegustaSehacompartido1vez
Megusta Comentar
13demarzo
8 Ms Siguienteblog
14/4/2015 TutorialesdeProgramacionJava:CreacindeReportesconJasperRepotsyiReportsParte2:UsodeDataSourcesPersonalizados
http://www.javatutoriales.com/2009/03/creaciondereportesconjasperrepotsy.html 2/26
privateintid;privateStringnombre;privateStringusername;privateStringpassword;privateStringcomentarios;
Ademsagregamossusgettersysussettersydosconstructores,unosinargumentosyunoquerecibacomoargumentos todaslaspropiedadesdeclaradasanteriormente.
Si estn utilizando el NetBeans para seguir este tutorial pueden generar tanto los setters y los getters de forma automticapresionandolasteclas"Alt+Insert",conlocualseabrirunmencontextualconlasopcionesnecesariasparahaceresto:
Alterminar,suclasedebeversemsomenosas:
ParticiparenestesitioGoogleFriendConnect
Miembros(195) Ms
Yaeresmiembro?Iniciarsesin
SEGUIDORES
2015(1)
2013(1)
2012(2)
2011(11)
2010(10)
2009(22)septiembre(2)
agosto(2)
julio(1)
junio(3)
mayo(2)
abril(5)
marzo(2)CreacindeReportesconJasperRepots
yiReports...
CreacindeReportesconJasperRepotsyiReports...
febrero(2)
enero(3)
ARCHIVODELBLOG
14/4/2015 TutorialesdeProgramacionJava:CreacindeReportesconJasperRepotsyiReportsParte2:UsodeDataSourcesPersonalizados
http://www.javatutoriales.com/2009/03/creaciondereportesconjasperrepotsy.html 3/26
publicclassParticipante{privateintid;privateStringnombre;privateStringusername;privateStringpassword;privateStringcomentarios;
publicParticipante(){}publicParticipante(intid,Stringnombre,Stringusername,Stringpassword,Stringcomentarios){this.id=id;this.nombre=nombre;this.username=username;this.password=password;this.comentarios=comentarios;}
publicStringgetComentarios(){returncomentarios;}
publicvoidsetComentarios(Stringcomentarios){this.comentarios=comentarios;}
publicintgetId(){returnid;}
publicvoidsetId(intid){this.id=id;}
publicStringgetNombre(){returnnombre;}
publicvoidsetNombre(Stringnombre){this.nombre=nombre;}
publicStringgetPassword(){returnpassword;}
publicvoidsetPassword(Stringpassword){this.password=password;}
publicStringgetUsername(){returnusername;}
publicvoidsetUsername(Stringusername){this.username=username;}}
Ahora,antesdeseguirconnuestrocdigoJava,pasaremosacrearlaplantilladenuestroreporteconiReport,porloqueabrimosestaherramienta.
En esta ocasinno haremos uso de un wizard para crear el reporte, sino que lo haremos desde cero, y aprovechar para explicar
Alex
Programador Java con algunos aos deexperiencia en mltiples poyectos y conmltiples APIs y herramientas deseoso decompartir experiencias con el resto deprogramadores.
Vertodomiperfil
DATOSPERSONALES
14/4/2015 TutorialesdeProgramacionJava:CreacindeReportesconJasperRepotsyiReportsParte2:UsodeDataSourcesPersonalizados
http://www.javatutoriales.com/2009/03/creaciondereportesconjasperrepotsy.html 4/26
algunosconceptosbsicossobrelosreportesconformelosvayamosnecesitando.
Paracrearelnuevoreportevamoselmen"File>New...".Enlaventanaqueseabreseleccionamosunodelosformatos"Blank"ypresionamoselbotn"OpenthisTemplate":
Despus introducimoselnombredel reporte,yo lo llamar"reporte2.jrxml",y laubicacinen laqueseguardar.LesrecomiendoqueenestaocasinguardenelreporteeneldirectoriorazdelproyectodeNetBeansqueacabamosdecrear.Hacemosclicenelbotn"Next" y se nosmostrar unmensaje de felicitacin por haber creado un nuevo reporte (^_^!).Cuando presionen el botn "Finish"vernunahojadivididaen7u8diferentesporcioneshorizontalesllamadasbandas.
Cuandogeneramosnuestroreportefinalcondatos,cadaunadeestasbandassecomportadeunaformadistinta.Algunasaparecensoloalprincipiooalfinaldelreporte,otrasaparecenconcadanuevafilaqueseleagrega,otrassoloalfinaldelosdatos,etc.
Laplantilladereportesestdivididaen10bandaspredefinidas.Unabandasiempretieneelmismoanchoquelapgina.Sinembargoelaltodealgunasdelasbandaspuedevariardurantelafasedellenadodedatos,ansiestablecimosunaltoenelmomentodeldiseo.
Lasbandasexistentesson:
Background
Title
PageHeader
ColumnHeader
Detail1
ColumnFooter
PageFooter
LastPageFooter
Summary
NoData
Explicaralgunasdeestasbandasconformelasvayamosusandoenlostutorialescorrespondientes.
Loprimeroqueharemosesagregar textoanuestro reporte.EniReportexistendos tiposde texto: textoestticoy texto dinmico(tambin llamado expresiones). El texto esttico es aquel que no cambia, mientras que las expresiones son como etiquetas que leindicanaJasperReportsquedebereemplazarlasporalgnvaloralmomentodegenerarelreportefinal.
Existen3tiposdeexpresiones:
Campos(fields)representadoscon"$F{nombre_campo}".Variablesrepresentadaspor"$V{nombre_variable}".Parmetrosrepresentadospor"$P{nombre_parmetro}".
Cadaunodeestostiposdeexpresionestieneunusoparticular:
14/4/2015 TutorialesdeProgramacionJava:CreacindeReportesconJasperRepotsyiReportsParte2:UsodeDataSourcesPersonalizados
http://www.javatutoriales.com/2009/03/creaciondereportesconjasperrepotsy.html 5/26
Los campos ("$F{}") le dicen al reporte dnde colocar los valores obtenidos a travs del datasource. Por ejemplo, nuestro objeto"Partcipante"tieneunatributollamado"username".Usandounaexpresindecampoindicamosenculparteoseccindelreportedebeaparecerelvalordeeseatributousando"$F{username}".Estoquedarmsclarounpocomsadelante.
Losparmetros("$P{}")sonvaloresqueusualmentesepasanalreportedirectamentedesdeelprogramaquecreaelJasperPrintdelreporte (en nuestra aplicacin Java). Aunque tambin existen algunos parmetros internos que podemos leer pero nomodificar. Parahacerusodeestosparmetrossimplemente indicamoselnombredelparmetroenel lugarquequeremoscolocarlo.PuedenencontrarlosnombresysignificadosdelosparmetrosinternosenladocumentacindeJasperReports.
Lasvariables("$V{}") sonobjetosusadosparaalmacenar valores como los resultadosde clculos.Al igual que con losparmetros,JasperReports tienealgunasvariables internasquepodemos leer.Puedenencontrar losnombresy significadosde las variables ladocumentacindeJasperReports.
Cada uno de estos elementos tiene un nombre, un tipo (que debe corresponder con un tipo de objeto Java como String oInteger), yunadescripcin opcional.Ademsdebenser registradosparapoder serusadosen tiempodediseoyquepuedanserentendidosalmomentodecompilarel reporte,ypor lo tantoparaquenuestro reporte funcionecorrectamenteen tiempodeejecucin.Estoloveremosunpocomsadelante.
Regresemosadondenosquedamos.Queremosagregaruntextoestticoanuestroreporteamododettulo.Paraestodebemosagregarun elemento llamado "Static Text". Los elementos que podemos agregar a nuestros reportes estn en una ventana llamada"Palette",queseencuentraen lapartederechadeiReport,bajo lacategora "ReportElements".Sinopuedenver laventana"Palette"presionenlasteclas"Ctrl+Shift+8":
Deestaventanaarrastramos elelemento "StaticText"a labanda "Title". "Title" esunabandaquesoloapareceen lapartesuperiordelaprimerpgina.Porloquenossirveparacolocarelttulodelreportey/oelnombreylogodenuestraempresa.
Una vez que hayamos colocado el texto esttico en la banda correspondiente y mientras an est seleccionado, modificamos suspropiedadesusandolaventanadepropiedadesdelelementoylabarradeformatodetexto.Tambinpodemosabrirotraventanaquenosayudeaalinearycontrolarelaltoyelanchodeloselementosyendoalmen"Window>FormattingTools".
Ahora agregamos los encabezados de las columnas en las que semostrarn los datos que pasaremos al reporte. Agregamos estosnombresenlabanda"ColumnHeader",lacualserepetirencadapginaantesdemostrarlosdatosdelascolumnas.
Agregaremos las columnas "Nombre", "Usuario", "Contrasea", y "Comentarios". Por lo que nuevamente arrastramos unelemento"StaticText" para cada una de las columnas. Tambin podemos ajustar el alto de esta banda para que se ajuste al denuestrotexto,yaseamovindoladirectamenteeneldiseador,odesdelaventanadepropiedades:
Nuestroreporteyacasiestterminado,ahorasolonosquedaagregarloscamposenlosquesemostrarnlosdatosquepasaremosalreporteenunmomento.Paraqueestoscampospuedanser reemplazadosporel valor realesnecesarioqueusemos lasexpresiones
14/4/2015 TutorialesdeProgramacionJava:CreacindeReportesconJasperRepotsyiReportsParte2:UsodeDataSourcesPersonalizados
http://www.javatutoriales.com/2009/03/creaciondereportesconjasperrepotsy.html 6/26
(textodinmico)delasquehablanteriormente.Paraestodefiniremosun"field"paracadaunodeloscamposquequeramosmostrar(enestecasosernlosmismoscamposparalosquedefinimoslascabecerasdelascolumnas).
Losfieldsdebendefinirseantesdepoderserusados.Estadefinicinincluyeelnombredelfieldysutipo.Losfields(ascomoelrestode lasexpresiones)sedefinenen laventana"ReportInspector"a la izquierdadeldiseadordel reporte.Ahexisteunnodollamado"Fields"queesdondeseencuentranlosfieldsquehemosdefinidoyqueporlotantopodemosusar^^.
Hacemos clic derecho en el nodo "Fields" de la ventana "Report Inspector". Con esto se abre un men contextual.Seleccionamoslaopcin"AddField"(lanicahabilitada).
Con esto se agregar un field llamado "field1" que por default es de tipo "java.lang.String". Cambiamos el nombre de estecampopor "nombre" usando la ventana de propiedades. Esto es importante porque donde pongamos este campo ser en donde semuestreelvalordelcamponombredenuestrosobjetosParticipantes.
Hacemos lomismo para el resto de los campos ("username", "password", "comentarios", "id"). Hay que tener cuidado cuandoagreguemosel field"id".Si recuerdan,en ladefinicinde laclase"Participante" lapropiedad"id"estdefinidacomo"int". Sinembargo,aJasperReportssolopodemospasarleobjetosparaserusadoscomovalores,porloquesernecesariocambiareltipodelaclase("FieldClassenlaventanadepropiedades)a"java.lang.Integer"(aunqueenrealidadnomostraremosel"id"enesteejemplo).
Ahoradebemos indicarenqupartedenuestro reportequeremosquesemuestren losvalorescorrespondientesa losatributosde losobjetos"Participante"quelepasemos.Paraesosimplementearrastramos losfieldscorrespondientesal lugarenelquequeremosque semuestren (arrastramos el field "nombre" a donde queremos que semuestre el atributo "nombre", el campo "username" endonde queremos que se muestre el atributo "username", etc.) desde el "Report Inspector". Al arrastrar los fields, iReportagregarautomticamenteunencabezadoparaestefield,soloborrenelencabezadoagregado=).
Estosfieldsloscolocaremosenlabanda"Detail1"lacualserepitecadavezquerecibeunnuevoobjetoycolocasusvaloresenlamismafila(quedarmsclarocuandoejecutemoselejemplo).Alfinal,elreportedebequedardelasiguienteforma:
14/4/2015 TutorialesdeProgramacionJava:CreacindeReportesconJasperRepotsyiReportsParte2:UsodeDataSourcesPersonalizados
http://www.javatutoriales.com/2009/03/creaciondereportesconjasperrepotsy.html 7/26
Por el momento esto es todo lo que necesitamos hacer en iReport para mostrar este reporte bsico. Hacemos clic en el botn"CompileReport"paracompilarelreporteygenerarsuarchivo".jasper"respectivo.
Podemosverunavistapreviadelreportehaciendoclicenlapestaa"Preview".Asegrensedeseleccionarel"Emptydatasource"antesdeverelpreview,delocontrariolesaparecerunerrorindicadoqueeldocumentonotienepginas.Alfinaldebenveralgocomoesto:
Los"nulls"aparecenporquenoserecuperningnvalorquecoincidieraconelnombredeesefieldusandonuestrodatasource(queenestecasoestvaco,locualsolucionaremosacontinuacin).
RegresamosalNetBeansyahoracrearemosunaclasequeimplementelainterface"JRDataSource"delaquehablantes.Estaclaseserlaqueusaremoscomodatasourceparanuestroreporte,ylaqueregresarlosvalorescorrespondientesacadaunodelosfieldsquecreamosantes.
Primeroagregamosanuestroproyectolalibreria"JasperReports"quecreamosenelprimertutorialdelaseriedeJasperReports.EnestaocasinnonecesitaremosagregareljarconelDriverdelabasededatos,yaquenousaremosninguna^_^.
Creamos una nueva clase llamada "ParticipantesDatasource" y hacemos que esta nueva clase implemente la interface"JRDataSource".PodemoshacerqueNetBeans implementedeformaautomticalosmtodosdeestainterface(proporcionandounaimplementacin vaca) presionando las teclas "Alt + Insert" y seleccionando la opcin "Implement Method" en el mencontextualqueseabre.
Conestoseabrirunaventana llamada"GenerateImplementMethods"en lacualseleccionamos la interface "JRDataSource"paraqueseseleccionendeformaautomticatodossusmtodosyhacemosclicenelbotn"Generate".
14/4/2015 TutorialesdeProgramacionJava:CreacindeReportesconJasperRepotsyiReportsParte2:UsodeDataSourcesPersonalizados
http://www.javatutoriales.com/2009/03/creaciondereportesconjasperrepotsy.html 8/26
Conestotendremoslosdosmtodosimplementadosyencuyoscuerpossolohabr:
thrownewUnsupportedOperationException("Notsupportedyet.");
Ahora agregaremos a nuestra clase un atributo de tipo "java.util.List" llamado "listaParticipantes" que mantendrjustamenteeso:lalistadelosparticipantesdeloscualesmostraremoslosdatosenelreporte.Inicializamosestalistaaunobjetodetipo"java.util.ArrayList",deestaforma:
privateListlistaParticipantes=newArrayList();
Tambinagregamosuncontadorllamado"indiceParticipanteActual"detipo"int",queusaremosenseguida,yloinicializamosa"1"unpocomsadelanteexplicarporquestevalor:
privateintindiceParticipanteActual=1;
Hastaahoranuestraclasedebeverseas:
publicclassParticipantesDatasourceimplementsJRDataSource{privateListlistaParticipantes=newArrayList();privateintindiceParticipanteActual=1;publicObjectgetFieldValue(JRFieldjrf)throwsJRException{thrownewUnsupportedOperationException("Notsupportedyet.");}
publicbooleannext()throwsJRException{thrownewUnsupportedOperationException("Notsupportedyet.");}}
AhoraimplementaremoselmtodogetFieldValue.EstemtodorecibeunargumentodetipoJRField.Esteparmetronosindicarporculdelos"fields"nosestpreguntandoelreporte.
En la implementacin de este mtodo regresaremos los valores correspondientes a cada uno de los atributos de nuestros objetos"Participante"conformesevayanpidiendo.Porloqueelmtodoquedaas:
14/4/2015 TutorialesdeProgramacionJava:CreacindeReportesconJasperRepotsyiReportsParte2:UsodeDataSourcesPersonalizados
http://www.javatutoriales.com/2009/03/creaciondereportesconjasperrepotsy.html 9/26
publicObjectgetFieldValue(JRFieldjrField)throwsJRException{Objectvalor=null;
if("nombre".equals(jrField.getName())){valor=listaParticipantes.get(indiceParticipanteActual).getNombre();}elseif("username".equals(jrField.getName())){valor=listaParticipantes.get(indiceParticipanteActual).getUsername();}elseif("password".equals(jrField.getName())){valor=listaParticipantes.get(indiceParticipanteActual).getPassword();}elseif("comentarios".equals(jrField.getName())){valor=listaParticipantes.get(indiceParticipanteActual).getComentarios();}returnvalor;}
Donde bsicamente ocurre lo que dije anteriormente: cada vez que el reporte pregunta por el valor de un atributo del objeto"Participante" actual (al que hace referencia el contador "indiceParticipanteActual") se regresa el valor correspondiente.EstapeticinsehaceenbasealnombredelfieldquecreamosdesdeiReport.
Ahoratalvezseestnpreguntandoenqumomentoseincrementaelcontador?,ocmosabeJasperReportcuntosparticipantesexisten?Puesbien,ambascosasocurrengraciasalaimplementacindelmtodo"next()".
publicbooleannext()throwsJRException{return++indiceParticipanteActual
14/4/2015 TutorialesdeProgramacionJava:CreacindeReportesconJasperRepotsyiReportsParte2:UsodeDataSourcesPersonalizados
http://www.javatutoriales.com/2009/03/creaciondereportesconjasperrepotsy.html 10/26
publicclassParticipantesDatasourceimplementsJRDataSource{privateListlistaParticipantes=newArrayList();privateintindiceParticipanteActual=1;
publicObjectgetFieldValue(JRFieldjrf)throwsJRException{Objectvalor=null;
if("nombre".equals(jrf.getName())){valor=listaParticipantes.get(indiceParticipanteActual).getNombre();}elseif("username".equals(jrf.getName())){valor=listaParticipantes.get(indiceParticipanteActual).getUsername();}elseif("password".equals(jrf.getName())){valor=listaParticipantes.get(indiceParticipanteActual).getPassword();}elseif("comentarios".equals(jrf.getName())){valor=listaParticipantes.get(indiceParticipanteActual).getComentarios();}
returnvalor;}
publicbooleannext()throwsJRException{return++indiceParticipanteActual
14/4/2015 TutorialesdeProgramacionJava:CreacindeReportesconJasperRepotsyiReportsParte2:UsodeDataSourcesPersonalizados
http://www.javatutoriales.com/2009/03/creaciondereportesconjasperrepotsy.html 11/26
publicclassMain{publicstaticvoidmain(String[]args)throwsException{ParticipantesDatasourcedatasource=newParticipantesDatasource();
for(inti=1;i
14/4/2015 TutorialesdeProgramacionJava:CreacindeReportesconJasperRepotsyiReportsParte2:UsodeDataSourcesPersonalizados
http://www.javatutoriales.com/2009/03/creaciondereportesconjasperrepotsy.html 12/26
ListlistaPariticipantes=newArrayList();
for(inti=1;i
14/4/2015 TutorialesdeProgramacionJava:CreacindeReportesconJasperRepotsyiReportsParte2:UsodeDataSourcesPersonalizados
http://www.javatutoriales.com/2009/03/creaciondereportesconjasperrepotsy.html 13/26
PublicadoporAlexen20:57
Reacciones: divertido (0) interesante (2) increible (0) no me gusta (0)
Etiquetas:ireports,jasperreports,java,reportes
Elcualesidnticoalreportegeneradoconlaclase"ParticipantesDatasource".
Yconestovemosquegraciasalaclase"JRBeanCollectionDataSource"noesnecesarioqueproporcionemosnuestrapropiaclasequeimplementelainterface"JRDataSource",porloquelageneracindereportesesanmssimple^^.
Bien,estoestodoporahora.Esperoqueestepostlesseadeutilidad.
En el siguiente tutorial hablar de cmo funcionan los parmetros y las variables enJasperReport, para lo cual haremos uso delreportequeacabamosdecrear.
Graciasatodosynoolvidendejarsusdudas,comentarios,ysugerencias.Todoesbienvenido.
Saludos.
Descargalosarchivosdeestetutorialdesdeaqu:
ReporteconDatasourcePropio
EntradasRelacionadas:
Parte1:ReportesconConexinaBasesdeDatosParte3:ParmetrosyVariablesParte4:ReportesenaplicacioneswebParte5:GrficasenReportesParte6:GruposParte7:Subreportes
+8 Recomendar esto en Google
Respuestas
Responder
74comentarios:
anthe 12deabrilde2009,17:03
Amigomepodriasayudar,coneltemaderealizarunaconeccionconhibernate,larealizoynoconsigounbuenresultadosoloun"cannotopenconnection",agregeelconectorelpathdondeestaelmapeodelabaseperoparecequealgoestamal,soyneofitaeneltemaynoencuentrounasolucionhelp!!
Responder
ProgramadorJava 12deabrilde2009,18:03
HolaAnthe.
Claroquesi,puedoayudarteconmuchogusto.Solonecesitounpocomsdeinformacinsobrequeestshaciendo.Supongoqueestashaciendo uso de un DataSource propio (ya sea implementando la interface JRDataSource o a travs de unJRBeanCollectionDataSource), y queobtienes los datos a travs deHibernate. Estoy en lo correcto?, olo estas haciendodeotraforma?
Podrasdecirmeenqulneatedaelerror?,ohayformadequesubastucdigoaalgnsitioparapoderrevisarlo?.
Saludos
Responder
Annimo 19deabrilde2009,10:40
HolaDisculpaparaquesonlos"seters"ylos"geters"??
SAludosMiguel.
Responder
AramSalinas 10deabrilde2013,10:24
mmmmhserefierealosmtodosrelacionadosalaspropiedades,comoasignarlesunvalor"SET"orecuperarunvalor"GET"deellas.
saludos!