![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
force |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 71 Регистрация: 20.11.2005 Репутация: нет Всего: нет |
Есть некая панель. В ней находится много контролов, а внизу самом JTextArea. Эта панель находится в JScrollPane. ТАк вот при вызове метода setText у JTextArea панель автоматически прокручивается в самый низ. Нужно же, что ничего не менялось, т.е. чтобы скрол так и оставался в верхнем положении. Программно попытка установить скролл в верхнее положение после вызова setText также не проходит (его положение не изменяется). Проблема явно связана с изменением положения каретки. Если принудительно поставить setCaretPosition(0), то тогда панель прокручивается не до самого низа, а то первой строки JTextArea (что тоже нехорошо, нужно чтобы setText никак не влиял на положение скрола).
Версия Java 1.42_05 (другую использовать не имею возможности). Это сообщение отредактировал(а) force - 27.4.2007, 09:09 |
|||
|
||||
dorogoyIV |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1503 Регистрация: 26.3.2007 Репутация: 36 Всего: 46 |
попробуй вместо setText JTextArea.append();
у меня по крайней мере работает так как ты хочешь. Это сообщение отредактировал(а) dorogoyIV - 27.4.2007, 11:28 |
|||
|
||||
nornad |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 6 Всего: 31 |
Можно ещё попробовать вместо setCaretPosition(0) использовать установку фокуса на один из верхних контролов в скроллпейне (контрол.requestFocus()).
-------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
|||
|
||||
dorogoyIV |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1503 Регистрация: 26.3.2007 Репутация: 36 Всего: 46 |
и пометь пожалуйста вопрос как решенный если нашел ответ
![]() не ленись. ![]() а то начинают возникать подозрения... в чем же дело?... Это сообщение отредактировал(а) dorogoyIV - 29.4.2007, 14:16 |
|||
|
||||
nornad |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 6 Всего: 31 |
![]() Думаю, он просто ещё не успел появиться на форуме после наших ответов. -------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
|||
|
||||
dorogoyIV |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1503 Регистрация: 26.3.2007 Репутация: 36 Всего: 46 |
видел я его в онлайне ![]() |
|||
|
||||
powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 31 Всего: 159 |
|
|||
|
||||
force |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 71 Регистрация: 20.11.2005 Репутация: нет Всего: нет |
Вопрос то на самом деле не решен. append не помогает. Аналогично вся панель прокручивается вниз. Возможно это проблема Java 1.42_05 такая. Фокус пробовал ставить на верхний контрол, скрол прокручивается обратно вверх, но не до конца.
Может быть несколько нерпаивльно понимается, как у меня размещены контролы. Ещё раз попробую описать. Есть JScrollPane, в нем находится некая панель (пусть panel1). В ней находится 3 панели (сверху вниз), для каждой установлено titledBorder. Верхняя содержить просто много JLabel. Следующая за ней таблиц и самаяч нижняя JTextArea. Если в JTextArea текст не устанавливать, то все прекрасно работает, вниз не прокручивается (изначально высота основной панели такая, что JTextArea даже без текста не виден, т.е. есть скрол). Как только вызывает для JTextArea setText или append, то прокручивается самая главная панель (panel1) вниз. Это сообщение отредактировал(а) force - 30.4.2007, 16:10 |
|||
|
||||
nornad |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 6 Всего: 31 |
Попробуй сделать так:
-------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
|||
|
||||
force |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 71 Регистрация: 20.11.2005 Репутация: нет Всего: нет |
nornad, Спасибо, попробую. Но ведь append просто добавляет в конец. А как до этого очистить textArea, чтобы скрол вниз не прокрутился, хотя по идее setText("") не будет прокручивать (не пробовал пока ещё).
Это сообщение отредактировал(а) force - 30.4.2007, 22:04 |
|||
|
||||
nornad |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 6 Всего: 31 |
Просто сразу используй setText(), а не append(). Успешность метода не гарантирую, но шансы есть - фокус на компонент падать не должен, а значит и прокрутка не должна бы идти до него... -------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
|||
|
||||
dorogoyIV |
|
||||||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1503 Регистрация: 26.3.2007 Репутация: 36 Всего: 46 |
вот работающий код:
если поиграешь с 25 и 26 строкой, увидишь разницу ![]() также обрати внимание на строку:
сразу написан пробел. если его убрать и написать:
опять будет прокручивать вниз. думаю дальше надо делать как говорил nornad, но я не проверял. Это сообщение отредактировал(а) dorogoyIV - 1.5.2007, 03:15 |
||||||
|
|||||||
force |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 71 Регистрация: 20.11.2005 Репутация: нет Всего: нет |
B]nornad[/B], Нет, метод не прошел. ВСе равно прокручивается.
dorogoyIV, Большое спасибо! То, что надо. Но вот с очисткой всего этого проблемы. setText ("") вызывается нормально, но после него при добавлении прокручивакется вниз (вызов setText(" ") само прокручивает). Единственное возможное решение, которое я вижу, это удалять компонент и создавать заново при каждом добавлении текста. Но это как-то криво. Я только не понимаю, зачем нужно было так мудрить с JTextArea. Зачем делать по умолчанию эту прокрутку ?! |
|||
|
||||
dorogoyIV |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1503 Регистрация: 26.3.2007 Репутация: 36 Всего: 46 |
если тебя устроит, то здесь поможет jTextArea.setEditable(false); |
|||
|
||||
force |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 71 Регистрация: 20.11.2005 Репутация: нет Всего: нет |
dorogoyIV, И чем он мне может помочь, что-то слабо понял. Мне нужно всего лишь при нажатии на кнопку Text в вашем примере текст не добавлялся к текущему содержимому, а просто устанавливался (ну и не прокручивался).
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |