Article View: es.comp.lenguajes.java
Article #236Re: duda sobre Timer
From: Miguel Angel
Date: Fri, 13 May 2011 06:38
Date: Fri, 13 May 2011 06:38
88 lines
3963 bytes
3963 bytes
Muchas gracias Ricardo, ese era el problema. Se me escap� escribir el
Timer delante.
Respecto a lo de las variables, yo lo tengo visto como campos o como
variables de clase, es por eso que abreviaba llamandolas variables (lo
de campos no me gusta mucho), pero vamos, propiedades ya me est� bien.
Salu2
Miguel �ngel
Le 11/05/2011, Ricardo Palomares Mart�nez a suppos� :
> El 11/05/11 19:26, Miguel Angel escribi�:
>> Hola,
>>
>> tengo una clase llamada Juego donde defino un Timer en el constructor
>> de la siguiente forma:
>>
>> public class Juego
>> {
>> private Timer timerBajar;
>> private ActionListener tareaBajar;
>>
>> // ............constructor
>> public Juego()
>> {
>> ActionListener tareaBajar = new ActionListener()
>> {
>> public void actionPerformed (ActionEvent e)
>> {
>> pieza.mueveAbajo(campoDeJuego.getTablero());
>> }
>> };
>> Timer timerBajar = new Timer (1000,tareaBajar);
>> }
>>
>> //......... metodo principal
>> public void start()
>> {
>> campoDeJuego.ponerPieza(pieza);
>> campoDeJuego.dibujarTablero();
>> timerBajar.start();
>> ...
>> }
>>
>> Pues bien, si pongo el timerBajar.start(); en el constructor, funciona
>> correctamente, pero si la pongo donde en start (que es lo que he
>> copiado aqui), me da el error java.lang.NullPointerException: null
>>
>> es decir como si la variable timerBajar no estuviese instanciada, pero
>> yo he creado una instancia en el constructor y adem�s la variable es
>> de la clase. �que hago mal?
>
>
> Por ser estrictos con la nomenclatura, las "variables" de las clases
> se llaman "propiedades". No pasa nada, te he entendido, pero si te
> acostumbras a llamar las cosas por el nombre com�nmente aceptado,
> quedas m�s "pofesional". :-)
>
> Bien, lo que sucede es que en el contrusctor no has inicializado la
> propiedad timerBajar, sino una variable (esta s� es variable) local
> del constructor, que resulta que se llama igual que la propiedad.
> Tienes que corregir esta l�nea:
>
>> Timer timerBajar = new Timer (1000,tareaBajar);
>
> por esta:
>
>> timerBajar = new Timer (1000,tareaBajar);
>
>
> Aunque no se considera buen estilo de codificaci�n, a m� me gusta usar
> this. delante de las propiedades de una clase (y, si sirve para evitar
> ambig�edades, incluso delante de los m�todos). Si hubieras escrito:
>
>> Timer this.timerBajar = new Timer (1000,tareaBajar);
>
>
> el compilador te habr�a avisado que hay un error en esa l�nea y
> posiblemente lo habr�as detectado t� mismo. Siempre puedes escribir
> "this.propiedad" para depurar y, cuando vayas a entregar el c�digo a
> alguien m�s, haces una b�squeda y reemplazo de "this." por "". :-)
>
> Saludos.
>
>
> --- Posted via news://freenews.netfront.net/ - Complaints to
> news@netfront.net ---
Technical Details
Message-ID:
<iqijlg$hj5$1@speranza.aioe.org>Path:
arc1-ca.pugleaf.net!g2news1.google.com!news3.google.com!feeder.news-service.com!94.75.214.39.MISMATCH!aioe.org!.POSTED!not-for-mailReferences:
<iqegt0$2ol$1@speranza.aioe.org> <iqeur6$1ts6$1@adenine.netfront.net>Show Full Headers
Complete Article Headers
X-Google-Thread: 1116f3,6bc93605bd33fd93 X-Google-NewGroupId: yes X-Google-Attributes: gidecded77573,domainid0,public,usenet X-Google-Language: SPANISH,ASCII Path: arc1-ca.pugleaf.net!g2news1.google.com!news3.google.com!feeder.news-service.com!94.75.214.39.MISMATCH!aioe.org!.POSTED!not-for-mail From: Miguel Angel <aa@aa.com> Newsgroups: es.comp.lenguajes.java Subject: Re: duda sobre Timer Date: Fri, 13 May 2011 08:38:41 +0200 Organization: Aioe.org NNTP Server Lines: 90 Message-ID: <iqijlg$hj5$1@speranza.aioe.org> References: <iqegt0$2ol$1@speranza.aioe.org> <iqeur6$1ts6$1@adenine.netfront.net> NNTP-Posting-Host: M975N8/57/85tdIseADsbQ.user.speranza.aioe.org Mime-Version: 1.0 Content-Type: text/plain; charset="iso-8859-15"; format=flowed Content-Transfer-Encoding: 8bit X-Complaints-To: abuse@aioe.org X-Notice: Filtered by postfilter v. 0.8.2 X-Newsreader: MesNews/1.08.03.00-es X-ICQ: 1667332713