У меня есть приложение, которое получает текст от пользователя, а затем помещает его в jLabel. Он выполняет некоторую обработку текста, поэтому я подумал, что это проблема, но после некоторого устранения неполадок я выделил наиболее трудоемкую часть программы.JLabel setText занимает слишком много времени
text1.setText(arg2);
Где arg2 - длинная строка. В тестировании я использую 9000 строк. Он также отформатирован в HTML. Где бы я подумал, что это может занять некоторое время, на несколько секунд, это занимает огромное количество времени, 3 минуты и 35 секунд. Я нашел некоторые вопросы здесь, которые имеют аналогичные проблемы с JTextArea:
https://stackoverflow.com/questions/23951118/jtextarea-settextverylongstring-is-taking-too-much-time
Но я не могу найти способ применить это решение этой проблемы. Есть ли решение для этого?
EDIT - мой код ниже. Примечание. Я сократил среднюю часть строки для краткости.
import java.io.*;
import java.lang.*;
import javax.swing.*;
public class jLabelIssue {
public static void main(String[] args) {
final JFrame frame = new JFrame("Comparinger use this to compare things and stuff");
frame.setSize(268, 150);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
JLabel text1 = new JLabel();
frame.add(text1);
arg2 =
"<HTML><font color=black>" +
"a<br/>" +
"a<br/>" +
"a<br/>" +
//... 9000 more lines of this ...
"a<br/>" +
"a<br/>" +
"a<br/>" +
"</font></HTML>";
text1.setText(arg2);
frame.repaint();
}
}
За лучший шанс на приличном помощь, пожалуйста, создать и опубликовать достойную [mcve]. Пожалуйста, прочитайте эту важную ссылку, чтобы узнать подробности. –
Также обратите внимание, что ссылка, предоставленная ** **, имеет пример того, что я имею в виду, также известный как [sscce] (http://sscce.org/). –
'В тестировании я использую 9000 строк. Он также отформатирован в HTML' - JLabel не был предназначен для отображения 9000 строк текста. Какой смысл создавать чрезвычайно длинную строку сразу? Возможно, вы должны использовать что-то вроде JLIst для рендеринга одной строки за раз. Или, возможно, попробуйте использовать более подходящий компонент, предназначенный для HTML, например JEditorPane. – camickr