Como tornar uma figura em um gráfico (JMathPlot) clicável?

Estou usando a biblioteca JMathPlot para fazer um gráfico. Tive algum trabalho para inserir um ícone perto do eixo x do gráfico, representando (teoricamente) algum comportamento específico do gráfico na posição do ícone. O código abaixo gera pontos aleatórios e faz um gráfico de linha (“LinePlot”), e insere o ícone em uma posição aleatória abaixo do eixo x. A minha pergunta é: como tornar essa figura clicável (e o clique nela abrir uma janela)??? A classe PlotableImage não tem nenhum método addMouseListener. Pensei também em inserir a imagem usando talvez um JLabel em cima do gráfico, mas como faria para posicioná-la no gráfico, usando as coordenadas do gráfico? Help!!! =)

E aproveitando o ensejo, também gostaria muito de saber se existe uma forma de abaixar um pouco os valores da escala do eixo x, de forma a deixar um espaço maior entre esses numerinhos e o eixo em si, pra poder aumentar a imagem.

p.s. o código todo para a figura é porque na biblioteca parece que não existe um jeito muito fácil de fazer isso. Sempre que a escala dos eixos do gráfico muda, a figura se modifica também, então o que tentei criar foi um artifício pra imagem ficar mais ou menos de tamanho constante, através de alguns cálculos malucos…

[code]import java.io.File;
import java.util.Random;
import javax.swing.JFrame;
import org.math.plot.Plot2DPanel;
import org.math.plot.plotObjects.PlotableImage;

public class Test {

//constants
public static final int 
MAX_X = 10000, 
MAX_Y = 40, 
MAX_POINTS = 100, 
MIN_POINTS = 10;

public static void main(String[] args) {

	Random r = new Random();
	int n_points = r.nextInt(MAX_POINTS) + MIN_POINTS; // at least 10 points
	double[] x = new double[n_points];
	double[] y = new double[n_points];
	double max_x; // max value of x
	double x_interval = (max_x = (double)r.nextInt(MAX_X)) / (double) n_points; // x-interval between points 
	double max_y = r.nextFloat()*MAX_Y; // max value of y
	for (int i = 0; i < n_points; i++) {
		x[i] = i * x_interval;
		y[i] = r.nextFloat() * max_y;
	}

	Plot2DPanel plot = new Plot2DPanel();
	plot.addLinePlot("Random plot", x, y);
	
	// the image's x and y coordinates 
	// follows graph's coordinate system
	// (not the frame's)
	//
	// nw
	// .
	// .
	// sw....se

	double x_icon = r.nextDouble() * max_x;
	double deviation = .015 * max_x;
	double y_icon = -.007 * max_y;
	double icon_height = -.04 * max_y;
	
	File fimg = new File("img/t.gif"); //quadrado preto 64x64
	double[] sw = {x_icon - deviation, icon_height};
	double[] se = {x_icon + deviation, icon_height};
	double[] nw = {x_icon - deviation, y_icon};
	PlotableImage img = new PlotableImage(fimg, 1, sw, se, nw);
	plot.addPlotable(img);

	JFrame frame = new JFrame("a plot panel");
	frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	frame.setSize(800, 800);
	frame.setContentPane(plot);
	frame.setVisible(true);

}

}[/code]