NetBeans Selection Management

Alles zu NetBeans als RCP-Platform

Moderator: wegus

Antworten
UweK

NetBeans Selection Management

Beitrag von UweK » 19.04.2007, 15:38

Hallo zusammen,

ich habe mir eine TopComponent HeadDataViewer erstellt, in der Details von HeadData dargestellt werden sollen. HeadDataViewer ist im gleichen Modul wie die aufrufende TopComponent.

Ich habe alles wie im Tutorial "NetBeans Selection Management Tutorial I—Using a TopComponent's Lookup" gemacht.

Alles lässt sich problemlos kompilieren und zur Laufzeit erscheint folgender Fehler:

Code: Alles auswählen

java.lang.IllegalStateException: Trying to set lookup SimpleLookup[de.own.dataModels.HeadData@1672313] but there already is java.lang.ref.WeakReference@2fe032 for component: de.own.search.SearchResultTopComponent[SearchResult Window,2,0,555x679,layout=org.jdesktop.layout.GroupLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=256,maximumSize=,minimumSize=,preferredSize=]
	at org.openide.windows.TopComponent.setLookup(TopComponent.java:1075)
	at org.openide.windows.TopComponent.associateLookup(TopComponent.java:1060)
	at de.own.search.SearchResultTopComponent.access$100(SearchResultTopComponent.java:20)
	at de.own.search.SearchResultTopComponent$2.valueChanged(SearchResultTopComponent.java:141)
	at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:167)
	at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:137)
	at javax.swing.DefaultListSelectionModel.setValueIsAdjusting(DefaultListSelectionModel.java:668)
	at javax.swing.plaf.basic.BasicTableUI$Handler.setValueIsAdjusting(BasicTableUI.java:929)
	at javax.swing.plaf.basic.BasicTableUI$Handler.mouseReleased(BasicTableUI.java:1140)
	at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:273)
	at java.awt.Component.processMouseEvent(Component.java:6038)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3260)
	at java.awt.Component.processEvent(Component.java:5803)
	at java.awt.Container.processEvent(Container.java:2058)
	at java.awt.Component.dispatchEventImpl(Component.java:4410)
	at java.awt.Container.dispatchEventImpl(Container.java:2116)
	at java.awt.Component.dispatchEvent(Component.java:4240)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
	at java.awt.Container.dispatchEventImpl(Container.java:2102)
	at java.awt.Window.dispatchEventImpl(Window.java:2429)
	at java.awt.Component.dispatchEvent(Component.java:4240)
[catch] at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
Was mach ich da falsch?

UweK

Beitrag von UweK » 20.04.2007, 13:14

Problem gelöst.

Benutzeravatar
csc
Beiträge: 172
Registriert: 05.12.2006, 12:06
Wohnort: Bremen/Göttingen
Kontaktdaten:

Beitrag von csc » 20.04.2007, 14:13

und wie?

UweK

Beitrag von UweK » 20.04.2007, 14:41

@csc

Ich beschreib mal eben das Szenario. Der Code, welcher im Tutorial bei der Initialisierung des Editors aufgerufen wird, ist folgender:

Code: Alles auswählen

associateLookup (Lookups.singleton (obj);
Ich nutze in meiner Applikation keinen Editor. Mehrere Objekte vom Typ "HeadData" werden in einer Tabelle dargestellt. An die Tabelle habe ich einen Listener gehangen, der die Selektionen überwacht. Wenn eine neue Zeile ausgewählt wird, wurde der obige Code ausgeführt und hat dann zum Fehler geführt.
Die Lösung für das Problem steht auch im Tutorial, allerdings weiter unten im Abschnitt "Changing Selected Objects on the Fly".

Uwe

Antworten