Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Вoпрос про oшибку при двойном щелчке в JEditorPane / 4 сообщений из 4, страница 1 из 1
13.04.2005, 19:26
    #33014415
Pankon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вoпрос про oшибку при двойном щелчке в JEditorPane
Oшибкa при двойном щелчке в JEditorPane на ссылке
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
 import  javax.swing.*;
 import  javax.swing.event.HyperlinkListener;
 import  javax.swing.event.HyperlinkEvent;
 public   class  Test  extends  JFrame  implements  HyperlinkListener
{
	 private  String str1="<p>TEXT<p><a href='link'>TEXT</a>" +
						"<p>TExt"+
						"<p>TExt"+"<p>TExt"+"<p>TExt";
	 private  String str2="<p>text<p><a href='link'>TEXT</a>" +
						"<p>TExt"+
						"<p>TExt"+"<p>TExt"+"<p>TExt";;
	 private   boolean  b = true;
	 public  JEditorPane displayClassProperties=  new  JEditorPane();;
	 public   static   void  main(String[] arg)
	{
		 new  Test();
	}
	 public  Test(){
		displayClassProperties.setContentType("text/html");
    	displayClassProperties.setText(str1);
		displayClassProperties.addHyperlinkListener( this );
		 this .getContentPane().add( new  JScrollPane(displayClassProperties));
		displayClassProperties.setEditable(false);
		 this .setSize( 200 , 100 );
		 this .setVisible(true);
	}
	 public   void  hyperlinkUpdate(HyperlinkEvent e) {
 		 if  (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {
			  if  (b){
				displayClassProperties.setText(str1);
				b=false;
			 } else {
				displayClassProperties.setText(str2);
				 b=true;
			 }
			displayClassProperties.updateUI();
		 }
	}
}

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
java.lang.IllegalArgumentException:  null  source
	at java.util.EventObject.<init>(EventObject.java: 34 )
	at java.awt.AWTEvent.<init>(AWTEvent.java: 225 )
	at java.awt.event.ActionEvent.<init>(ActionEvent.java: 161 )
	at javax.swing.text.DefaultCaret.mouseClicked(DefaultCaret.java: 295 )
	at java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java: 212 )
	at java.awt.Component.processMouseEvent(Component.java: 5103 )
	at java.awt.Component.processEvent(Component.java: 4897 )
	at java.awt.Container.processEvent(Container.java: 1569 )
	at java.awt.Component.dispatchEventImpl(Component.java: 3615 )
	at java.awt.Container.dispatchEventImpl(Container.java: 1627 )
	at java.awt.Component.dispatchEvent(Component.java: 3477 )
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java: 3483 )
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java: 3207 )
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java: 3128 )
	at java.awt.Container.dispatchEventImpl(Container.java: 1613 )
	at java.awt.Window.dispatchEventImpl(Window.java: 1606 )
	at java.awt.Component.dispatchEvent(Component.java: 3477 )
	at java.awt.EventQueue.dispatchEvent(EventQueue.java: 456 )
	at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java: 201 )
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java: 151 )
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java: 145 )
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java: 137 )
	at java.awt.EventDispatchThread.run(EventDispatchThread.java: 100 )
java.lang.IllegalArgumentException:  null  source
	at java.util.EventObject.<init>(EventObject.java: 34 )
	at java.awt.AWTEvent.<init>(AWTEvent.java: 225 )
	at java.awt.event.ActionEvent.<init>(ActionEvent.java: 161 )
	at javax.swing.text.DefaultCaret.mouseClicked(DefaultCaret.java: 299 )
	at java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java: 212 )
	at java.awt.Component.processMouseEvent(Component.java: 5103 )
	at java.awt.Component.processEvent(Component.java: 4897 )
	at java.awt.Container.processEvent(Container.java: 1569 )
	at java.awt.Component.dispatchEventImpl(Component.java: 3615 )
	at java.awt.Container.dispatchEventImpl(Container.java: 1627 )
	at java.awt.Component.dispatchEvent(Component.java: 3477 )
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java: 3483 )
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java: 3207 )
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java: 3128 )
	at java.awt.Container.dispatchEventImpl(Container.java: 1613 )
	at java.awt.Window.dispatchEventImpl(Window.java: 1606 )
	at java.awt.Component.dispatchEvent(Component.java: 3477 )
	at java.awt.EventQueue.dispatchEvent(EventQueue.java: 456 )
	at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java: 201 )
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java: 151 )
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java: 145 )
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java: 137 )
	at java.awt.EventDispatchThread.run(EventDispatchThread.java: 100 )

...
Рейтинг: 0 / 0
14.04.2005, 11:47
    #33015374
NotGonnaGetUs
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вoпрос про oшибку при двойном щелчке в JEditorPane
Код: plaintext
1.
2.
3.
4.
5.
	 public   void  hyperlinkUpdate(HyperlinkEvent e) {
 		 if  (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {
            displayClassProperties.setText((b = !b) ? str1 : str2);
        }
	}

Проблемы в updateUI().
...
Рейтинг: 0 / 0
14.04.2005, 13:16
    #33015710
Pankon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вoпрос про oшибку при двойном щелчке в JEditorPane
Да, я знаю, что в этом проблема. Но без updateUI() -
Код: plaintext
1.
2.
3.
4.
5.
6.
 public   void  hyperlinkUpdate(HyperlinkEvent e) {
 		 if  (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {
			displayClassProperties.setText((b = !b) ? str1 : str2);
//displayClassProperties.updateUI();
			 }
			
	}
присходит скролинг вниз хтмл страницы, от чего я и избавляюсь с помощью updateUI() -
Код: plaintext
1.
2.
3.
4.
5.
 public   void  hyperlinkUpdate(HyperlinkEvent e) {
 		 if  (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {
				displayClassProperties.setText((b = !b) ? str1 : str2);
			 }
			displayClassProperties.updateUI();
	}
В этом варианте все работает корректно - при одинарном челчке. При двойном же выпадает эта ошибка, которая и весь кайф портит.
...
Рейтинг: 0 / 0
14.04.2005, 13:21
    #33015737
NotGonnaGetUs
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вoпрос про oшибку при двойном щелчке в JEditorPane
делай тогда весь вызов в SwingUtilities.invokeLater().
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Вoпрос про oшибку при двойном щелчке в JEditorPane / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]