Как установить АВТОПРОКРУТКУ JTextArea в Java GUI?

Преимущество: Могут быть созданы универсальные Типы данных.

Недостаток: Код, Чрезмерно увеличивающийся в размерах

66
задан mKorbel 8 October 2011 в 10:05
поделиться

2 ответа

При использовании JDK1.4.2 (или более ранней версии) наиболее частым предложением, которое вы найдете на форумах, является использование следующего кода:

textArea.append(...);
textArea.setCaretPosition(textArea.getDocument().getLength());

Однако я только что заметил, что в JDK5 это проблема действительно была решена путем изменения API. Теперь вы можете контролировать это поведение, установив свойство в DefaultCaret текстовой области. При использовании этого подхода код будет выглядеть следующим образом:

JTextArea textArea = new JTextArea();
DefaultCaret caret = (DefaultCaret)textArea.getCaret();
caret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE);

Примечание:

Вышеупомянутое предложение по установке политики обновления курсора не работает.

Вместо этого вы можете попробовать Smart Scrolling , который дает пользователю возможность определять, должна ли прокрутка быть автоматической или нет.

Более подробное описание автоматической прокрутки в текстовой области можно найти можно найти здесь: Прокрутка текстовой области

145
ответ дан 24 November 2019 в 14:56
поделиться
    JScrollBar vbar = scrollPane.getVerticalScrollBar();

    for (int i = 0; i < 20; i++) {

        myJTxt.append("This is text " + i + "\n");
        vbar.setValue(vbar.getMaximum());
        vbar.paint(vbar.getGraphics());
        myJTxt.scrollRectToVisible(myJTxt.getVisibleRect());
        myJTxt.paint(myJTxt.getGraphics());
        try {
            Thread.sleep(250);
        } catch (InterruptedException ex) {
            Logger.getLogger(ScrollTextView.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
2
ответ дан 24 November 2019 в 14:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: