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");
}
}
}
}
С помощью приведенного выше кода я пытаюсь создать небольшой текстовый проигрыватель.
Вместо того, чтобы получать все текстовые метки одну за другой, что-то вроде
display text1player
wait this.duration миллисекунды
отобразить text2player
подождать 1000 миллисекунд
отобразить text3player
поток выполнен.
Экраны ждут this.duration + 1000 миллисекунд и отображают все метки в однажды. Я пробовал с runnable и вызывал .invokeLater или .invokeAndWait, но все равно получаю то же поведение, и даже если я испачкаюсь, как указано выше, используя синхронизированный, он все равно не работает.
Кто-нибудь знает, как я могу отображать каждую метку за раз?
Спасибо!