Avendo questo codice in cui ho una finestra con dentro un frame con il mio grafico, come faccio a fare il grafico direttamente nella finestra senza farlo dentro un frame???
codice:
import java.awt.Dimension;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import javax.swing.JInternalFrame;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.data.time.Second;
import org.jfree.data.time.RegularTimePeriod;
import org.jfree.data.time.TimeSeries;
import org.jfree.data.time.TimeSeriesCollection;
import org.jfree.data.xy.XYDataset;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
public class InternalFrame extends ApplicationFrame {
public InternalFrame(String title) {
super(title);
JInternalFrame frame = createFrame();
frame.pack();
frame.setLocation(0, 0);
frame.setVisible(true);
getContentPane().add(frame);
}
private JInternalFrame createFrame() {
XYDataset dataset = createDataset("Nome linea",new Second());
JFreeChart chart = ChartFactory.createTimeSeriesChart("Trend Cella 30","Tempo","Temperatura",dataset,true,true,true);
ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new Dimension(800, 600));
JInternalFrame frame = new JInternalFrame("", true);
frame.getContentPane().add(chartPanel);
return frame;
private XYDataset createDataset(String name, RegularTimePeriod start) {
TimeSeries series = new TimeSeries("Temperatura ambiente", start.getClass());
TimeSeries series1 = new TimeSeries("Temperatura prodotto", start.getClass());
TimeSeries series2 = new TimeSeries("Set alta temperatura", start.getClass());
TimeSeries series3 = new TimeSeries("Set bassa temperatura", start.getClass());
TimeSeries series4 = new TimeSeries("Set temperatura media", start.getClass());
Connection con = null;
try {
String driver = "net.sourceforge.jtds.jdbc.Driver";
Class.forName(driver).newInstance();
}
catch (Exception e) {
System.out.println("Fallito il caricamento dei driver SQL.");
return (null);
}
try {
// Query SQL
String SQL= "SELECT TOP 1728 * FROM Cella30Trend ORDER BY Tempo DESC";
// Connessione col database in cui vengono specificati url, nome utente, password
con = DriverManager.getConnection("jdbc:jtds:sqlserver://localhost:1433/MioDb", "**", "**");
Statement select = con.createStatement();
//caricamento query SQL
ResultSet result = select.executeQuery(SQL);
while (result.next()) {
String tempo = result.getString(2);
double temp_a = result.getDouble(3);
double temp_p = result.getDouble(4);
double temp_s_a = result.getDouble(5);
double temp_s_b = result.getDouble(6);
double temp_s_m = result.getDouble(7);
DateFormat dateformat=new SimpleDateFormat("yyyy/MM/dd HH.mm.ss");
java.util.Date data=dateformat.parse(tempo);
series.addOrUpdate(new Second(data),temp_a);
series1.addOrUpdate(new Second(data),temp_p);
series2.addOrUpdate(new Second(data),temp_s_a);
series3.addOrUpdate(new Second(data),temp_s_b);
series4.addOrUpdate(new Second(data),temp_s_m);
}
}
catch (Exception e) {
e.printStackTrace();
}
finally {
if (con != null) {
try {
con.close();
}
catch (Exception e) {
e.printStackTrace();
}
}
}
TimeSeriesCollection dataset = new TimeSeriesCollection();
dataset.addSeries(series);
dataset.addSeries(series1);
dataset.addSeries(series2);
dataset.addSeries(series3);
dataset.addSeries(series4);
return dataset;
}
public static void main( String[] args) {
InternalFrame iframe = new InternalFrame("Trend Frigo");
iframe.pack();
RefineryUtilities.centerFrameOnScreen(iframe);
iframe.setVisible(true);
}
}