Liebes Forum,
Ich möchte für ein kleines Übungsprojekt Graphen zeichnen können. Auf meiner Suche bin ich auf JFreeChart gestossen, welches mir etwas zu komplex erscheint. Ich möchte ja nur einen einfachen Graphen zeichnen können und nicht 100 verschiedene Diagramme.
Kennt jemand Alternativen zu JFreeChart?
was ich brauche:
- Pfeil für X- und Y-Achse, inkl Nummerierung
- Versch. Farben für verschiedene Graphen
- Graphen sollen einfache Striche sein, dh ohne grossen Firlefanz.
Wenn Du was kostenloses willst, nimm JFreeChart. Damit kennen sich wenigstens ein paar Leute aus, wenn Du Fragen hast. Falls Du nur ein einfaches Diagramm anzeigen willst, dann reicht es vielleicht schon eines der Demos zu kopieren und anzupassen.
Naja, was möchtest du denn üben? Das Zeichnen oder das drumrum? Zeichnen übt man am besten, indem man es selbst macht - JPanel nehmen, paintComponent() überschreiben.
Ok, ich bin nun dabei einen Graphen von Hand zu zeichnen, und hab ein erstes Problem: Ich würde gerne die Punkte der X-Achse regelmässig übers Panel verteilt anzeigen lassen.
Dafür hab ich im Konstruktor folgendes geschrieben:
Code:
public Graph(ArrayList<Integer> daten) {
this.daten = daten;
x = 0;
DX = this.getWidth() / daten.size(); // Problem !!
oldPoint = new Point(0,0);
newPoint = new Point(0,0);
x = DX;
}
Wieso liefert
Code:
this.getWidth()
immer 0 ?
(meine Graph-Klasse erbt von JPanel.)
Muss ich der Graphklasse die Grösse des zu bezeichnenden Panels mitgeben?
Dort wird ein int durch einen int geteilt, und das Ergebnis wäre wohl kleiner als 1, d.h. es wird zu 0 abgerundet.
int a = 3/4; // wird 0
int b = 4/3; // wird 1
Abhilfe: x und DX als float speichern
DX = (float)this.getWidth() / daten.size(); // Kein Problem !!
Ansonsten... JFreeChart ist für Charts (Diagramme). Speziell für Graphen (einschließlich der ganzen Layoutfragen) gibt's Java Graph Visualization and Layout
Oder aber es liegt woran es immer liegt: Die Breite ist immer0 wenn man sie im Konstruktor abfragt. Sie wird doch erst später -- normaler Weise durch den LayoutManager des Parents -- gesetzt.