Avatar billede rolchau Nybegynder
15. november 2001 - 22:39 Der er 5 kommentarer og
1 løsning

repainting af en bestemt ting

Hvis man har følgende:

public class Klasse1....{
init(){
k2 = new Klasse2();
....
}
....paint(Graphics g) {
tegne tegne
k2.paint()
...
}
}
public Klasse2 .... {
public setTekst(String t){
tekst = t;
repaint()???
}
....paint(Graphics g) {
g.drawString(tekst ...);
}
}

Er det så muligt at man kan repainte klasse2\'s tekst uden at hele klasse1 painten funktionen skal kaldes, og hvordan gøres det så?
Avatar billede logical Nybegynder
16. november 2001 - 03:01 #1
Som du gør der. Når du kalder repaint i klasse 2, beder du om at få gentegnet klasse 2 ved først givne lejlighed. Forudsat at klasse 1 og 2 begge extender Component et eller andet sted fra.
Avatar billede rolchau Nybegynder
16. november 2001 - 15:31 #2
Ok, men det virker ikke helt som jeg ville have det til. Jeg har i klasse 1:
private class Traad extends Thread {
  public void run() {
      while(!false) {
      score = (int)(Math.random()*100);
      klasse2.repaint(); -> Eller setScore(score);
      try {
        sleep(1000);
      } catch (Exception e) {}
      }
  }
}
og i klasse2 er der så:

public void setScore(int sc) {
  score += sc;
  repaint();
}
og i paint metoden tegnes der en string med scoren i.

Det virker fint hvis jeg skriver repaint istedet for klasse2.repaint, men hvis jeg bare skriver repaint så opdatere den hele billedet med klasse1\'s paint metode.
Avatar billede rolchau Nybegynder
16. november 2001 - 15:37 #3
Hov, i klasse2.repaint() har setScore ikke en repaint og over klasse2.repaint indsættes scoren i setScore.
Avatar billede logical Nybegynder
18. november 2001 - 08:51 #4
Ok, så har det måske noget med referencer at gøre, er klasse2 den samme som du har addet til den grafiske grænseflade.

Og i din klasse1 bruger du score direkte. Er det ikke klasse2.score som du vil sætte?

Hvis du enten kommer med lidt mere kode her, eller mailer det, så skal jeg nok få det til at virke.
Avatar billede rolchau Nybegynder
18. november 2001 - 10:55 #5
Jo det er Klasse2.setScore(score) jeg kalder.

Jeg har ikke noget konkret kode, men vil lige prøve at lave noget.
Avatar billede rolchau Nybegynder
18. november 2001 - 11:41 #6
Ak, nu fik jeg det selv til at virke ;)
Du får nu points alligevel.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester