
| JSP Java Server Page. JSP ist die Java-Komponente einer Web-Anwendung, die durch den JEE-Standard definiert ist. Sie ähnelt vom Aubau einer HTML-Seite mit integriertem Java-Code. Sie wird zuerst vom Web-Container in ein Servlet kompiliert. Anschließend nimmt das Servlet Client-Anfragen in Form eines HTTP-Requests entgegen und generiert dynamisch eine Antwort, die es über eine HTTP-Response an den Client zurückschickt. |
| Facelets XML-konforme Definition von Views in Web-Anwendungen, die mit Java Server Faces (JSF) realisiert werden. |
| Swing Grafik-Bibliothek für die Erstellung von Oberflächen unter Java. |
Die Bibliothek JFreeChart ist ein Open Source Projekt der Firma Object Refinery und kann bei SourceForge [1] in seiner aktuellen Version 1.0.10 kostenlos heruntergeladen werden. Für die Verwendung wird neben der Bibliothek selbst auch das Archiv "JCommon" benötigt, das Klassen enthält, die auch in anderen Projekten zum Einsatz kommen. Das JCommon-Archiv ist im Download der JFreeChart-Bibliothek zwar enthalten, der Quellcode wird bei SourceForge jedoch separat angeboten.
Kostenlos erhältlich ist lediglich der Quellcode selbst, Beispiele oder Dokumentationen sucht man auf der Projektseite [2] aber vergeblich. Eine rund 700 Seiten umfassende Dokumentation sowie den Quellcode aller in der Beispielanwendung [3] enthaltenen Diagramme erhält man derzeit für 48,75 USD (Stand Juni 2008). Eine Investition, die vor allem für die Entwicklung von komplexeren Charts - nicht nur aufgrund des derzeit schwachen Dollar-Kurses - auf jeden Fall gut angelegt ist.
// Erstellen des Datasets
DefaultPieDataset data = new DefaultPieDataset();
data.setValue("Datenbanken", new Double(38.2));
data.setValue("Java / JEE", new Double(28.1));
data.setValue("Systeme", new Double(17.5));
data.setValue("Management", new Double(10.5));
data.setValue("sonstiges", new Double(5.7));
// Erstellen des Charts
JFreeChart chart = ChartFactory.createPieChart3D(
"Prozentuale Verteilung der Schulungsteilnehmer" +
"der ORDIX AG auf verschiedene Bereiche", // Titel des Charts
data, // Dataset
true, // Anzeige der Legende
false, // Anzeige von Tool Tipps
false // Erstellen von URLs
);
// Setzen der Hintergrundfarbe
chart.setBackgroundPaint(new Color(235,226,216));
chart.getPlot().setBackgroundPaint(new Color(235,226,216));
// Konfiguration des Charts
// holen des Plots
PiePlot3D plot = (PiePlot3D) chart.getPlot();
// Festlegen der Höhe der 3D-Abbildung
plot.setDepthFactor(0.1);
// Festlegen des Startpunktes
plot.setStartAngle(290);
// Festlegen der Richtung
plot.setDirection(Rotation.CLOCKWISE);
// Festlegen des Transparenzwertes
plot.setForegroundAlpha(0.5f);
// Anzeige bei leerem Dataset
plot.setNoDataMessage("Keine Daten!");
// Anzeige des Charts (hier: in einer Swing-Anwendung)
ChartPanel cp = new ChartPanel(chart);
panelXYZ.add(cp);
|
| Abb. 1: Quellcode eines einfachen 3D-Tortendiagramms. |
JFreeChart bietet eine ganze Reihe von verschiedenen Diagrammtypen an, um den unterschiedlichen Ansprüchen gerecht zu werden. So finden sich Säulen-, Balken-, Torten- und Gantt-Diagramme sowie Histogramme und einige weitere Typen in der Auswahl. Zu vielen dieser Haupttypen gibt es weitere "Untertypen", z. B. ein PieChart (Kreisdiagramm) und ein PieChart3D (dreidimensionales Kreisdiagramm). Eine kleine Swing-Demo-Anwendung auf der Projektseite [3] vermittelt einen Überblick über die Vielzahl der Diagrammtypen und die Möglichkeiten, die damit realisiert werden können.
Einem Diagramm liegen immer die anzuzeigenden Daten zu Grunde. Diese müssen zunächst in ein Dataset geschrieben werden, das dem Chart anschließend zur Anzeige übergeben werden kann.
Für die verschiedenen Diagrammtypen existieren zum Teil unterschiedliche Datasets, die je nach Ausgabeart unterschiedliche Daten aufnehmen können. Die gebräuchlichsten sind hierbei sicherlich das Category-Dataset, das in Balken- und Liniendiagrammen zum Einsatz kommt und das DefaultPieDataset, das für Kreis- und Tortendiagramme verwendet wird. In dem kleinen Quellcode-Beispiel in Abbildung 1 wird die Verwendung eines DefaultPieDatasets für ein 3D-Kreisdiagramm demonstriert.
Für die Erstellung eines Charts steht dem Entwickler die Factory-Klasse ChartFactory zur Verfügung, die für jeden Chart-Typ eine entsprechende create-Methode für dessen Erzeugung anbietet. Insgesamt beinhaltet die ChartFactory 38 create-Methoden, mit denen fast 20 verschiedene Diagrammarten erstellt werden können. Als Übergabeparameter werden immer der Titel des Diagramms sowie das Dataset mit den anzuzeigenden Daten übergeben. Weitere Parameter sind je nach aufgerufener Methode unterschiedlich. Das Beispiel in Abbildung 1 zeigt die Erstellung eines 3D-Kreisdiagramms mit Hilfe der Methode createPieChart3D. Das hierbei erstellte Diagramm zeigt Abbildung 2.
Die Konfiguration des Charts geschieht über ein so genanntes Plot-Objekt. Es ist Bestandteil des Objekts JFreeChart und wird bei dessen Erzeugung über die ChartFactory bereits erstellt. über die Methode getPlot kann darauf zugegriffen werden, um Änderungen im Aussehen des Diagramms vorzunehmen, oder auch um Bestandteile, wie z. B. eine zweite X-Achse in einem Linien- oder Wertediagramm, hinzuzufügen oder zu entfernen.
Die Klasse Plot ist eine abstrakte Klasse, in der nur die Änderungen vorgenommen werden können, die für jeden Diagrammtyp möglich sind, wie zum Beispiel das Festlegen von Farben, Linien usw. Um spezifische Einstellungen für einen bestimmten Chart-Typ vorzunehmen, muss das über die Methode getPlot erhaltene Objekt in den entsprechenden Typ, beispielsweise CategoryPlot oder PiePlot3D, gecastet werden.
Nach dem Erzeugen eines Objekts JFreeChart gibt es zwei Möglichkeiten, dieses anzuzeigen. Die erste besteht darin, eine Grafik zu erzeugen, die dann in eine HTML-Seite, eine JSP oder ein Facelet eingefügt werden kann. Hierfür steht die Methode createBufferedImage im Objekt JFreeChart bereit.
|
| Abb. 2: Darstellung des Charts, das mit dem Quellcode aus Abbildung 1 erstellt wurde. |
Die zweite Möglichkeit der Darstellung besteht darin, das Chart in eine Swing-Anwendung zu integrieren. Für die einfache Umsetzung bietet die Bibliothek die Klasse ChartPanel an, der das Objekt JFreeChart einfach übergeben wird und das dann wie ein "normales" JPanel verwendet werden kann. Das ChartPanel beinhaltet ein Kontextmenü, über das der Anwender verschiedene Einstellungen am bereits erstellten Diagramm vornehmen kann. So können zum Beispiel Farben, Linienbreiten oder Wertebereiche dynamisch angepasst oder das Diagramm in verschiedene Grafikformate exportiert werden.
Außerdem bietet die Verwendung mit Swing Vorteile, die in einer Web-Anwendung nicht realisiert werden können: z. B. Tool-Tipps auf den einzelnen Werten oder eine dynamische Aktualisierung der Anzeigedaten.
JFreeChart bietet ein breites Spektrum an Diagrammen an und stellt zahlreiche Konfigurationsmöglichkeiten zur Verfügung, diese in Aussehen und Darstellung zu verändern. Dem Entwickler wird mit dieser Bibliothek ein Werkzeug an die Hand gegeben, mit dem sich ohne großen Aufwand Grafiken erstellen lassen, die auch in professionellen Anwendungen eingesetzt werden. So kommt JFreeChart z. B. im Reporting-Tool JasperReports und im Application Server JBoss zum Einsatz.
Die Erstellung und die Konfiguration ist in den meisten Fällen sehr intuitiv und für einfache Charts sicherlich auch ohne Dokumentation leicht zu bewerkstelligen. Um komplexere Diagramme zu erzeugen oder eigene Diagrammtypen zu erstellen, die im derzeitigen Umfang nicht enthalten sind (z. B. ein Spinnennetz-Diagramm) empfiehlt sich der Erwerb der kostenpflichtigen Dokumentation, in der alle hierfür relevanten Aspekte ausführlich erläutert werden.
Alexander Zeller (info@ordix.de).