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:
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);
    }
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....