1

我对 JTextArea 控件有一个奇怪的问题:

当我提出时,我的JTextArea一切都很好,我输入的任何内容都会立即显示。但是,一旦我将 a 发送FontSizeAction到我的EditorKit(在这种情况下为 RTFEditorKit,但我使用哪个似乎并不重要),就会发生 1 到几秒的延迟。

有趣的是,延迟仅在您输入某些内容后发生,即更改字体,然后什么都不做,然后输入,与立即输入没有区别。延迟是一样的。我可以看到,在 FontSizeAction 之后键入第一个字母后,分配会增加几兆。

我在应用程序上使用了分析器,我自己的应用程序中似乎没有任何问题。

我的代码:

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