DWT event handling
Frank Benoit
keinfarbton at googlemail.com
Sun May 18 04:13:03 PDT 2008
bobef schrieb:
> void handleTextEvent (Event e, Composite composite, TreeItem item, TreeEditor editor,Text text, int inset )
>
> This is longer to write than new class {blah blah} :)
No, the additional arguments make the delegate a closure. If you would
write that as a anonymous class it would look like that:
In Java final vars are accessible for the anonymous class after the
surrounding method ends:
final Text text = ...
final TreeEditor editor = ...
Listener l = new Listener {
public void handleEvent( Event e ){
// use text, editor as you want
}
}
In D1, this would create crashes. The workaround is, to create explicit
member variable in the anonymous class. This is really ugly and very
tedious and error-prone.
Listener l = new class( composite, item, editor, text, inset ) Listener {
Composite composite_;
TreeEditor editor_;
Text text_;
int inset_;
public this( Composite a, TreeItem b, TreeEditor c,Text d, int e ) {
this.composite_ = a;
this.editor_ = b;
this.text_ = d;
this.inset_ = e;
}
public void handleEvent( Event e ){
// use the test_, editor_ ...
// underscore to clearly separate them from
// the variable used in the surounding method
}
}
Now you see what is the advantage of the dgListener?
More information about the Digitalmars-d-dwt
mailing list