Ciao a tutti,
mi rivolgo con questa domanda a chi sicuramente conosce bene JFreeChart perchè la modifica che vorrei apportare è un po complessa...(almeno cosi ritengo che sia.. )...

avrei bisogno di rendere cliccabili le diciture in basso sull'ascissa...per capirci alla base del mio istogramma...in modo da richiamare il dettaglio di quel determinato elemento in un altra pagina...

inoltre vorrei sapere se oltre al link posso assegnare sempre alla dicitura un toolTip che mi dia ulteriori dettagli sull'elemento...

Aggiungo anche che il grafico l'ho già creato, è funzionante, e gira all'interno di un applet inclusa in una pagina jsp...
per essere più dettagliato possibile posto il codice della mia applet:

Codice PHP:
import org.jfree.chart.JFreeChart;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.CategoryLabelPositions;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.event.ChartChangeEventType;
import org.jfree.chart.imagemap.StandardToolTipTagFragmentGenerator;
import org.jfree.chart.imagemap.ToolTipTagFragmentGenerator;
import org.jfree.chart.labels.CategoryToolTipGenerator;
import org.jfree.chart.labels.CustomXYToolTipGenerator;
import org.jfree.chart.labels.StandardCategoryToolTipGenerator;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.DatasetRenderingOrder;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.BarRenderer;
import org.jfree.chart.renderer.category.CategoryItemRenderer;
import org.jfree.chart.renderer.category.LevelRenderer;
import org.jfree.chart.urls.CategoryURLGenerator;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;

import java.applet.Applet;
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Component;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Paint;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.util.ArrayList;
import java.util.EventListener;
import java.util.List;

import javax.swing.JPanel;

public class 
Test extends Applet {

    final 
String legendaDare "Dare";
    final 
String legendaAvere "Avere";
    final 
String legendaForecastDare "Forecast Dare";
    final 
String legendaForecastAvere "Forecast Avere";
    
    
    private static 
String[] nomiCommesse = new String[10]; 
    private static 
String[] importiAvere = new String[10]; 
    private static 
String[] importiDare = new String[10]; 
    private static 
String[] forecastAvere = new String[10]; 
    private static 
String[] forecastDare = new String[10]; 

    public 
void init() {
        
// It is required but does not need anything.
        
super.init();
        

    }

    
// This method gets called when the applet is terminated
    // That's when the user goes to another page or exits the browser.
    
public void stop() {
        
// no actions needed here now.
        
super.stop();
    }

    
// The standard method that you have to use to paint things on screen
    // This overrides the empty Applet method, you can't called it "display" for example.

    
public void paint(Graphics g) {
        
//method to draw text on screen
        // String first, then x and y coordinate.
        // Create a simple XY chart
        
super.paint(g);
        
        for(
int i0i<10i++){
            
        
nomiCommesse[i] = getParameter("nomeCommessa"+i);
        
importiAvere[i] = getParameter("importoAvere"+i);
        
importiDare[i] = getParameter("importoDare"+i);
        
forecastAvere[i] = getParameter("forecastAvere"+i);
        
forecastDare[i] = getParameter("forecastDare"+i);
        }


        
        
DefaultCategoryDataset dataset1 = new DefaultCategoryDataset();
        
DefaultCategoryDataset dataset2 = new DefaultCategoryDataset();
        final 
CategoryItemRenderer renderer = new BarRenderer();
        final 
CategoryItemRenderer renderer2 = new LevelRenderer();       
        final 
CategoryPlot plot = new CategoryPlot();
        
        for (
int i 0nomiCommesse.lengthi++) {
            
            
dataset1.addValue(Double.parseDouble(importiAvere[i]), legendaAverenomiCommesse[i]);
            
dataset1.addValue(Double.parseDouble(importiDare[i]), legendaDarenomiCommesse[i]);        

            
dataset2.addValue(Double.parseDouble(forecastAvere[i]), legendaForecastAverenomiCommesse[i]);
            
dataset2.addValue(Double.parseDouble(forecastDare[i]), legendaForecastDarenomiCommesse[i]);
            
        }
      

    
        
//renderer.setToolTipGenerator(new StandardCategoryToolTipGenerator());
    
        
renderer2.setSeriesPaint(0Color.GREEN.brighter().brighter());
        
renderer.setSeriesPaint(0Color.GREEN.darker().darker());
        
renderer2.setSeriesPaint(1Color.RED.brighter().brighter());
        
renderer.setSeriesPaint(1Color.RED.darker().darker());
        
        
        
plot.setDataset(dataset1);
        
plot.setRenderer(renderer);
        
NumberAxis ordinata = new NumberAxis("Importo €");
        
ordinata.configure();
        
ordinata.setAutoRange(true);///
        
ordinata.resizeRange(0.0020000.00);///
        
plot.setDomainAxis(new CategoryAxis("Commesse"));
        
plot.setRangeAxis(ordinata);///
        
plot.setOrientation(PlotOrientation.VERTICAL);
        
plot.setRangeGridlinesVisible(true);
        
plot.setDomainGridlinesVisible(true);
        
renderer.setSeriesStroke(0, new BasicStroke(4.00f));
        
renderer.setSeriesStroke(1, new BasicStroke(4.00f));
        
renderer2.setSeriesStroke(0, new BasicStroke(4.00f));
        
renderer2.setSeriesStroke(1, new BasicStroke(4.00f));
        
plot.setDataset(1dataset2);
        
plot.setRenderer(1renderer2);
        
plot.setDatasetRenderingOrder(DatasetRenderingOrder.FORWARD); 
        
plot.getDomainAxis().setCategoryLabelPositions(CategoryLabelPositions.UP_45);
        
        
        
plot.setBackgroundPaint(Color.WHITE);
        
plot.setRangeGridlinePaint(Color.GRAY);
        final 
JFreeChart chart = new JFreeChart(plot);

        
chart.setBackgroundPaint(Color.white);
        
chart.setAntiAlias(true);

        if ( 
chart!=null ) {
            
chart.draw( (Graphics2D)g,getBounds()); //repaints the whole chart
        
}

    }


Qualcuno sa indicarmi come fare e se ritenete sia possibile farle queste modifiche?

Grazie