У меня есть следующий класс апплета:
public class Marquee extends Applet {
Label label1 = new Label("Testing");
public void pushUpdate( String text ) {
System.out.println( "receiving: " + text );
label1.setText( text );
repaint();
}
public void init() {
ScrollText_2 scrollObj = new ScrollText_2( "Applet test" );
scrollObj.setApplet(this);
add( label1 );
scrollObj.run();
}
}
Класс ScrollText2 реализует Runnable и имеет метод scroll(). Прямо сейчас все, что делает метод прокрутки, это возвращает строку, содержащуюся в объекте. Метод run() этого класса выглядит так:
while(true) {
try {
marquee.pushUpdate( scroll() );
Thread.sleep( 2000 );
}
catch (InterruptedException e) {}
}
Проблема в том, что когда я запускаю апплет, если я вызываю метод .run(), то метка в бегущей строке никогда не отображается. Я пробовал repaint(), просто label.setText(), updateUI() и redraw(), чтобы попытаться заставить апплет отображать обновления, но это не сработало.
Любые предложения будут ценны.
Спасибо!
Thread
в спящий режим, прежде чем он сможет обновить пользовательский интерфейс. В таком случае попробуйте удалитьThread.sleep(2000)
. - person Jon Egeland   schedule 11.12.2011Thread.sleep
в любом случае? - person Jon Egeland   schedule 11.12.2011Timer
, который вызываетrepaint()
. - person Andrew Thompson   schedule 12.12.2011