buongiorno a tutti....sono nuovo del forum quindi scusate eventuali errori o incongruenze....sto creando un software il quale gestisce delle distribuzioni di probabilità memorizzate su un database e in seguito ne disegna il grafico. all'interno di un frame sulla sinistra ho creato una tabella contenente i dati e sulla sinistra ho creato un internal frame contenente il grafico creato grazie a jFreechart. Il problema è che l'internal frame viene visualizzato ma è completamente vuoto. ho già provato a debuggare ecc ma non trovo dove sia il problema.....posto qui il codice dei metodi che utilizzo:
il metodo creaTabella viene richiamato all'interno del costruttore e al suo interno viene chiamato il metodo createFrame, il quale crea il frame. frame è un jInternalFrame dichiarato globalmente....codice:public void CreaTabella() { String sql = "select c.modalita, c.valore from caratteri as c, distribuzioni as d where d.nome=c.distribuzione and d.nome=? order by c.modalita"; try { pst = conn.prepareStatement(sql); pst.setString(1, distribuzione); rs = pst.executeQuery(); Tabella.setModel(DbUtils.resultSetToTableModel(rs)); } catch (Exception e) { JOptionPane.showMessageDialog(null, e); } TableColumn colonna2 = Tabella.getColumnModel().getColumn(0); colonna2.setHeaderValue("Modalità"); TableColumn colonna1 = Tabella.getColumnModel().getColumn(1); colonna1.setHeaderValue("Valore"); Tabella.setColumnSelectionAllowed(false); Tabella.setRowSelectionAllowed(true); this.setValori(); this.setMedia(); this.setSqm(); EtichettaMedia.setText(String.valueOf(media)); EtichettaSqm.setText(String.valueOf(sqm)); this.setData(); this.creaGrafico(distribuzione); } public void creaGrafico(String distrib) { createFrame(); frame.pack(); frame.setLocation(0, 0); } public void createFrame() { final XYDataset dataset1 = createDataset(); final JFreeChart chart = createChart(dataset1); final ChartPanel chartPanel = new ChartPanel(chart); chartPanel.setPreferredSize(new Dimension(800, 600)); frame.getContentPane().add(chartPanel); } public JFreeChart createChart(final XYDataset dataset) { final JFreeChart chart = ChartFactory.createXYLineChart("Grafico a Linea", "Label", "Valori", dataset, PlotOrientation.VERTICAL, true, true, false); //titolo,assex,assey,dataset,orientamento del grafico,mostra la legenda,usa i tooltip XYPlot plot = (XYPlot) chart.getPlot(); XYLineAndShapeRenderer renderer = new XYLineAndShapeRenderer(true, true); plot.setRenderer(renderer); renderer.setBaseShapesVisible(true); renderer.setBaseShapesFilled(true); NumberFormat format = NumberFormat.getNumberInstance(); format.setMaximumFractionDigits(2); XYItemLabelGenerator generator = new StandardXYItemLabelGenerator(StandardXYItemLabelGenerator.DEFAULT_ITEM_LABEL_FORMAT, format, format); renderer.setBaseItemLabelGenerator(generator); renderer.setBaseItemLabelsVisible(true); return chart; } /** * * Creates a sample dataset. * * * @param name the dataset name. * @param base the starting value. * @param start the starting period. * * @return The dataset. */ private XYDataset createDataset() { final XYSeries dataset = new XYSeries("Dati"); try { Connection conn = null; ResultSet rs = null; PreparedStatement pst = null; int i = 0; conn = ConnessioneDatabase.ConnectDb(); String sql = "SELECT modalita, valore FROM caratteri WHERE distribuzione=?"; pst = conn.prepareStatement(sql); pst.setString(1, distribuzione); rs = pst.executeQuery(); while (rs.next()) { dataset.add(Double.parseDouble(rs.getString("modalita")), Double.parseDouble(rs.getString("valore"))); i++; } pst.close(); } catch (SQLException ex) { Logger.getLogger(Grafico.class.getName()).log(Level.SEVERE, null, ex); } return new XYSeriesCollection(dataset); }

Rispondi quotando