Result Set in Charts ausgeben!

Status
Nicht offen für weitere Antworten.

SammyS

Mitglied
Guten Tag.

Ich bin gerade am erlernen, wie ich aus java-code charts herstelle. Dabei habe ich mich des Demos(BarChartDemo1) von jfreecharts bedient. Grundsätzlich ist es ein Super tool zum Einstieg. Ich habe das Demo großteils nach meinen Bedürfnissen modifiziert und jetzt stellt sich ein kleines Problem.

Jetzt hätte ich folgende Frage, und zwar: Wie kann ich jetzt den vorgegebenen Datensatz ändern, um genau zu sein, wie kann ich den Quellcode so ändern, dass er aus einen Resultset (Datenbank Derby) liest und dann anschließend die mitgelieferten Daten im Chart ausgibt?

Ich hoffe im habe mich halbwegs verständlich ausgedrückt?

Ich wäre für jeden hilfreichen Tipp sehr dankbar

Mit freundlichen Grüssen

SammyS

_________________
Ich denke, also bin ich!
Code:
/* ===========================================================
 * JFreeChart : a free chart library for the Java(tm) platform
 * ===========================================================
 *
 * (C) Copyright 2000-2007, by Object Refinery Limited and Contributors.
 *
 * Project Info:  [url]http://www.jfree.org/jfreechart/index.html[/url]
 *
 * This library is free software; you can redistribute it and/or modify it 
 * under the terms of the GNU Lesser General Public License as published by 
 * the Free Software Foundation; either version 2.1 of the License, or 
 * (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful, but 
 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 
 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public 
 * License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, 
 * USA.  
 *
 * [Java is a trademark or registered trademark of Sun Microsystems, Inc. 
 * in the United States and other countries.]
 *
 * ------------------
 * BarChartDemo1.java
 * ------------------
 * (C) Copyright 2003-2007, by Object Refinery Limited and Contributors.
 *
 * Original Author:  David Gilbert (for Object Refinery Limited);
 * Contributor(s):   ;
 *
 * $Id: BarChartDemo1.java,v 1.1.2.4 2007/03/02 10:45:23 mungady Exp $
 *
 * Changes
 * -------
 * 09-Mar-2005 : Version 1 (DG);
 *
 */

package org.jfree.chart.demo;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.GradientPaint;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.CategoryLabelPositions;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.BarRenderer;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;

/**
 * A simple demonstration application showing how to create a bar chart.
 */
public class BarChartDemo1 extends ApplicationFrame {

    /**
     * Creates a new demo instance.
     *
     * @param title  the frame title.
     */
    public BarChartDemo1(String title) {
        super(title);
        CategoryDataset dataset = createDataset();
        JFreeChart chart = createChart(dataset);
        ChartPanel chartPanel = new ChartPanel(chart, false);
        chartPanel.setPreferredSize(new Dimension(500,270));
        setContentPane(chartPanel);
    }

    /**
     * Returns a sample dataset.
     * 
     * @return The dataset.
     */
    private static CategoryDataset createDataset() {
        
        // row keys...
        String series1 = "First";
        String series2 = "Second";
        String series3 = "Third";

        // column keys...
        String category1 = "Category 1";
        String category2 = "Category 2";
        String category3 = "Category 3";
        String category4 = "Category 4";
        String category5 = "Category 5";

        // create the dataset...
        DefaultCategoryDataset dataset = new DefaultCategoryDataset();

        dataset.addValue(1.0, series1, category1);
        dataset.addValue(4.0, series1, category2);
        dataset.addValue(3.0, series1, category3);
        dataset.addValue(5.0, series1, category4);
        dataset.addValue(5.0, series1, category5);

        dataset.addValue(5.0, series2, category1);
        dataset.addValue(7.0, series2, category2);
        dataset.addValue(6.0, series2, category3);
        dataset.addValue(8.0, series2, category4);
        dataset.addValue(4.0, series2, category5);

        dataset.addValue(4.0, series3, category1);
        dataset.addValue(3.0, series3, category2);
        dataset.addValue(2.0, series3, category3);
        dataset.addValue(3.0, series3, category4);
        dataset.addValue(6.0, series3, category5);
        
        return dataset;
        
    }
    
    /**
     * Creates a sample chart.
     * 
     * @param dataset  the dataset.
     * 
     * @return The chart.
     */
    private static JFreeChart createChart(CategoryDataset dataset) {
        
        // create the chart...
        JFreeChart chart = ChartFactory.createBarChart(
            "Bar Chart Demo 1",       // chart title
            "Category",               // domain axis label
            "Value",                  // range axis label
            dataset,                  // data
            PlotOrientation.VERTICAL, // orientation
            true,                     // include legend
            true,                     // tooltips?
            false                     // URLs?
        );

        // NOW DO SOME OPTIONAL CUSTOMISATION OF THE CHART...

        // set the background color for the chart...
        chart.setBackgroundPaint(Color.white);

        // get a reference to the plot for further customisation...
        CategoryPlot plot = (CategoryPlot) chart.getPlot();
        plot.setBackgroundPaint(Color.lightGray);
        plot.setDomainGridlinePaint(Color.white);
        plot.setDomainGridlinesVisible(true);
        plot.setRangeGridlinePaint(Color.white);

        // ******************************************************************
        //  More than 150 demo applications are included with the JFreeChart
        //  Developer Guide...for more information, see:
        //
        //  >   [url]http://www.object-refinery.com/jfreechart/guide.html[/url]
        //
        // ******************************************************************
        
        // set the range axis to display integers only...
        final NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
        rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());

        // disable bar outlines...
        BarRenderer renderer = (BarRenderer) plot.getRenderer();
        renderer.setDrawBarOutline(false);
        
        // set up gradient paints for series...
        GradientPaint gp0 = new GradientPaint(0.0f, 0.0f, Color.blue, 
                0.0f, 0.0f, new Color(0, 0, 64));
        GradientPaint gp1 = new GradientPaint(0.0f, 0.0f, Color.green, 
                0.0f, 0.0f, new Color(0, 64, 0));
        GradientPaint gp2 = new GradientPaint(0.0f, 0.0f, Color.red, 
                0.0f, 0.0f, new Color(64, 0, 0));
        renderer.setSeriesPaint(0, gp0);
        renderer.setSeriesPaint(1, gp1);
        renderer.setSeriesPaint(2, gp2);

        CategoryAxis domainAxis = plot.getDomainAxis();
        domainAxis.setCategoryLabelPositions(
                CategoryLabelPositions.createUpRotationLabelPositions(
                        Math.PI / 6.0));
        // OPTIONAL CUSTOMISATION COMPLETED.
        
        return chart;
        
    }
    
    /**
     * Starting point for the demonstration application.
     *
     * @param args  ignored.
     */
    public static void main(String[] args) {
        BarChartDemo1 demo = new BarChartDemo1("Bar Chart Demo 1");
        demo.pack();
        RefineryUtilities.centerFrameOnScreen(demo);
        demo.setVisible(true);
    }

}
[/code]
 
S

SlaterB

Gast
> wie kann ich den Quellcode so ändern

durch etwas was sich programmieren nennt,
was soll man dazu sagen, außer es dir komplett zu programmieren?

du musst die Daten laden, an die Chart-Klasse übergeben und diese stellt sie dar, fertig

immerhin noch ein Tipp, wenn das ganze ein Tick aufgeräumter und unabhängiger sein soll:
übergib kein ResultSet oder ähnlich spezifisches,
sondern hole die Daten aus den ResutSet in ein double-Array oder ein Array einer eigenen Klasse falls jeweils String + double zusammengehören,

die Chartklasse muss dann nur mit diesem einfachen Array/ Liste arbeiten,
nicht komplexen JDBC-Code enthalten
 

SammyS

Mitglied
Vielen Dank für die schnelle Antwort.

Ich weiss dass ich noch einigen Nachholbedarf habe :)

Hierbei handelt es sich um eine Gruppenarbeit, bei der jeder seinen Part abhandeln muss, und somit ist das Resultset zwingend vorgegeben.

Ich wollte konkret wissen, wo genau ich den neuen Datensatz einspeisen muss, damit es dann weiter ins Diagramm übergeben wird?

Es tut mir leid wenn ich Sie mit meinen Problemen langweile

Hab versucht es zu googlen, aber dadurch dass ich sehr ungeübt mit java bin, klappt es nicht so richtig

Vielen Dank
 
S

SlaterB

Gast
createDataset() braucht offensichtlich einen Parameter oder eine Exemplarvariable, in der die Daten stehen
oder führt schlimmerweise selber die DB-Anfrage aus und kriegt so die Daten,
braucht dann aber vielleicht Parameter für die DB-Anfrage usw, rekursives Problem ;)

die Parameter oder Exemplarvariablen müssen auch irgendwo herkommen,
letztlich üblicherweise als Parameter des Konstruktors

und dann hast du eben beim Aufruf
new BarChartDemo1("Bar Chart Demo 1");
das Problem, dass die Daten dann schon vorhanden sein müssen

woher, das ist eine andere Frage
 

SammyS

Mitglied
Vielen Dank.

Werde mich wahrscheinlich noch genauer bzw. noch tiefer Ausholen müssen, um dieses Problem zu lösen.

Aller Anfang ist schwer:)

Vielen Dank für die Mühe

mfg Sammy
 

thE_29

Top Contributor
In wiefern kannst du den schon programmieren?
Kriegst du ne Verbindung zur DB hin oder weiß du überhaupt wasn ResultSet ist, etc..
 

SammyS

Mitglied
Hallo!
wie gesagt bin ich ein Anfänger in Java. Es handelt sich um eine Gruppenarbeit,bei der jeder einen Part machen muss. Die Daten werden aus der DerbyDatenbank in ein Resultset überführt(macht ein Kollege).Mein Part ist eben aus demResultset eine Grafik zu machen.

Interface etc. ist schon vorgegeben.
Nun wollte ich mich anhand des jfreechart demos BarChartDemo1, hintasten.

Die Frage ist, wie ist die vorgegebenen Daten beiseite lasse(also nicht im Chart ausgebe) und stattdessen Daten eines Resultsets einlese, selektiere(z.b. nur jede Spalte verwende, die einen bestimmten Namen hat etc.) und dann in den Chart umwandle.

Ich hab auch auf der java-api nachgeschaut, also sagen mir die methoden wie next boolean();beforeFirst(); auch ein wenig etc.

Ich hab natürlich gegoogelt etc. es ist leider wenig brauchbares dabei herausgekommen.

Für einen kleinen Tipp wäre ich sehr dankbar

mfg SammyS
 
S

SlaterB

Gast
komm doch endlich mal von dieser fixen JFreeChart-Idee weg,
wenn du die Daten aus dem ResultSet holen willst ist es doch völlig egal, wofür sie verwendet werden,
genauso gut reicht es, sie erstmal mit System.out.println() auszugeben

-----

deine Frage ist also, wie man mit einem ResultSet umgeht

wie du gegoogelt hast, aber dann elementare Operatieon wie next() nicht kennst ist mir ein Rätsel,
aber am Anfang sollte eh ein Lehrbuch stehen:

z.B.
http://www.galileocomputing.de/open...20_006.htm#mje7a96be6a0ebd69c7bc9b4043361ca4d
20.6.2 Ergebnisse einer Abfrage in ResultSet

bzw. idealerweise das ganze Kapitel dazu,

wenn dir solche ausführlichen Texte mit Beispielen nichts sagen..,
ja dann kannst du nur hoffen, dass es dir hier jemand Stück für Stück erklärt ;)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Thallius MySQL Warum gibt result verschiedene Datumsformate? Datenbankprogrammierung 1
D Datenbank result als Auswahliste im GUI anzeigen lassen Datenbankprogrammierung 0
C Derby/JavaDB result set closed Datenbankprogrammierung 3
D Hibernate CreateQuery ohne Result Datenbankprogrammierung 7
M Logikfrage: Auf zweites Result warten Datenbankprogrammierung 2
M MySQL JDBC Result abfangen Datenbankprogrammierung 7
S executeBatch result immet mit Statement.SUCCESS_NO_INFO Datenbankprogrammierung 4
J illegal operation on empty result set Datenbankprogrammierung 21
H com.mysql.jdbc.NotUpdatable: Result Set not updatable Datenbankprogrammierung 2
P Problem mit Result-set Datenbankprogrammierung 13
zilti java.sql.SQLException: Before start of result set Datenbankprogrammierung 2
P Fehler: result-set zeigt auf null, aber warum Datenbankprogrammierung 4
P Operation not allowed after Result Set closed Datenbankprogrammierung 7
megachucky Problem mit: SQL Exception Before start of result set Datenbankprogrammierung 2
G How to put SQL query result into a file Datenbankprogrammierung 3
D result ausgabe in Html Tabelle Datenbankprogrammierung 10
K java.sql.SQLException: Before start of result set Datenbankprogrammierung 2
H JDBC Tabellen ausgeben Datenbankprogrammierung 8
N SQL-Abfrage in JTextField ausgeben Datenbankprogrammierung 6
Trèfle SQLite SQL-Java Änderungen ausgeben Datenbankprogrammierung 1
T Datei auf Desktop ausgeben Datenbankprogrammierung 22
Y H2 H2 foreign key in Spark Java ausgeben Datenbankprogrammierung 1
M HSQLDB Automatisch nächste freie Nummer ausgeben Datenbankprogrammierung 4
R MySQL Umgang mit ResultSet/Fremdschlüssel ausgeben Datenbankprogrammierung 2
A MySQL Tabelle ID abfragen und Spalte ausgeben Datenbankprogrammierung 4
A MySQL Problem bei Tabelle ausgeben Datenbankprogrammierung 3
R MySQL Blob aus DB auslesen und einer Tabelle ausgeben Datenbankprogrammierung 7
T Fehler beim ausgeben von Tabellen Inhalt Datenbankprogrammierung 9
H Oracle Datenbankabfrage ausgeben Datenbankprogrammierung 13
SexyPenny90 SQL Daten sortieren und top 5 ausgeben Datenbankprogrammierung 7
F Wert des erzeugent Schlüssel ausgeben lassen Datenbankprogrammierung 2
T Inhalt einer Datenbanktabelle autom. in XML ausgeben Datenbankprogrammierung 7
B Hibernate, einfaches Query Ausgeben Datenbankprogrammierung 4
N Ergebnisse von exectueQuery als Array ausgeben Datenbankprogrammierung 2
S Datenbank-Tabelle in SWING/AWT ausgeben Datenbankprogrammierung 28
S Alle Kunden mit ihren Adressen mit JPQL ausgeben Datenbankprogrammierung 2
O Spaltensummen ausgeben Datenbankprogrammierung 2
I Anzahl unterschiedlicher Datensätze ausgeben Datenbankprogrammierung 2
ARadauer tabellen kommentar ausgeben Datenbankprogrammierung 2
V Datenbankabfrage in einem Textfeld ausgeben Datenbankprogrammierung 3
H Daten aus MySQL-Datenbankl in Tabellen-GUI ausgeben. Datenbankprogrammierung 3
T Inhalt von Blob in Console ausgeben Datenbankprogrammierung 2
K Bild via JDBC und MySQL ausgeben Datenbankprogrammierung 2
K ResultSet: Erste Zeile ausgeben, Datensatz in String speiche Datenbankprogrammierung 13
J Alle Spalten und Zeilen eines ResultSets ausgeben ? Datenbankprogrammierung 2
M MySQL-Daten Ausgeben Datenbankprogrammierung 6
R Select auf der Konsole ausgeben Datenbankprogrammierung 2
W Datensätze v. SQL-Datenbank i. JTextFields ausgeben/updaten Datenbankprogrammierung 12

Ähnliche Java Themen

Neue Themen


Oben