Медленное изменение шрифта JTextArea - PullRequest
1 голос
/ 09 мая 2009

У меня возникла любопытная проблема с элементом управления 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, потому что, если я закомментирую это, задержка исчезнет, ​​и я все еще могу изменить размер шрифта без проблем. Может быть, это как-то связано с загрузкой шрифтов?

...