"Ulrik Magnusson" <ulrikm@yahoo.com> wrote in message
news:3F35755A.3D5BA76B@yahoo.com...
>
>
> Jan Uhre wrote:
>
> > Jeg kan ikke kalde repaint(), for det er ikke Applet-repaint(), men
> > Board-repaint() og så sker der intet med billedet.
> >
> > Jeg kan selvfølgelig give Board objektet en reference til Applet
objektet
> > (så der er en dobbelt reference), men det virker lidt ekstremt.
>
> Et eller andet sted _skal_ du jo bede Applet objektet om at gentegne sig
> selv, men du kan jo skjule referencen til Applet objektet bag en anden
> type - en slags listener som kan/skal reagere på ændringer i den
> grafiske præsentation (og som evt. tager et Rectangle objekt som siger
> hvor ændringen er sket).
>
> interface ClipGraphicsChangeListener
> {
> public void clipGraphicsChanged( java.awt.Rectangle clip );
> }
>
> class ChessApplet
> extends java.awt.Applet
> implements
> ClipGraphicsChangeListener
> {
> public void clipGraphicsChanged( java.awt.Rectangle clip )
> {
> // repaint eller lav evt. union med tidligere clip,
> // hvis der ikke umiddelbart skal gentegnes.
> this.clip = clip;
> repaint();
> }
>
> public void paint( java.awt.Graphics g )
> {
> g.clipRect( clip );
> board.draw( g );
> }
>
> }
>
> Ulrik Magnusson
>
Tak for dit svar, Ulrik.
Det er nu ikke fordi, jeg behøver at gemme referencen til Applet objektet -
mere fordi jeg generelt har et problem med at have referencer, der bevæger
sig opad i objekt-hierarkiet. Det er ikke just OOP-principper efter bogen.
Men selvfølgelig... ingen regel uden undtagelser
Men det du siger er altså, at hvis man vil opdele view-delen af programmet i
logiske objekter, så er det kun muligt, hvis alle objekter, der skal kunne
opdatere display'et har en reference til Applet?
Hvis det er den eneste mulighed, må jeg jo bare lære at leve med det. Jeg
vil bare gerne have bekræftet, at det ikke er en helt 'forkert' måde, jeg
strukturer mine programmer på.
Hvis du eller andre har kommentarer, hører jeg dem gerne.
Mvh Jan Uhre