public class PlayText extends Thread {
private int duration;
private String text;
private PlayerScreen playerscrn;
public PlayText(String text, int duration) {
this.duration = duration;
this.text = text;
this.playerscrn = (PlayerScreen)UiApplication.getUiApplication().getActiveScreen();
}
public void run() {
synchronized(UiApplication.getEventLock()) {
try{
RichTextField text1player = new RichTextField(this.text, Field.NON_FOCUSABLE);
playerscrn.add(text1player);
playerscrn.invalidate();
Thread.sleep(this.duration);
RichTextField text2player = new RichTextField("hahhaha", Field.NON_FOCUSABLE);
playerscrn.add(text2player);
playerscrn.invalidate();
Thread.sleep(1000);
RichTextField text3player = new RichTextField("Done", Field.NON_FOCUSABLE);
playerscrn.add(text3player);
playerscrn.invalidate();
}catch(Exception e){
System.out.println("I HAVE AN ERROR");
}
}
}
}
С помощью приведенного выше кода я пытаюсь создать небольшой текстовый проигрыватель.
Вместо этого, чтобы получить все текстовые метки одну за другой, что-то вроде
показать text1player
подождите это. длительность миллисекунды
показать text2player
подождите 1000 миллисекунд
показать text3player
Тема закончена.
Экраны ждут this.duration + 1000 миллисекунд и отображают все метки одновременно.
Я попытался с помощью runnable и вызова .invokeLater или .invokeAndWait, но я все еще получаю то же самое поведение, и даже если я пачкаюсь, как описано выше, используя синхронизированный, он все равно не работает.
Кто-нибудь знает, как я могу отображать каждый ярлык одновременно?
Спасибо!