2014-09-07 2 views
0

Mon application Java Swing utilise (l'excellente) bibliothèque JFreeChart mais malheureusement il y a un comportement inattendu: lorsque vous passez la souris sur le point de données d'un graphique, une info-bulle personnalisée est affichée (comme prévu); cependant, après cela, il y a un résidu d'info-bulle constant à côté du curseur de la souris lorsqu'il est sur la carte mais pas sur un point de données (c'est-à-dire qu'aucune info-bulle ne doit apparaître plus).JFreeChart tooltip résidu inattendu

Par la présente une image qui montre le résidu (point gris au bas à droite du curseur de la souris - il semble que les frontières d'une info-bulle vide):

enter image description here

Le résidu « suit » la position de la souris et si je change d'application (par exemple alt-tab) et revenez ensuite, le résidu a disparu. Quelqu'un at-il rencontré le même problème? Aucune idée sur la façon de résoudre ça?

Détails techniques:

  • J'utilise dernière version JFreeChart (1.0.19)
  • Mon application utilise une interface utilisateur spécifique L & gestionnaire F, mais cela ne semble pas être le problème le résidu est également présent sans elle (gestionnaire de l'interface utilisateur défini comme UIManager.setLookAndFeel(new SubstanceTwilightLookAndFeel())
  • le problème est présent sur XYLineChart et BarChart
  • infobulles sont personnalisés (par exemple mis en œuvre XYToolTipGenerator interface où generateToolTip() rendement HTML avec le contenu de l'info-bulle)
  • retard infobulle est réglé au minimum (ChartPanel.setInitialDelay(0)) et révoquent délai maximal (ChartPanel.setDismissDelay(Integer.MAX_VALUE))

Un grand merci pour toute aide ou allusion comme je l'ai été coincé sur ce point pour heures maintenant! Thomas

+1

Veuillez modifier votre question pour inclure un [exemple court et complet] (http://stackoverflow.com/help/mcve) qui présente le problème que vous illustrez. – trashgod

Répondre

0

Je peux reproduire votre effet au cas où je mettre en place un générateur XYToolTipGenerator qui retourne une chaîne vide ("") au lieu de null dans le cas où l'infobulle ne doit pas être montré.

Veuillez vous assurer que votre implémentation XYToolTipGenerator renvoie une chaîne non vide ou null dans la méthode generateToolTip().

+0

La méthode renvoie toujours une chaîne non vide puisqu'elle est seulement appelée (je crois) quand la souris est sur un point de donnée. Le problème se produit lorsque la souris n'est pas sur un point de donnée (auquel cas la méthode generateToolTip (dataset, row, column) n'est pas appelée. – Tom