最近JFreeChartを使い始めましたが、何かしたいことがありますが、可能かどうかわかりません。 私のプログラムは、wavファイルからスペクトログラム(サウンドグラフ)を描くことになっています。だから、私はダブルアライリストのwavファイルからデータを取得し、それをチャートに表示することができました。しかし、今では、ズームを使わずにスペクトログラムの領域を(ズームのために使用されているのと同じツールを使って)選択し、選択した部分だけを自分のサウンドで再生できるようにしたいと考えています。しかし、私は単に成功する方法を見つけることができません。JFreeChartはズームを行わずに領域を選択します
package classes;
import java.awt.Color;
import java.awt.Paint;
import java.awt.Rectangle;
import java.io.File;
import java.io.IOException;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.Plot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import org.jfree.ui.RectangleInsets;
public class Chart{
JFreeChart chart;
Plot plot;
//Constructeur de la classe Chart
public Chart(double[][] bs, int channel, int framesLength, float frameRate)
{
// Création d'un XY chart
XYSeries series = new XYSeries("XYGraph");
int i=0,j=0;
float k=0;
//Ajout de tous les points du tableau de 16 bytes dans le chart
for(i=0; i <channel;i++)
{
for(j=0; j< framesLength;j++)
{
//Division des valeurs par 2^15 pour être entre 1 et -1
series.add(k, (bs[i][j]/32768));
//Echelle de X
k+=(1/frameRate);
}
}
// Ajoute la série au dataset
XYSeriesCollection dataset = new XYSeriesCollection();
dataset.addSeries(series);
// Génération du graphe
chart = ChartFactory.createXYLineChart(
"Ajouter titre à la fonction de génération", // Titre
"Temps (s)", // Nom de l'axe X
"y-axis", // Nom de l'axe Y
dataset, // Dataset
PlotOrientation.VERTICAL, // Plot Orientation
true, // Show Legend
false, // Use tooltips
false // Configure chart to generate URLs?
);
plot= (XYPlot) chart.getPlot();
}
//Renvoie le chart
public JFreeChart getChart()
{
return chart;
}
public void color(Color c)
{
plot.setBackgroundPaint(c);
}
}
そして、ここで私は、チャートクラスを呼び出して、それを使用しています:
Chart chartUn= new Chart(bs, channels , frameLength , frameRate);
chartUn.color(Color.pink);
vue.setChartPanelUn(new ChartPanel(chartUn.getChart(), false));
vue.getChartPanelUn().setRangeZoomable(false);
vue.getChartPanelUn().setMouseWheelEnabled(true);
vue.getChartPanelUn()ChartPanelを返し は、ここに私のチャートの私のコードです。 私の問題を解決する方法はありますか? どうもありがとう (そして、申し訳ありませんが私の英語は必ずしも正確ではない場合:/)
迅速なアンサーに感謝します!私はこの週末に自分のコードで動作するかどうか試してみるつもりです – user2299206