JTextArea コントロールに興味深い問題があります。
私が立ち上げると、JTextArea
すべてがうまくいき、入力したものはすべて遅滞なく表示されます. ただしFontSizeAction
、EditorKit
(この場合はRTFEditorKitですが、どちらを使用しても問題ないようです)に送信するとすぐに、1〜数秒の遅延が発生します。
興味深いことに、遅延は何かを入力した後にのみ発生します。つまり、フォントの変更に続いて何もせずに入力する場合は、すぐに入力する場合と違いはありません. 遅延は同じです。FontSizeAction の後に最初の文字を入力した直後に、割り当てが数 MB 増加することがわかります。
アプリケーションでプロファイラーを使用しましたが、自分のアプリには問題があると思われるものは何もありません。
私のコード:
private void updateFont(MainModelManager model) {
(new RTFEditorKit.FontSizeAction("font-size-" + model.getFontSize(),
model.getFontSize())).actionPerformed(
new ActionEvent(this, ActionEvent.ACTION_PERFORMED, null) );
(new RTFEditorKit.FontFamilyAction("font-family-" + model.getFontFamily(), model.getFontFamily())).actionPerformed(
new ActionEvent(this, ActionEvent.ACTION_PERFORMED, model.getFontFamily()) );
}
これは、メイン モデル コンテナーの宣言の一部です。
public class MainModelManager extends Observable {
DefaultStyledDocument doc;
int fontSize = 12;
String fontType = "Helvetica";
StyleContext sc;
Caret editorCaret;
boolean editorFrameIsResizable;
//...
}
アップデート:
問題を FontFamilyAction に絞り込んだと思います。コメントアウトすると遅延がなくなり、問題なくフォントサイズを変更できるからです。多分これはフォントのロードと関係がありますか?