我对 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,因为如果我将其注释掉,延迟就会消失,我仍然可以毫无问题地更改字体大小。也许这与加载字体有关?