我有一個很長的字符串,我從書中得到。我使用setText()方法將其顯示在JTextArea中。它凍結了用戶界面並花費了很多時間。我該如何解決這個問題?JTextArea setText(veryLongString)花費的時間太長
這裏是SSCCE:
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.SwingUtilities;
@SuppressWarnings("serial")
public class SSCCE extends JFrame {
JTextArea textArea;
public SSCCE() {
String text = buildLongString(400000);
textArea = new JTextArea();
textArea.setText(text);
textArea.setLineWrap(true);
add(new JScrollPane(textArea));
setSize(400, 350);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
}
private String buildLongString(int length) {
StringBuilder builder = new StringBuilder();
for (int i = 0; i < length; i++) {
builder.append("x");
}
return builder.toString();
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new SSCCE();
}
});
}
}
您真的將400,000個字符的文字轉儲到不幸的用戶身上?這一切的重點是什麼? –
我看不到任何需要的代碼修改。 – Arijit
有趣的是,它是'textArea.setLineWrap(true);'(間接不在通話中),它需要所有的時間。把文本放在那裏實際上很快。例如,連接「x」,如果連接「x \ n」,它變得非常快。 – DSquare