Hallo,
ich habe ein etwas seltsames Problem mit Tooltips und Synth. Ich habe eine Komponete erstellt die von JTextField erbt und einen eigenes Tooltip verwendet. Wenn ich das erste mal über die Komponente fahre, funktioniert alles wunderbar. Das Tooltip wird angezeigt und die im xml beschriebenen Formatierungen stimmen auch. Ab dem Zweiten mal bekomme ich immer eine Exception. Um das Verhalten zu demonstrieren habe ich mal ein ganz einfache Komponente erstellt die genau die teile enthält um den ehler zu reproduzieren.
die Exception lautet:
Exception in thread "AWT-EventQueue-1" java.lang.NullPointerException at javax.swing.plaf.synth.SynthToolTipUI.getPreferredSize(SynthToolTipUI.java:139) at javax.swing.JComponent.getPreferredSize(JComponent.java:1615) at javax.swing.ToolTipManager.showTipWindow(ToolTipManager.java:233) at javax.swing.ToolTipManager$insideTimerAction.actionPerformed(ToolTipManager.java:655) at javax.swing.Timer.fireActionPerformed(Timer.java:271) at javax.swing.Timer$DoPostEvent.run(Timer.java:201) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209) at java.awt.EventQueue.dispatchEvent(EventQueue.java:461) at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149) at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)Exception in thread "AWT-EventQueue-1" java.lang.NullPointerException at javax.swing.plaf.synth.SynthToolTipUI.getPreferredSize(SynthToolTipUI.java:139) at javax.swing.JComponent.getPreferredSize(JComponent.java:1615) at javax.swing.ToolTipManager.showTipWindow(ToolTipManager.java:233) at javax.swing.ToolTipManager.mouseMoved(ToolTipManager.java:591) at java.awt.AWTEventMulticaster.mouseMoved(AWTEventMulticaster.java:272) at java.awt.Component.processMouseMotionEvent(Component.java:5533) at javax.swing.JComponent.processMouseMotionEvent(JComponent.java:3144) at java.awt.Component.processEvent(Component.java:5257) at java.awt.Container.processEvent(Container.java:1966) at java.awt.Component.dispatchEventImpl(Component.java:3955) at java.awt.Container.dispatchEventImpl(Container.java:2024) at java.awt.Component.dispatchEvent(Component.java:3803) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3905) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822) at java.awt.Container.dispatchEventImpl(Container.java:2010) at java.awt.Component.dispatchEvent(Component.java:3803) at java.awt.EventQueue.dispatchEvent(EventQueue.java:463) at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149) at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
Das Problem tritt nur mit Synth auf, bei der Verwendung von beispielsweise MetallLookAndFeel funktionieren die Tooltips einwandfrei.
Hat vielleicht irgendjemand ein vergleichbares Problem? Hat das Problem vielleicht sogar schon gelöst? Hat vielleicht jemand eine Idee woran es überhaupt liegen könnte? Möglicherweise hab ich auch Fehler gemacht in der Synth-XML Datei?
Hier mal die Definition des Synth-Styles
Vielen Dank für jegliche Hilfe
Harri E.
ich habe ein etwas seltsames Problem mit Tooltips und Synth. Ich habe eine Komponete erstellt die von JTextField erbt und einen eigenes Tooltip verwendet. Wenn ich das erste mal über die Komponente fahre, funktioniert alles wunderbar. Das Tooltip wird angezeigt und die im xml beschriebenen Formatierungen stimmen auch. Ab dem Zweiten mal bekomme ich immer eine Exception. Um das Verhalten zu demonstrieren habe ich mal ein ganz einfache Komponente erstellt die genau die teile enthält um den ehler zu reproduzieren.
PHP:
public class MyToolTipField extends JTextField {
JToolTip tooltip = new JToolTip();
@Override
public JToolTip createToolTip() {
if(this.tooltip==null){
this.tooltip = new JToolTip();
}
return this.tooltip;
}
}
die Exception lautet:
Exception in thread "AWT-EventQueue-1" java.lang.NullPointerException at javax.swing.plaf.synth.SynthToolTipUI.getPreferredSize(SynthToolTipUI.java:139) at javax.swing.JComponent.getPreferredSize(JComponent.java:1615) at javax.swing.ToolTipManager.showTipWindow(ToolTipManager.java:233) at javax.swing.ToolTipManager$insideTimerAction.actionPerformed(ToolTipManager.java:655) at javax.swing.Timer.fireActionPerformed(Timer.java:271) at javax.swing.Timer$DoPostEvent.run(Timer.java:201) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209) at java.awt.EventQueue.dispatchEvent(EventQueue.java:461) at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149) at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)Exception in thread "AWT-EventQueue-1" java.lang.NullPointerException at javax.swing.plaf.synth.SynthToolTipUI.getPreferredSize(SynthToolTipUI.java:139) at javax.swing.JComponent.getPreferredSize(JComponent.java:1615) at javax.swing.ToolTipManager.showTipWindow(ToolTipManager.java:233) at javax.swing.ToolTipManager.mouseMoved(ToolTipManager.java:591) at java.awt.AWTEventMulticaster.mouseMoved(AWTEventMulticaster.java:272) at java.awt.Component.processMouseMotionEvent(Component.java:5533) at javax.swing.JComponent.processMouseMotionEvent(JComponent.java:3144) at java.awt.Component.processEvent(Component.java:5257) at java.awt.Container.processEvent(Container.java:1966) at java.awt.Component.dispatchEventImpl(Component.java:3955) at java.awt.Container.dispatchEventImpl(Container.java:2024) at java.awt.Component.dispatchEvent(Component.java:3803) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3905) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822) at java.awt.Container.dispatchEventImpl(Container.java:2010) at java.awt.Component.dispatchEvent(Component.java:3803) at java.awt.EventQueue.dispatchEvent(EventQueue.java:463) at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149) at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
Das Problem tritt nur mit Synth auf, bei der Verwendung von beispielsweise MetallLookAndFeel funktionieren die Tooltips einwandfrei.
Hat vielleicht irgendjemand ein vergleichbares Problem? Hat das Problem vielleicht sogar schon gelöst? Hat vielleicht jemand eine Idee woran es überhaupt liegen könnte? Möglicherweise hab ich auch Fehler gemacht in der Synth-XML Datei?
Hier mal die Definition des Synth-Styles
PHP:
<style id="tooltip" clone="default">
<insets top="1" left="5" bottom="1" right="5" />
<state>
<color idref="colorFormTextRegular" type="TEXT_FOREGROUND" />
<color idref="colorSelectTextBackground" type="BACKGROUND" />
</state>
</style>
<bind style="tooltip" type="region" key="ToolTip" />
Vielen Dank für jegliche Hilfe
Harri E.