Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ArrayIndexOutOfBoundsException 
:(
    Опции темы
TrivialCore
Дата 14.10.2004, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 242
Регистрация: 26.4.2004

Репутация: 2
Всего: 5



Вот такой вот странный иксепшн, в стеке которого нет моих классов, т.е. как мне тогда исправлять ошибку!

Он выскакивает нерегулярно, когда я что-то делаю с GUI (нажимаю всякие чекбоксы, кнопки, перехожу с закладки на закладку...)

Искал в интернете, кое что нашел, но все же не смог решить проблему. Там было сказано, что проблема в JEditorPane, который у меня тоже есть, но я не знаю, как это исправить!
Помогите, кто встречался с подобным!

Цитата
java.lang.ArrayIndexOutOfBoundsException

at javax.swing.text.BoxView.getOffset(Unknown Source)

at javax.swing.text.BoxView.childAllocation(Unknown Source)

at javax.swing.text.CompositeView.getChildAllocation(Unknown Source)

at javax.swing.text.BoxView.getChildAllocation(Unknown Source)

at javax.swing.plaf.basic.BasicTextUI$UpdateHandler.calculateViewPosition(Unknown Source)

at javax.swing.plaf.basic.BasicTextUI$UpdateHandler.layoutContainer(Unknown Source)

at java.awt.Container.layout(Unknown Source)

at java.awt.Container.doLayout(Unknown Source)

at java.awt.Container.validateTree(Unknown Source)

at java.awt.Container.validateTree(Unknown Source)

at java.awt.Container.validateTree(Unknown Source)

at java.awt.Container.validate(Unknown Source)

at javax.swing.JViewport.validateView(Unknown Source)

at javax.swing.JViewport.scrollRectToVisible(Unknown Source)

at javax.swing.JComponent.scrollRectToVisible(Unknown Source)

at javax.swing.text.DefaultCaret.adjustVisibility(Unknown Source)

at javax.swing.text.DefaultCaret.repaintNewCaret(Unknown Source)

at javax.swing.text.DefaultCaret$1.run(Unknown Source)

at java.awt.event.InvocationEvent.dispatch(Unknown Source)

at java.awt.EventQueue.dispatchEvent(Unknown Source)

at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)

at java.awt.EventDispatchThread.pumpEvents(Unknown Source)

at java.awt.EventDispatchThread.pumpEvents(Unknown Source)

at java.awt.EventDispatchThread.run(Unknown Source)


PM MAIL   Вверх
Разгильдяй
Дата 15.10.2004, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 20.8.2004

Репутация: нет
Всего: нет



а код можно посмотреть?
PM MAIL   Вверх
TrivialCore
Дата 15.10.2004, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 242
Регистрация: 26.4.2004

Репутация: 2
Всего: 5



Какой код? У меня классов дофига sad.gif
PM MAIL   Вверх
Domestic Cat
Дата 15.10.2004, 20:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



Нда, это проблемка smile.gif smile.gif Такая ерунда обычо лезет если пишешь гуи со своими компонентанми
(например, класс наследуюий от комбобокса, и т п.) ,и помещаешь их в, скаж,ем, тулбар.

При этом лей аут менеджер немного офигевает и бросает иксепшны. Поэтому:

1. Все компоненты должны давать минимальный и преферред размеры (гетМинимумСизе, гетПреферредСизе). Допиши им эти методы.
2. Если ничего не меняятся, найди какой компонент вызывает иксепшн (последователь;но поотключай их все). И запости его код.

Это сообщение отредактировал(а) Domestic Cat - 15.10.2004, 20:50


--------------------

PM   Вверх
TrivialCore
Дата 17.10.2004, 00:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 242
Регистрация: 26.4.2004

Репутация: 2
Всего: 5



Попробуем, как неделя начнется =)
PM MAIL   Вверх
TrivialCore
Дата 18.10.2004, 10:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 242
Регистрация: 26.4.2004

Репутация: 2
Всего: 5



Вот, я исследовал, что ошибка в этом классе:
Код
public class SqlTextArea extends JEditorPane implements Observer {
   
   public SqlTextArea() {
       super();
       setEnabled(false);
       setEditable(false);
       setContentType("text/html");
       ModelFactory.getInstance().getSqlTextModel().addObserver(this);
   }
   
   public void update(Observable o, Object arg) {
       setEnabled(true);
       if (o instanceof SqlTextModel) {
           SqlTextModel textModel = (SqlTextModel)o;
           ArrayList instances = textModel.getSelectedInstances();
           StringBuffer text = new StringBuffer();
           for (int i=0; i<instances.size(); i++) {
               SqlInstancesBean bean = (SqlInstancesBean)instances.get(i);
               text.append("<p>");
               text.append("<b>" + bean.getBox() + ":" + bean.getInstance() + ":" + bean.getSchema() + "</b>");
               text.append("<pre>");
               text.append(textModel.getTextForInstanceBean(bean));
               text.append("</pre></p>");
           }
           setText(text.toString());
       }
   }

}


А вот код в самом апплете, который добавляет эту компоненту:
Код
private void initSqlTextPanel() {
       //1.2.2.3. Generate sqlTextPanel with content
       sqlTextPanel = new JPanel();
       sqlTextPanel.setLayout(new BorderLayout());
       sqlTextPanel.setBorder(BorderFactory.createEmptyBorder(0, 4, 10, 4));
       
       sqlTextArea = new SqlTextArea();
       sqlTextArea.setFont(new Font("Verdana", 0, 15));
       //TODO: set settings for sqlTextArea
       
       JPanel sqlDataButtonPanel = new JPanel();
       sqlDataButtonPanel.setLayout(new FlowLayout(FlowLayout.LEFT));
       sqlSelectInstancesButton2 = new SqlResSelectInstancesButton();
       sqlSelectInstancesButton2.setFont(buttonFont);
       sqlDataButtonPanel.add(sqlSelectInstancesButton2);
       
       sqlTextScrollPane = new JScrollPane();
       sqlTextScrollPane.setViewportView(sqlTextArea);
       
       sqlTextPanel.add(sqlTextScrollPane, BorderLayout.CENTER);
       sqlTextPanel.add(sqlDataButtonPanel, BorderLayout.NORTH);
   }

PM MAIL   Вверх
Domestic Cat
Дата 18.10.2004, 20:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



Попробуй дописать в SqlTextArea методы getPreferredSize и getMinimumSizе.
Не будет работать - добавь эти методы к JScrollPane.


Еси не сработает, то можно либо об иксепшне забыть (если он нич)его плохого не делает), либо использовать просто JEditorPane, а все остальное - Обзервер и пр. дописать явно в initSqlTextPanel.




--------------------

PM   Вверх
TrivialCore
Дата 18.10.2004, 21:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 242
Регистрация: 26.4.2004

Репутация: 2
Всего: 5



До четверга не попробую, т.к. тогда только на работу иду. А там - будем пробовать =)

Цитата(Domestic @ 18.10.2004, 20:09)
Еси не сработает, то можно либо об иксепшне забыть (если он нич)его плохого не делает)
Ой мешает, из-за него все приложение вываливается и висит ногами вверх =(
PM MAIL   Вверх
Domestic Cat
Дата 18.10.2004, 21:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



Цитата(TrivialCore @ 18.10.2004, 12:12)
Ой мешает, из-за него все приложение вываливается и висит ногами вверх =(


У меня такое было с тулбаром, я в него вставлял свои комбобоксы и весь лей аут "ехал" и бросаl иксепшн. Думаю, установка сайзов все исправит :)


--------------------

PM   Вверх
TrivialCore
Дата 19.10.2004, 22:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 242
Регистрация: 26.4.2004

Репутация: 2
Всего: 5



Цитата(Domestic @ 18.10.2004, 20:09)
либо использовать просто JEditorPane, а все остальное - Обзервер и пр. дописать явно в initSqlTextPanel.
Кстати, а как это? Как сделать, чтобы например JEditorPane стало Observer? Что-то не вижу, как это можно реализовать без наследования?
PM MAIL   Вверх
Domestic Cat
Дата 20.10.2004, 20:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



Зависит от того, что ты хочешь наблюдать. Из кода я не совсем понял :)


--------------------

PM   Вверх
TrivialCore
Дата 22.10.2004, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 242
Регистрация: 26.4.2004

Репутация: 2
Всего: 5



Вроде окончательно разделался с этим багом. Кому интересно, тут можно посмотреть:
http://forum.java.sun.com/thread.jsp?threa...message=1494127
Последняя мессага оттуда
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0664 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.