bom, é a primeira vez que posto aqui e gostaria de ajuda com um problema…
Eu estou desenvolvendo um software que gera gráficos (gráfico de linha, barra, curva normal, etc) e estou usando o JFreeChart, mas o meu problema é que eu preciso gerar um gráfico onde o usuário possa clicar em cima de um ponto que foi plotado no gráfico e que eu consiga pegar esses pontos pra realizar algum processamento. Quando eu gero pelo JFreeChart, as únicas propriedades são de zoom e alterar cor da linha e essas coisas.
Alguém sabe se com o JFreeChart eu consigo fazer isso ou se existe alguma outra API que me permita gerar gráficos onde o usuário possa pelo menos clicar nos pontos?
Acho que você está exibindo seu gráfico num ChartPanel, correto? Supondo que ele se chama [painel], talvez os trechos de código abaixo ajudem:
// Remove as rotinas padrão para processamento de cliques do mouseMouseListenerml[]=painel.getMouseListeners();if(ml!=null){for(inti=0;i<ml.length;i++){painel.removeMouseListener(ml[i]);}}// Registra rotinas especializadas para processar cliques e// movimentação do mouse sobre o gráficoChartMouseListenercml=newChartMouseListener(){publicvoidchartMouseClicked(ChartMouseEventchartMouseEvent){// Sua rotina aqui}publicvoidchartMouseMoved(ChartMouseEventchartMouseEvent){// Sua rotina aqui}};painel.addChartMouseListener(cml);
anakromeiro
roger_rf eu estou exibindo em um ChartPanel sim.
O que você me sugeriu funcionou sim para pegar os pontos quando o usuário clica , mas o problema é que eu consigo pegar qualquer ponto na área do gráfico, e não somente os que pertencem à linha do gráfico que foi traçada, por exemplo.
O que eu tô querendo é que quando ele clique em cima da linha do gráfico eu consiga pegar o valor correspondente do eixo X e o valor do eixo Y.
Já pesquisei muito sobre o JFreeChart mas até agora não consegui encontrar nada relacionado a isso… mas tô tentando ainda.
R
roger_rf
Experimente chamar a rotina abaixo em chartMouseMoved(). Ela supõe que seu gráfico se chama [chart] e que este é um ScatterPlot, que o plot do gráfico é um XYPlot e que os eixos X e Y são instâncias de NumberAxis.
Isso faz com que quando o usuário clica em cima da linha do gráfico, ele faz uma reta marcando o ponto no eixo X e no eixo Y (e ainda posso definir se ele irá deixar clicar somente nos pontos que foram plotados no gráfico ou em qualquer ponto existente)