Ich versuche, ein einfaches Applet mit Java zu machen, um zwei Zähler anzuzeigen. Um den Code zu vereinfachen, habe ich eine Funktion namens "suma" erstellt, die in run() 2 mal aufgerufen wird. Die Zähler in der Konsole funktionieren, aber im Applet werden nicht erhöht. Ich denke, das Problem ist in Repaint(), weil, wenn ich versuche, den Inhalt von "Suma" in ausführen, direkt der Code funktioniert. Die Frage ist: Warum repaint() funktioniert nicht aus run()?Repaint() funktioniert nicht aus run() Funktion
import java.applet.Applet;
import java.awt.Button;
import java.awt.Color;
import java.awt.Graphics;
public class HiloContador extends Applet implements Runnable{
//Propiedades
private Thread h1;
private Thread h2;
long contador1=0;
long contador2=500;
private Button b1,b2;
public void start(){}
public void init(){
setBackground(Color.YELLOW);
//Botones
add(b1=new Button("Parar hilo 1"));
add(b2=new Button("Parar hilo 2"));
//Creación de nuevos hilos y su inicio
h1=new Thread(this);
h2=new Thread(this);
h1.start();
h2.start();
}
@Override
public void run() {
// TODO Auto-generated method stub
suma(h1,contador1);
suma(h2,contador2);
}//fin de run
public void paint(Graphics g){
g.drawString(Long.toString((long)contador1), 80, 100);
g.drawString(Long.toString((long)contador2), 80, 120);
}
public void suma(Thread h,long c){
Thread hiloActual=Thread.currentThread();
while(h==hiloActual){
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(c);
c++;
repaint();
}//fin de while
}
}
Dank. Ich ändere die Suma-Funktion. Aber ich weiß nicht, wie AtomicLong in. DrawString verwenden kann. g.drawString (Long.toString ((lang) contador1), 80, 100); Wie kann ich AtomicLong zu String für drawString() analysieren? Gelöst mit: g.drawString (contador1.toString(), 80, 100); –
Soll dieser Kommentar an Nicolas Filotto gerichtet sein? Wenn ja, kommentiere die Antwort, nicht die Frage! –