Сообщений: 1,759
Тем: 13
Зарегистрирован: May 2011
Репутация:
3,205
05-22-2011, 09:32 PM
(Сообщение последний раз редактировалось: 06-22-2012, 02:13 AM linliss.)
Написал небольшую програмку с JTextArea(в который выводнится какой-то текст), текст добавляется через append.
Мне нужно чтобы текст прокручивался по мере его поступления(кто запускал ПТС сервер тот поймет как мне нужно сделать).
мб какой-то другой способ вывода текста использовать?
наглядный пример
Сообщений: 1,912
Тем: 56
Зарегистрирован: Jan 2009
Репутация:
12,921
linliss Написал:Начал я познавать swing.
Написал небольшую програмку с JTextArea(в который выводнится какой-то текст), текст добавляется через append.
Мне нужно чтобы текст прокручивался по мере его поступления(кто запускал ПТС сервер тот поймет как мне нужно сделать).
мб какой-то другой способ вывода текста использовать?
наглядный пример
нужно JTextArea сначала всунуть в JScrollPane и оно добавит скрол
Сообщений: 509
Тем: 7
Зарегистрирован: Apr 2008
Репутация:
1,660
Код: textarea.setText(new StringBuilder(message).append("\n").append(textarea.getMessage()).toString()));
второй варивант через документ
Код: textarea.getDocument().insert(...)
http://www.java2s.com <- Swing Examples Here
Сообщений: 1,912
Тем: 56
Зарегистрирован: Jan 2009
Репутация:
12,921
VISTALL Написал:нужно JTextArea сначала всунуть в JScrollPane и оно добавит скрол
не понял сорь
Сообщений: 1,759
Тем: 13
Зарегистрирован: May 2011
Репутация:
3,205
05-22-2011, 11:37 PM
(Сообщение последний раз редактировалось: 05-23-2011, 09:05 PM linliss.)
Aquanox Написал:Код: textarea.setText(new StringBuilder(message).append("\n").append(textarea.getMessage()).toString()));
второй варивант через документ
Код: textarea.getDocument().insert(...)
http://www.java2s.com <- Swing Examples Here щас попробуем....
Добавлено через 24 минуты
.... блин задолбался уже.... 4 часа сижу ниче не получается...
Добавлено через 9 часов 32 минуты
Висталл, спасибо за идею со скроллом
переписал полностью метод инициализации гуи, код сократился в 2.5 раза
теперь у меня работают скролл панельки...
но все равно оно само вниз не прокручиватся(как в консоли например...):negodue::negodue::negodue::negodue:
Добавлено через 21 час 24 минуты
мда... вот это эпический бред... если тыкнуть мышкой в поле с текстом как нужно работать небудет, если не тыкать то все нормально...
Сообщений: 104
Тем: 13
Зарегистрирован: May 2011
Репутация:
-16
linliss Написал:Начал я познавать swing.
...
запускал ПТС сервер тот поймет как мне нужно сделать).
... Вставь свой компонент, внутрь контейнера JScrollPane, информация доступна у производителя Java.
http://download.oracle.com/javase/tutori...lpane.html
Сообщений: 1,759
Тем: 13
Зарегистрирован: May 2011
Репутация:
3,205
05-24-2011, 07:29 AM
(Сообщение последний раз редактировалось: 05-24-2011, 05:49 PM linliss.)
Хлорка Написал:Вставь свой компонент, внутрь контейнера JScrollPane, информация доступна у производителя Java.
http://download.oracle.com/javase/tutori...lpane.html
Код: JTextPane textPane = new JTextPane(document);
textPane.setEditable(false);
textPane.setFocusable(false);
JScrollPane scrollPane = new JScrollPane(textPane);
frame.add(scrollPane, BorderLayout.CENTER);
если хоть раз тынуть мышкой в окно - текст перестает прокручиватся...
Добавлено через 10 часов 20 минут
закройте тему... разобрался...
Сообщений: 1,759
Тем: 13
Зарегистрирован: May 2011
Репутация:
3,205
Код: for(int i = 0; i <= 1000000; i++)
{
document.insertString(document.getLength(), "line number -> " + i, style);
}
Если в JTextPane вывести 100000-200000 (иногда больше) строк форматированого текста намертво виснет интерфейс, но прога себе дальше работает.
Можно как-то решить эту проблему, кроме как очищать JTextPane? (вывел 50000 строк и очистка)
Сообщений: 1,326
Тем: 10
Зарегистрирован: Apr 2010
Репутация:
2,078
linliss Написал:Если в JTextPane вывести 100000-200000 (иногда больше) строк форматированого текста намертво виснет интерфейс, но прога себе дальше работает.
Можно как-то решить эту проблему, кроме как очищать JTextPane? (вывел 50000 строк и очистка) Можно. В случае такого объема информации использовать стандартные компоненты Swing нет никакого смысла. Что же можно сделать?
Во-первых, хранить логи в каком-то другом месте, например в родном лог-файле.
Второе. Отображение логов делать "вручную", ориентируясь на позицию скролла (которую получить не сложно) и отрисовывая их самостоятельно. Да, согласен, будет некоторое количество "ручной работы", но это самое оптимальное, показывать не весь лог, а окно.
Как вариант - на том же JTextPane сделать FIFO, т.е. не очищать, а удалять первые строки по достижению определенного лимита.
Сообщений: 1,759
Тем: 13
Зарегистрирован: May 2011
Репутация:
3,205
Не могу найти нормальной документации по FIFO, с примером кода.. блин..
Если оставить все как есть, то прога проработает 2-3 дня и зависнет интерфейс.
|