Hi Paul

You're absolutely right. I made this mistake and forgot the keyword
"final". Thank you very much for your post. I've been coding in java
for 3.5 years but today I learned something new....
Thanks again :-)

Regards
Artur

On 1 Feb., 15:15, Paul Robinson <[email protected]> wrote:
> Either you've made a copy-and-past error in the code you posted here, or 
> there's another "symbol" variable in scope because the one declared at the 
> start of your addStock() method is not in scope inside methods on your 
> ClickHandler.
>
> To make it work (and I believe the way the tutorial shows it), symbol is 
> declared "final", as in:
>      final String symbol = ...
>
> By declaring it final, the compiler knows the value will not change, and so 
> it can safely take a copy of its value when it constructs the new 
> ClickHandler instances, and store that value in an instance field on the 
> ClickHandler. This then allows it to be in scope on methods in the 
> ClickHandler.
>
> Paul
>
> On 31/01/11 17:53, Artur wrote:
>
>
>
> > Hi
>
> > I'm new to GWT. At the moment I'm reading the tutorial for the
> > StockWatcher (http://code.google.com/intl/de-DE/webtoolkit/doc/latest/
> > tutorial/codeclient.html).
> > Here is the code I do not understand:
>
> > public void addStock(){
>
> >    String symbol = txtBox.getText();
>
> >    // Add a button to remove this stock from the table.
> >      Button removeStockButton = new Button("x");
> >      removeStockButton.addClickHandler(new ClickHandler() {
> >        public void onClick(ClickEvent event) {
> >          int removedIndex = stocks.indexOf(symbol);
> >          stocks.remove(removedIndex);
> >          stocksFlexTable.removeRow(removedIndex + 1);
> >        }
> >      });
> >      stocksFlexTable.setWidget(row, 3, removeStockButton);
>
> > }
>
> > At the first line a new Button is created. Afterwards the button gets
> > a new anonymous ClickHandler with the "onClick()" function. So far so
> > good.
> > But when the user clicks the button and the "onClick()" function is
> > called, how is it possible, that the String variable "symbol" still
> > lives in memory?
> > I have implemented this code to my eclipse and it works perfectly. But
> > I do not understand how is it possible to get the value of the
> > "symbol" variable after the button has been created and sent to
> > client.??? When user clicks on the button the "onClick()" function is
> > called and still has the value of the "symbol" string??'
>
> > Can someone explain it to me?
>
> > Thanks
> > Artur

-- 
You received this message because you are subscribed to the Google Groups 
"Google Web Toolkit" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/google-web-toolkit?hl=en.

Reply via email to