私は、ユーザーからテキストを受け取っているアプリケーションを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行のテキストを表示するようには設計されていませんでした。一度にすごく長い文字列を作成するという点は何ですか?一度に1行を描画するには、JLIstのようなものを使うべきでしょう。あるいは、JEditorPaneのように、HTML用に設計された、より適切なコンポーネントを試してみてください。 – camickr