2013-06-25 1 views
0

Мы работаем здесь, в офисе, с кажущейся неразрешимой ошибкой в ​​одном из наших (массивных) апплетов, который является Java-симуляцией MS Word, для экзаменационных целей. Исключение, похоже, связано с самим качели, и я не уверен, как бы я решил его решить. Вот что происходит:Апплет: визуально ошибки только в браузере и исключение из Swing

Апплет загружает экран загрузки до 100%. После этого все компоненты отображаются некорректно, как если бы некоторые из их методов рисования не вызывались правильно, наведение курсора на некоторые кнопки и т. Д. Заставляет их мигать/отображать какое-то время. И исключение печатается на консоль каждую секунду или около того. (См. Ниже) Эта ошибка НЕ ​​происходит внутри Eclipse, только в браузере.

Резюме: апплет все компонент получить построены без исключения, но на каждый «краску» зов какой-либо компоненты (я предполагаю), визуально ошибки из и печатаются каждый вторым следующее:

Exception in thread "AWT-EventQueue-11" java.lang.ClassCastException: javax.swing.JLabel cannot be cast to javax.swing.text.JTextComponent 
at javax.swing.text.html.EditableView.paint(Unknown Source) 
at javax.swing.text.BoxView.paintChild(Unknown Source) 
at javax.swing.text.BoxView.paint(Unknown Source) 
at javax.swing.text.BoxView.paintChild(Unknown Source) 
at javax.swing.text.BoxView.paint(Unknown Source) 
at javax.swing.text.ParagraphView.paint(Unknown Source) 
at javax.swing.text.html.ParagraphView.paint(Unknown Source) 
at javax.swing.text.BoxView.paintChild(Unknown Source) 
at javax.swing.text.BoxView.paint(Unknown Source) 
at javax.swing.text.html.BlockView.paint(Unknown Source) 
at javax.swing.text.BoxView.paintChild(Unknown Source) 
at javax.swing.text.BoxView.paint(Unknown Source) 
at javax.swing.text.html.BlockView.paint(Unknown Source) 
at javax.swing.plaf.basic.BasicHTML$Renderer.paint(Unknown Source) 
at javax.swing.plaf.basic.BasicLabelUI.paint(Unknown Source) 
at javax.swing.plaf.ComponentUI.update(Unknown Source) 
at javax.swing.JComponent.paintComponent(Unknown Source) 
at javax.swing.JComponent.paint(Unknown Source) 
at javax.swing.JComponent.paintChildren(Unknown Source) 
at javax.swing.JComponent.paint(Unknown Source) 
at javax.swing.JComponent.paintChildren(Unknown Source) 
at javax.swing.JComponent.paint(Unknown Source) 
at javax.swing.JComponent.paintChildren(Unknown Source) 
at javax.swing.JComponent.paint(Unknown Source) 
at javax.swing.JComponent.paintChildren(Unknown Source) 
at javax.swing.JComponent.paint(Unknown Source) 
at javax.swing.JLayeredPane.paint(Unknown Source) 
at javax.swing.JComponent.paintToOffscreen(Unknown Source) 
at javax.swing.BufferStrategyPaintManager.paint(Unknown Source) 
at javax.swing.RepaintManager.paint(Unknown Source) 
at javax.swing.JComponent._paintImmediately(Unknown Source) 
at javax.swing.JComponent.paintImmediately(Unknown Source) 
at javax.swing.RepaintManager$3.run(Unknown Source) 
at javax.swing.RepaintManager$3.run(Unknown Source) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) 
at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source) 
at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source) 
at javax.swing.RepaintManager.prePaintDirtyRegions(Unknown Source) 
at javax.swing.RepaintManager.access$1000(Unknown Source) 
at javax.swing.RepaintManager$ProcessingRunnable.run(Unknown Source) 
at java.awt.event.InvocationEvent.dispatch(Unknown Source) 
at java.awt.EventQueue.dispatchEventImpl(Unknown Source) 
at java.awt.EventQueue.access$200(Unknown Source) 
at java.awt.EventQueue$3.run(Unknown Source) 
at java.awt.EventQueue$3.run(Unknown Source) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) 
at java.awt.EventQueue.dispatchEvent(Unknown Source) 
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) 
at java.awt.EventDispatchThread.pumpEventsForFilter(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) 

Помощь будет принята с благодарностью, так как это заводит меня в орехи, я не могу найти, что вызывает это, так как код от предыдущего разработчика и полный беспорядок. Я пробовал разные версии JDK.

Thanx.

+1

Глядя на [код] (http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/javax/ swing/text/html/EditableView.java # EditableView.paint% 28java.awt.Graphics% 2Cjava.awt.Shape% 29) для метода, который бросил, кажется, что у вас как-то есть 'JLabel', действующий как контейнер для текстовый компонент. Я бы начал с поиска вызовов 'add()' на любом из ваших ярлыков. – parsifal

+0

Хорошая идея, ища это сейчас. –

+0

Удалите все из модуля, оставьте голый апплет для костей, затем начните добавлять по частям, пока не найдете место в коде, которое порождает ошибку. –

ответ

0

Нашли исправление к моей проблеме. Целевая версия Java была неправильной. В файле build.xml, были следующие строки:

<property name="target" value="1.5" /> 
<property name="source" value="1.5" /> 

Изменен те 1.7, и вуаля! Кажется, это была ошибка Swing, исправленная в новых версиях Java.

4

java.lang.ClassCastException: javax.swing.JLabel не может быть приведен к javax.swing.text.JTextComponent

  • см компонентов дерева для JTextComponents, есть не JLabel, JLabel не является членом JTextComponents

  • безопасным может быть, чтобы проверить if (Xxx instanceof JTextComponent) перед любым отливкой

+0

За исключением того, что литье происходит глубоко внутри внутреннего кода Swing. Таким образом, реальный вопрос (и реальный ответ) заключается в том, как «JLabel» оказался ребенком «BoxView». – parsifal

+0

Это странная часть.Нигде в моем коде нет лита, сделанного для любого подкомпонента, или для JTextComponent. Разве трассировка стека не указывала бы мне на мой источник, а не на колебание? –

+2

[* Начальные темы *] (http://docs.oracle.com/javase/tutorial/uiswing/concurrency/initial.html) также относится к апплетам. – trashgod

0

Я заметил, что эта проблема может возникнуть, когда JLabel с тегами вокруг содержимого содержит вложенные теги. Решение состоит в том, чтобы избежать угловых скобок на

 Смежные вопросы

  • Нет связанных вопросов^_^