🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: es.comp.lenguajes.java
Article #26887

Re: Eventos

#26887
From: Jonathan Revusky
Date: Fri, 20 Nov 1998 00:00
79 lines
2451 bytes

Fifeton wrote:
 
> Tenemos una pantalla con datos(textfields), y queremos saber si alguno
> de los textfields ha sido modificado.

> El c�digo, m�s o menos es el siguiente:
 
 public class XXX{
  private boolean modified=false;
  private TextField textField1;
  private TextField textField2;
  .
  void initialize(){
   .
   .
   .
   textField1.addTextListener(this);
   textField2.addTextListener(this);
   .
   .
   .
   load();
   System.out.println(getModified());
  }
  .
  void load(){
   textfield1.setText("xxx");
   textfield2.setText("xx1");
   .
   .
   .
   setModified(false);
   return;
  }
 
  boolean getModified(){
   return modified;
  }
 
  void setModified(boolean value){
  modified=value;
  }
  void textValueChanged(TextEvent event){
   .
   .
   setModified(true);
  }
 }
 
> La cuesti�n, es que despu�s de cargar los textfields, ponemos la
> propiedad modificado a false, pero los eventos TextEvent llegan despu�s,
> a pesar de ser lanzados antes. 

Parece que esto es un misterio, pero en realidad, no lo es. 

Lo que pasa es que el m�todo textValueChanged se invoca en otro thread,
el AWT Dispatch thread, y tu setModified() se invoca sin duda en el
thread del main(). Si lo piensas un poco, es claro que el setModified()
debe retornar antes de que los m�todos de TextListener se invoquen. Y es
por eso el comportamiento que describes.

>C�mo puedo solucionar esto?

Soluci�n? Pues, una soluci�n es que el m�todo que hace
getModified(false) se tiene que invocar desde el AWT thread y DESPUES de
la PRIMERA vez que el texto se modifique.

Hay varias formas de conseguirlo, me parece. 

Habr�a que pensarlo un poco....

Jonathan Revusky
-- 
Available for Java and Delphi Consulting
Make your .class files double-clickable
with SmartJ
http://www.bigfoot.com/~crystalline.solutions
Technical Details
Message-ID: <3654B86C.988F169B@jet.es>
Path: arc1-ca.pugleaf.net!unknown!not-for-mail
References: <36540E64.678EB8C3@iname.com>

Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII
X-Google-Thread: 1116f3,6a797a0f9dc89072
X-Google-Attributes: gid1116f3,public
From: Jonathan Revusky <jrevusky@jet.es>
Subject: Re: Eventos
Date: 1998/11/20
Message-ID: <3654B86C.988F169B@jet.es>
X-Deja-AN: 413691796
Content-Transfer-Encoding: 8bit
References: <36540E64.678EB8C3@iname.com>
X-Accept-Language: en
Content-Type: text/plain; charset=iso-8859-1
Organization: Telefonica Transmision de Datos
Mime-Version: 1.0
Reply-To: jrevusky@bigfoot.com
Newsgroups: es.comp.lenguajes.java