Форум администраторов игровых серверов

Форум администраторов игровых серверов (https://forum.zone-game.info/TT.php)
-   Java (https://forum.zone-game.info/forumdisplay.php?f=126)
-   -   java GUI (https://forum.zone-game.info/showthread.php?t=14235)

linliss 22.05.2011 21:32

java GUI
 
Написал небольшую програмку с JTextArea(в который выводнится какой-то текст), текст добавляется через append.
Мне нужно чтобы текст прокручивался по мере его поступления(кто запускал ПТС сервер тот поймет как мне нужно сделать).

мб какой-то другой способ вывода текста использовать?

наглядный пример
http://s47.radikal.ru/i116/1105/f3/7231c9eb8b2d.jpg

VISTALL 22.05.2011 23:00

Re: java GUI
 
Цитата:

Сообщение от linliss (Сообщение 123070)
Начал я познавать swing.
Написал небольшую програмку с JTextArea(в который выводнится какой-то текст), текст добавляется через append.
Мне нужно чтобы текст прокручивался по мере его поступления(кто запускал ПТС сервер тот поймет как мне нужно сделать).

мб какой-то другой способ вывода текста использовать?

наглядный пример
http://s47.radikal.ru/i116/1105/f3/7231c9eb8b2d.jpg

нужно JTextArea сначала всунуть в JScrollPane и оно добавит скрол

Aquanox 22.05.2011 23:18

Re: java GUI
 
Код:

textarea.setText(new StringBuilder(message).append("\n").append(textarea.getMessage()).toString()));
второй варивант через документ
Код:

textarea.getDocument().insert(...)

http://www.java2s.com <- Swing Examples Here

VISTALL 22.05.2011 23:33

Re: java GUI
 
Цитата:

Сообщение от VISTALL (Сообщение 123088)
нужно JTextArea сначала всунуть в JScrollPane и оно добавит скрол

не понял сорь

linliss 22.05.2011 23:37

Re: java GUI
 
Цитата:

Сообщение от Aquanox (Сообщение 123091)
Код:

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 раза:D
теперь у меня работают скролл панельки...:)

но все равно оно само вниз не прокручиватся(как в консоли например...):negodue::negodue::negodue::negodue:

Добавлено через 21 час 24 минуты
мда... вот это эпический бред... если тыкнуть мышкой в поле с текстом как нужно работать небудет, если не тыкать то все нормально...

Хлорка 23.05.2011 22:00

Re: java GUI
 
Цитата:

Сообщение от linliss (Сообщение 123070)
Начал я познавать swing.
...
запускал ПТС сервер тот поймет как мне нужно сделать).
...

Вставь свой компонент, внутрь контейнера JScrollPane, информация доступна у производителя Java.

http://download.oracle.com/javase/tu...crollpane.html

linliss 24.05.2011 07:29

Re: java GUI
 
Цитата:

Сообщение от Хлорка (Сообщение 123257)
Вставь свой компонент, внутрь контейнера JScrollPane, информация доступна у производителя Java.

http://download.oracle.com/javase/tu...crollpane.html

Код:

JTextPane textPane = new JTextPane(document);
textPane.setEditable(false);
textPane.setFocusable(false);
JScrollPane scrollPane = new JScrollPane(textPane);
frame.add(scrollPane, BorderLayout.CENTER);


если хоть раз тынуть мышкой в окно - текст перестает прокручиватся...

Добавлено через 10 часов 20 минут
закройте тему... разобрался...

linliss 28.05.2011 00:19

Re: java GUI
 
Код:

for(int i = 0; i <= 1000000; i++)
{
        document.insertString(document.getLength(), "line number -> " + i, style);
}

Если в JTextPane вывести 100000-200000 (иногда больше) строк форматированого текста намертво виснет интерфейс, но прога себе дальше работает.
Можно как-то решить эту проблему, кроме как очищать JTextPane? (вывел 50000 строк и очистка)

Azagthtot 28.05.2011 09:05

Re: java GUI
 
Цитата:

Сообщение от linliss (Сообщение 123958)
Если в JTextPane вывести 100000-200000 (иногда больше) строк форматированого текста намертво виснет интерфейс, но прога себе дальше работает.
Можно как-то решить эту проблему, кроме как очищать JTextPane? (вывел 50000 строк и очистка)

Можно. В случае такого объема информации использовать стандартные компоненты Swing нет никакого смысла. Что же можно сделать?
Во-первых, хранить логи в каком-то другом месте, например в родном лог-файле.
Второе. Отображение логов делать "вручную", ориентируясь на позицию скролла (которую получить не сложно) и отрисовывая их самостоятельно. Да, согласен, будет некоторое количество "ручной работы", но это самое оптимальное, показывать не весь лог, а окно.
Как вариант - на том же JTextPane сделать FIFO, т.е. не очищать, а удалять первые строки по достижению определенного лимита.

linliss 28.05.2011 16:52

Re: java GUI
 
Не могу найти нормальной документации по FIFO, с примером кода.. блин..:(

Если оставить все как есть, то прога проработает 2-3 дня и зависнет интерфейс.


Текущее время: 01:50. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot