我对JTextArea控件有一个奇怪的问题: 当我调出我的JTextArea时,一切都很好,无论我输入什么,都会毫不拖延地显示出来。但是,只要我将FontSizeAction发送到我的EditorKit(在这种情况下为RTFEditorKit,但似乎并不重要),就会发生1到几秒的延迟。有趣的是,延迟只发生在您键入内容之后,即字体更改后无所事事然后键入,只是立即键入没有区别。延迟是一样的。我可以在FontSizeAction之后输入第一个字母后立即看到,分配会增加几个megs。
我在应用程序上使用了一个分析器,而我自己的应用程序中似乎没有任何问题。
****以下是一些代码:
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
{
private DefaultStyledDocument doc;
private int fontSize = 12;
private String fontType = "Helvetica";
private StyleContext sc;
private Caret editorCaret;
private boolean editorFrameIsResizable;
//...
}
更新:
我认为我已经缩小到FontFamilyAction的问题因为,如果我评论它延迟消失,我仍然可以毫无问题地改变字体大小。也许这与加载字体有关?