Обычно, когда вы добавляете некоторый текст к видимому JTextArea
, нет необходимости вызывать revalidate
или repaint
самостоятельно. JTextArea
знает, что оно было изменено, и позаботится о его перекрашивании.
Также нет необходимости заново устанавливать текстовую область.
Кроме того, все операции, связанные с Swing, должны выполняться в EDT (Thread Dispatch Thread).
Таким образом, ваш код будет выглядеть как
public void loadQuestion () {
JTextArea tempArea = quizDisplay.getTextArea();
tempArea.append("Hi");
}
и метод loadQuestion
должны вызываться в EDT, что обычно происходит при вызове из ActionListener
при нажатии кнопки.
В учебнике Swing приведен пример с использованием JTextArea , где они делают более или менее то же самое (цитата из исходного кода, на который я ссылался)
public void actionPerformed(ActionEvent evt) {
String text = textField.getText();
textArea.append(text + newline);
textField.selectAll();
//Make sure the new text is visible, even if there
//was a selection in the text area.
textArea.setCaretPosition(textArea.getDocument().getLength());
}