В настоящее время я пишу действительно простую программу с использованием JSwing. Внутри JScrollPane ("textPane")
есть JTextArea ("textArea")
. Мне удалось отредактировать текст и прочее в этом TextArea
с StyledDocument
с именем do c. Однако, когда я хочу вставить строку в этот документ через некоторое время l oop, все тексты появляются сразу после окончания l oop. Эффект, который я хочу, состоит в том, чтобы тексты появлялись один за другим и построчно с помощью Thread.sleep()
.
Вот мой пример кода:
while (listening == false && a <= StoryInterface.getDiaNum()) {
doStoryMode(a, b);
Thread.sleep(100);
if (b == StoryInterface.getNumOfSentence()[a] - 1) {
b = 1;
a ++;
} else {
b ++;
}
}
Где doStoryMode(a, b)
это простой метод, который вызывает doc.insertString(...)
. Программа работает, но я не видел, чтобы что-то происходило один за другим. Я попытался решить эту проблему, написав textPane.repaint()
и textArea.repaint()
, но оба не увенчались успехом. Я искал в Интернете, и кто-то сказал, что это можно решить методом invokeAndWait()
, но когда я это сделал, на экране появилось сообщение об ошибке «Не удалось позвонить invokeAndWait
из потока диспетчера событий».
Пожалуйста, помогите мне с этим , Я действительно новичок в этих понятиях. Заранее спасибо.