Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[SWING] JTable, ToolTips und mehr

10 views
Skip to first unread message

Mathias Funk

unread,
Oct 24, 2001, 10:28:19 AM10/24/01
to
Hallo!
Ich habe folgendes Problem:
java.lang.Error: Destination component not connected to component tree
hierarchy
at javax.swing.SwingUtilities.convertPoint(SwingUtilities.java:98)
at
javax.swing.DefaultPopupFactory$JPanelPopup.convertParentLocationToScreen(DefaultPopupFactory.java:986)

at
javax.swing.DefaultPopupFactory$JPanelPopup.getBoundsOnScreen(DefaultPopupFactory.java:964)

at javax.swing.ToolTipManager.mouseExited(ToolTipManager.java:487)
at
java.awt.AWTEventMulticaster.mouseExited(AWTEventMulticaster.java:250)
at java.awt.Component.processMouseEvent(Component.java:3723)
at java.awt.Component.processEvent(Component.java:3546)
at java.awt.Container.processEvent(Container.java:1164)
at java.awt.Component.dispatchEventImpl(Component.java:2595)
at java.awt.Container.dispatchEventImpl(Container.java:1213)
at java.awt.Component.dispatchEvent(Component.java:2499)
at
java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:2451)
at
java.awt.LightweightDispatcher.trackMouseEnterExit(Container.java:2299)
at
java.awt.LightweightDispatcher.processMouseEvent(Container.java:2189)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:2125)
at java.awt.Container.dispatchEventImpl(Container.java:1200)
at java.awt.Window.dispatchEventImpl(Window.java:912)
at java.awt.Component.dispatchEvent(Component.java:2499)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:319)
at
java.awt.EventDispatchThread.pumpOneEvent(EventDispatchThread.java:103)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:84)

Background: Ich habe ein JTable in einer ScrollPane, als CellRenderer
fungiert eine JTextArea, die variabel in Höhe und Colorierung ist.
Außerdem ist für die Tabellenzellen global ein Tooltip eingerichtet (das
Prob. tritt aber auch bei Header Tooltips auf) - zuerst einmal wird der
Tooltip generell nur angezeigt, wenn er den äußeren Frame meines
Gesamt-Programms überlappt (warum nicht immer?), wenn man den Tooltip so
aktiviert, daß er nicht mit dem äußeren Rand überlappt und danach die
Maus aus der Tabelle herausbewegt, gibt es die Exception von oben.....
was kann der Fehler sein???
Danke schonmal (allein fürs Durchlesen ;-)) )
Gruß Mathias.

Raffael Herzog

unread,
Oct 24, 2001, 10:52:59 AM10/24/01
to
Mathias Funk schrieb:

> Ich habe folgendes Problem:
> java.lang.Error: Destination component not connected to component tree
> hierarchy

> [...]


>
> Background: Ich habe ein JTable in einer ScrollPane

Das wird wohl das Problem sein: Die Message sagt, dass die JTable
nicht Bestandteil des Komponenten-Baumes ist, was sie auch nicht ist,
da sie in den ViewPort des JScrollPane gesteckt wurde. Wenn Du den
Tool-Tip für das JScrollPane setzt, müsste es gehen.

Nun... wie beseitigt man das Problem? <grübel/>
<in-den-API-docs-nachschlag/>... Du musst es also irgendwie
hinkriegen, dass das JScrollPane abhängig von der Maus-Position einen
ToolTip erzeugt. Aus den Docs für JToolTip:

,----[ API-Docs für JToolTip ]
|
| A component that wants to create a custom ToolTip display can override
| JComponent's createToolTip method and use a subclass of this class.
`----

Also wenn Du ein spezielles JScrollPane erstellst, das von der
Komponente unter der Maus mittels getToolTipText() den Text abholt und
dann ein entsprechendes JToolTip zurückgibt (Hack: setToolTipText()
und return super.createToolTip()), müsste es gehen... Hmmm... naja,
irgendwie müsste man wohl noch verhindern, dass die JTable versucht,
selbständig einen ToolTip zu erzeugen...


Gruss und HTH ein wenig,

Raffi


--
(o_ Raffael Herzog
//\ her...@raffael.ch
V_/_ http://www.raffael.ch
May the penguin be with you!

Christian Kaufhold

unread,
Oct 24, 2001, 12:22:35 PM10/24/01
to
Hello!

Mathias Funk <fu...@techinfo.rwth-aachen.de> wrote:

> Ich habe folgendes Problem:

[ToolTipManager und/oder JPanelPopup zerlegen sich]

Probier mal:

ToolTipManager().sharedInstance().setLightWeightPopupEnabled(false);

Wieso die Light-Weight-Popup-Menüs nicht funktionieren, und wieso es
gerade zu diesem Error kommt (meine menschlichen Flow-Control-Fähigkeiten
schließen ihn eigentlich aus), weiß ich nicht. Hast du ein kurzes Pro-
gramm, das die gleichen Probleme hat, und welches JDK/OS verwendest du?


Christian

Mathias Funk

unread,
Oct 29, 2001, 3:35:38 AM10/29/01
to
Hi!

> Probier mal:

ok, schon passiert....

> ToolTipManager().sharedInstance().setLightWeightPopupEnabled(false);

wenn ich das mache, kommt nur noch ein weißes Rechteck ohne Text und die
Exception tritt wieder auf

> Wieso die Light-Weight-Popup-Menüs nicht funktionieren, und wieso es
> gerade zu diesem Error kommt (meine menschlichen Flow-Control-Fähigkeiten
> schließen ihn eigentlich aus),

ja, eigentlich ist das doch ein absolute Standardanwendung einer Tabelle, da
darf so etwas doch wirklich nicht sein...

> welches JDK/OS verwendest du?

JDK 1.3 unter WinNT

Mathias Funk

unread,
Oct 29, 2001, 4:36:51 AM10/29/01
to
Hi!

> Das wird wohl das Problem sein: Die Message sagt, dass die JTable
> nicht Bestandteil des Komponenten-Baumes ist, was sie auch nicht ist,
> da sie in den ViewPort des JScrollPane gesteckt wurde.

Ahaaa, das erklärt einiges!!

>
> Nun... wie beseitigt man das Problem? <grübel/>
> <in-den-API-docs-nachschlag/>... Du musst es also irgendwie
> hinkriegen, dass das JScrollPane abhängig von der Maus-Position einen

> ToolTip erzeugt...

nun ja, das JSrcollPane ist aber nur in der Ecke links oben wirklich
"sichtbar", z.B. in den Headern sowie auf der Tabellenfläche selber
reagieren dann ja die ViewObjekte (bzw. eben der ToolTipManager) auf
MouseEvents....

> Also wenn Du ein spezielles JScrollPane erstellst, das von der
> Komponente unter der Maus mittels getToolTipText() den Text abholt und
> dann ein entsprechendes JToolTip zurückgibt (Hack: setToolTipText()
> und return super.createToolTip()), müsste es gehen

> irgendwie müsste man wohl noch verhindern, dass die JTable versucht,


> selbständig einen ToolTip zu erzeugen...

Schwierig, oder nicht?! Vielleicht ist am sinnvollsten, den Tooltipmanager
garnicht zu benutzen, weil der sich ja irgendwie doch in jedes JComponent
reinhängt.............was meinst Du??

danke schön und tschüss
Mathias.

Christian Kaufhold

unread,
Oct 31, 2001, 7:21:16 AM10/31/01
to
Hello!

Mathias Funk <fu...@techinfo.rwth-aachen.de> wrote:

>> ToolTipManager().sharedInstance().setLightWeightPopupEnabled(false);

> wenn ich das mache, kommt nur noch ein weißes Rechteck ohne Text und die
> Exception tritt wieder auf

Eigentlich sollte JPanelPopup dann gar nicht mehr benutzt werden ...


>> Wieso die Light-Weight-Popup-Menüs nicht funktionieren, und wieso es
>> gerade zu diesem Error kommt (meine menschlichen Flow-Control-Fähigkeiten
>> schließen ihn eigentlich aus),

> ja, eigentlich ist das doch ein absolute Standardanwendung einer Tabelle, da
> darf so etwas doch wirklich nicht sein...


Entweder ist das ein Problem deines JDK-Setups, oder du machst irgendetwas
Merkwürdiges in deinem Code.


Christian

0 new messages