2017-09-19 4 views
0

Ich las dies: http://www.dmc.fmph.uniba.sk/public_html/doc/Java/ch10.htm, um mir zu helfen, ein Verständnis von Runnables und das Applet und beschlossen, diesen Code zu testen. Innerhalb des Threads wird jedoch die repaint() -Methode nicht aufgerufen.Repaint in Runnable Java

public class test extends Applet implements Runnable{ 
    int hello; 

    public void start(){ 
     Thread run = new Thread(this); 
     run.start(); 
    } 

    public void run() { 
     for (int i = 0; i < 30; i++){ 
      hello = i; 
      repaint(); 
     } 
    } 

    public void paint(Graphics g){ 
     System.out.println(hello); 
    } 
} 

Ich würde meine Ergebnisse erwarten so etwas wie zu sein:

0 
1 
2 
... 
29 

jedoch stattdessen erhalte ich:

29 
29 

und ich verstehe nicht, warum. Liegt es daran, dass ich keine stop() -Methode habe?

+0

Mehrfache Aufrufe von 'repaint()' in schneller Folge werden normalerweise in einem einzigen Aufruf zusammengefasst. 1) Warum ein Applet codieren? Wenn es aufgrund der Angabe des Lehrers geschieht, verweisen Sie bitte auf [Warum CS-Lehrer ** aufhören sollten ** Java-Applets zu unterrichten] (http://programmers.blogoverflow.com/2013/05/why-cs-teachers-should -stop-teaching-Java-Applets /). 2) Warum AWT verwenden? Siehe [diese Antwort] (http://stackoverflow.com/questions/6255106/java-gui-listeners-without-awt/6255978#6255978) aus vielen guten Gründen, um AWT-Komponenten zugunsten von Swing zu verlassen. –

Antwort

-1

Edit:

ich von Komponenten dachte, nicht Applet. Repaint ist nicht dasselbe wie Farbe. Wenn Sie den Schleifenindex sehen möchten, wie Sie gerade sagen, müssten Sie paint aufrufen und der Methode ein Graphics-Objekt zur Verfügung stellen.

+0

Wie würde ich das tun? Ich habe versucht, @Override für beide run() und paint(), aber das scheint nicht zu funktionieren –

+0

Siehe meine Bearbeitung oben. Ich habe vergessen, Applet hat diese Methoden nicht. Sie sind ein Teil von JComponent, das von Klassen wie JPanel unterklassifiziert wird. Ein Beispiel für das Malen in einem Applet finden Sie unter http://www.oracle.com/technetwork/java/applet-137165.html. – jdhurricanes