On Sat, 19 Oct 2002 13:41:24 +0200, "Simon..." <devnull@linux.org>
wrote:
>Hej,
>
>jeg er ved at lave et lille miniprojekt, der involverer noget appletværk.
>
>men jeg kan ikke finde ud af at lave en metode der må tegne på mit område,
>jeg kan godt få den til at tegne fra paintComponent delen, eller kalde en
>anden metode fra
>denne der så må tegne, men jeg kan ikke finde ud af at kalde en metode i
>samme klasse, fra en
>anden klasse og få den til at tegne...
Du har misforstået hvordan paint() mekanismen fungerer.
Du skal tegne _alt_ hvad du vil tegne i paintComponent(g). Når du så
vil opdatere, skal du kalde repaint() på den komponent du vil
opdatere; så vil systemet på et passende tidspunkt kalde
paintComponent() for dig, hvor du så selv tegner det der skal tegnes.
Lidt pseudo kode til at illustrere hvordan du skal gøre:
klasse A: // komponent der kan tegne ting
attributter der beskriver hvad der skal tegnes
paintComponent( g ) tegner hvad attributterne siger
metoder til at ændre på attributter, eks:
public void setAttribut( Type værdi ){
this.værdi = værdi;
repaint(); // giver besked om at denne komponent skal gentegnes
}
klasse B
indeholder logik til at ændre på hvordan a skal opføre sig
A a = new A();
s.setAttribut( nyværdi ); // denne metode husker værdien, og sørger
for at opdatere visningen af A, så vi ikke skal gøre det her!
Noget i den stil. Dvs. i dit tilfælde skal du, når knappen trykkes,
skal du hælde data ind i din visnings komponent som så opdatere
visningen.
Dette er den forkortede udgave. Hvis du vil gøre det godt, skal du
følge MCV (model-controller- view ) modellen:
....Men det gider jeg ikke komme ind på her >
vh. ld