У меня возникла любопытная проблема с элементом управления JTextArea:
Когда я поднимаю свой JTextArea, все в порядке, и все, что я печатаю, появляется без задержки. Однако, как только я отправляю 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
{
private DefaultStyledDocument doc;
private int fontSize = 12;
private String fontType = "Helvetica";
private StyleContext sc;
private Caret editorCaret;
private boolean editorFrameIsResizable;
//...
}
ОБНОВЛЕНИЕ:
Я думаю, что сузился до проблемы до FontFamilyAction, потому что, если я закомментирую это, задержка исчезнет, и я все еще могу изменить размер шрифта без проблем. Может быть, это как-то связано с загрузкой шрифтов?