1

JTextArea コントロールに興味深い問題があります。

私が立ち上げると、JTextAreaすべてがうまくいき、入力したものはすべて遅滞なく表示されます. ただしFontSizeActionEditorKit(この場合は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 に絞り込んだと思います。コメントアウトすると遅延がなくなり、問題なくフォントサイズを変更できるからです。多分これはフォントのロードと関係がありますか?

4

0 に答える 0