2010-09-14 31 views
1

Comment générer des URL pour les étiquettes des diagrammes à secteurs à l'aide du package JFree Chart. Nous pouvons étendre PieSectionLabelGenerator mais j'aurais besoin d'exemples pour montrer comment. S'il vous plaît avis!Génération d'URL pour l'étiquette de section du graphique à secteurs à l'aide de l'API JFree Chart

Merci à l'avance!

+0

Est-il exact que vous voulez cliquer sur l'URL dans l'étiquette afin d'ouvrir l'URL dans un navigateur? – trashgod

+0

Oui, c'est vrai. –

+0

Et pour clarifier davantage est votre graphique sur une page Web ou en balançoire? – Adam

Répondre

0
static class CustomLegendGenerator 
     implements PieSectionLabelGenerator { 

    public String generateSectionLabel(final PieDataset dataset, final Comparable key) { 
     String temp = null; 
     if (dataset != null) { 
      temp = key.toString(); 
      if (key.toString().equalsIgnoreCase("abc")) { 
       temp = temp + " (abc String)"; 
      } 
      if (key.toString().equalsIgnoreCase("xyz")) { 
       temp = temp + " (xyz description)"; 
      } 
      if (key.toString().equalsIgnoreCase("klm")) { 
       temp = temp + " (Klm description)"; 
      } 
     } 
     return temp; 
    } 

    public AttributedString generateAttributedSectionLabel(PieDataset pd, Comparable cmprbl) { 
     throw new UnsupportedOperationException("Not supported yet."); 
    } 
} 
1

Appelez simplement setLabelGenerator() sur votre PiePlot. Les MessageFormatArgumentIndex valeurs correspondent au nom de la série , valeur et pourcentage. Vous pouvez les référencer dans votre générateur d'étiquettes, comme indiqué ci-dessous:

PiePlot plot = (PiePlot) chart.getPlot(); 
plot.setLabelGenerator(new StandardPieSectionLabelGenerator("{0} {1} {2}")); 

Addendum:

Je cherche une URL/lien hypertexte.

Ajouter un ChartMouseListener à votre ChartPanel; vous pouvez obtenir le lien du ChartEntity du ChartMouseEvent correspondant. Vous pouvez utiliser java.awt.Desktop pour ouvrir l'URL dans un navigateur.

+0

J'imagine que cela me donnerait une étiquette de chaîne. Je suis à la recherche d'une URL/Hyperlien. –

+0

@gpmattoo: Réglez simplement l'URL sur la même valeur que l'étiquette. – trashgod

+0

Si vous pouvez partager l'extrait de code de la chose ChartMouseListener vous avez dit ci-dessus, cela aiderait. Notez que j'utilise JDK 1.4. –

0

Notez cette réponse est prévue pour ceux qui font des urls et des cartes pour les cartes utilisées dans les pages web

pour la fabrication des segments Pie Eux-mêmes URL en utilisant une carte HTML: Je vous conseille en réalité une portée le StandardPieURLGenerator. Ensuite, il vous suffit de faire deux choses:

Ajoutez les données

Que ce soit par les arguments du constructeur ou setters, faire un moyen d'ajouter les données dans les champs de votre classe.

Override generateUrl

generateUrl sera appelée lorsque le JFreeChart manque le générateur pour faire une URL. Si vous êtes désireux d'ajouter des paramètres alors je ferais quelque chose comme ceci:

public String generateURL(PieDataset dataset, Comparable key, int pieIndex) 
{ 
    return super.generateURL(dataset, key, pieIndex) + "&" + yourParameters; 
} 

Pour ajouter des URL dans l'étiquette

Déployez le StandardPieSectionLabelGenerator et substituez generateAttributedSectionLabel au lieu pour les mêmes étapes ci-dessus. Votre fonction va maintenant plus comme ceci:

public String generateAttributedSectionLabel(PieDataset dataset, Comparable key) 
{ 
    return super.generateAttributedSectionLabel(dataset, key) + "<a href="YOUR_URL_HERE" />"; 
} 
+0

J'imagine que ce serait pour le générateur d'URL pour les graphiques PIE. Cependant, ce que je recherche est l'URL pour les étiquettes de tarte, c'est-à-dire la mise en œuvre de l'interface PieSectionLabelGenerator de la classe personnalisée http://www.jfree.org/jfreechart/api/javadoc/org/jfree/chart/labels/PieSectionLabelGenerator.html ou quelque chose de ce genre . –

+0

@ gpmatto Ahh désolé, mal lu. Laissez-moi juste écrire une nouvelle réponse pour celui-là. – Adam