Graph erstellen

Kassel

Aktives Mitglied
Hat jemand eine Idee wie ich so ein Graph erstellen kann ??

hahahha.jpg


Ein Ansatz würde mir reichen ...
 
Zuletzt bearbeitet von einem Moderator:

Ivan Dolvich

Mitglied
Hi kassel,
möchtest du es selbst programmieren oder nützen dir vielleicht UML-Editoren etwas?
Wenn du es selbst machen möchtest, dann schau dir doch mal so ein UML-Editor an.

Im Grunde ist das ja nicht so schwer.
Du brauchst einen Daten-Baum.
Jeder Eintrag in diesem Baum ist ein Feld/Buchstabe. und weiß, mit welchen anderen Feldern/Buchstaben er verbunden ist.
Und dann gehts halt ans zeichnen.
 

Kassel

Aktives Mitglied
Mit UML habe ich schon gearbeitet jedoch ist UML doch nur da um Klassendiagramme, Sequenzdiagramme, SwimLanes , ... darzustellen ... ich habe ein Panel wo ich dir dargestellte Struktur in Java programmieren soll, also es soll so ne Art Ausfall berechnung sein ... überall wo die buchstaben sind kommen zusätzlich CheckBoxen hinzu und er kann sagen ich nehme den Pfad ... dann deaktiviere ich alle anderen wo er nicht hin kommen kann ... dann wählt er weiter bis er zum schluss angelangt ist , dann muss mein programm wissen dass er in die Kategorie A kommt . Also dass umzusetzen mit den Listener und die verteilung der Checkboxen kann ich , jedoch weiss ich nicht wie ich es schaffen kann diese Graphik per awt, Graphics2s, Graphics umzusetzen.

Gibt es denn einen AWT BUILDER wo ich dass schön zusammensetzen kann und dann sage gib mir den code ... oder muss alles per hand gemacht werden ...

also ich habe angefangen per hand dies zu machen, sieht nicht gerade schön aus :

Java:
public void paintComponent(Graphics g) {
        // Paint background
        super.paintComponent(g);
        
        g.drawOval(10, 225, 8, 8);
        
        g.drawLine(12, 229, 40, 229);

        g.drawLine(40, 189, 40, 269);

        g.drawLine(40, 189, 50, 189);
        g.drawLine(40, 269, 50, 269);

        g.drawString("S\u2081", 52, 194);
        g.drawString("S\u2082", 52, 274);

        g.drawLine(88, 189, 104, 189);
        g.drawLine(88, 269, 104, 269);

        g.drawLine(104, 174, 104, 203);
        g.drawLine(104, 254, 104, 283);
    }

ansonsten mache ich noch eine Version wo ich dass Bild als Hintergrund setzte und meine CheckBoxen einfach drüber setze ... - doch dies "eine Authoritätsperson" :) nicht.

Wenn jemand eine Library/ oder Builder hat der es mir erleichtert, dann nur her damit ...

Noch etwas: es muss nicht ganz genau aussehen - es kann auch eine art Baum sein ( ist es eigentlich ja auch nur horizontal ) wo ich mich dann durch den Baum hangeln kann.
 

Ivan Dolvich

Mitglied
Ich kenne keine Lib, die dir das abnehmen könnte. Aber es ist leicht umgesetzt:
Node:
Java:
package graph;

import java.util.ArrayList;
import java.util.Iterator;

public class Node {
	/**
	 * Positionsangaben:
	 */
	int width = 50;
	int height = 50;
	int x;
	int y;

	/**
	 * Eine Liste der Kinder
	 */
	ArrayList<Node> children = new ArrayList<Node>();

	/**
	 * Fügt ein neues Kind dazu
	 * 
	 * @param child
	 */
	public void add(Node child) {
		children.add(child);
	}

	/**
	 * Getter für alle Kinder
	 * 
	 * @return
	 */
	public ArrayList<Node> getChildren() {
		return children;
	}

	/**
	 * Berechnet die Höhe die alle Kinder zeichnerisch einnehmen. Sollten keine
	 * Kinder vorhanden sein, ist das Ergebnis gleich der eigenen Höhe.
	 * 
	 * @param space
	 * @return
	 */
	public int getHeightOfChildren(int space) {
		int height = 0;
		int childHeight;
		if (!children.isEmpty()) {
			Iterator<Node> iterator = children.iterator();
			while (iterator.hasNext()) {
				Node child = iterator.next();
				childHeight = child.getHeightOfChildren(space);
				if (childHeight == 0) {
					childHeight = child.getHeight();
				}
				height += childHeight + space;
			}
			height -= space;
		} else {
			height = this.height;
		}
		return height;
	}

	/**
	 * Berechnet die eigene Position und die der Kinder, relativ zu Punkt
	 * (sx|sy), mit Rücksicht auf den Platz, den die Kinder brauchen.
	 * 
	 * @param sx
	 * @param sy
	 * @param spaceX
	 * @param spaceY
	 */
	public void calculatePosition(int sx, int sy, int spaceX, int spaceY) {
		int childrenHeight = getHeightOfChildren(spaceY);
		x = sx;
		y = sy + (childrenHeight - height) / 2;

		// Alle Kinder berrechnen
		Iterator<Node> iterator = children.iterator();
		while (iterator.hasNext()) {
			Node child = iterator.next();
			child.calculatePosition(sx + width + spaceX, sy, spaceX, spaceY);
			sy += child.getHeightOfChildren(spaceY) + spaceY;
		}

	}

	public int getHeight() {
		return height;
	}

	public int getWidth() {
		return width;
	}

	public int getX() {
		return x;
	}

	public int getY() {
		return y;
	}
}

GraphPanel:
Java:
package graph;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.util.Iterator;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class GraphPanel extends JPanel {
	private static final long serialVersionUID = 1L;

	/**
	 * Das Ursprungs-Blatt. Hier ist die ganze Baumstruktur drin.
	 */
	Node root = new Node();

	/**
	 * Erstellt eine Test-Baumstruktur.
	 */
	public void init() {
		Node node1 = new Node();
		Node node2 = new Node();
		Node node3 = new Node();

		node3.add(new Node());
		node3.add(new Node());
		node3.add(new Node());
		node3.add(new Node());

		node2.add(new Node());
		node2.add(new Node());

		node1.add(new Node());
		node1.add(node2);
		node1.add(node3);

		root.add(node1);
		root.add(new Node());
		root.add(new Node());

		root.calculatePosition(10, 10, 20, 10);

	}

	@Override
	public void paint(Graphics g) {
		drawNodes(root, (Graphics2D) g);
	}

	/**
	 * Zechnet genau ein Node an seiner Position.
	 * 
	 * @param node
	 * @param g
	 */
	public void drawNode(Node node, Graphics2D g) {
		g.setColor(Color.blue);
		g.drawRect(node.getX(), node.getY(), node.getWidth(), node.getHeight());
	}

	/**
	 * Zeichnet das Node und alle seine Kinder.
	 * 
	 * @param node
	 * @param g
	 */
	public void drawNodes(Node node, Graphics2D g) {
		drawNode(node, g);
		Iterator<Node> iterator = node.getChildren().iterator();
		while (iterator.hasNext()) {
			Node child = iterator.next();
			drawNodes(child, g);
			drawLineBetween(node, child, g);
		}
	}

	/**
	 * Zeichnet die Linie zwischen zwei Nodes.
	 * 
	 * 
	 * @param start
	 * @param end
	 * @param g
	 */
	public void drawLineBetween(Node start, Node end, Graphics2D g) {
		int startX = start.getX() + start.getWidth();
		int endX = end.getX();
		int centerX = startX + (endX - startX) / 2;
		int startY = start.getY() + start.getHeight() / 2;
		int endY = end.getY() + end.getHeight() / 2;

		g.setColor(Color.black);
		g.drawLine(startX, startY, centerX, startY);
		g.drawLine(centerX, startY, centerX, endY);
		g.drawLine(centerX, endY, endX, endY);
	}

	public static void main(String[] args) {
		GraphPanel graphPanel = new GraphPanel();
		graphPanel.init();

		JFrame frame = new JFrame();
		frame.add(graphPanel);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setSize(1024, 768);
		frame.setVisible(true);
	}
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Aus 2 Arrays xy - Graph erstellen AWT, Swing, JavaFX & SWT 9
D gerichteten Graph erstellen AWT, Swing, JavaFX & SWT 2
H 2D-Grafik Bibliothek um Graph\Baum zu erstellen AWT, Swing, JavaFX & SWT 2
Z Swing Graph zeichnen lassen AWT, Swing, JavaFX & SWT 16
D Canvas oder scene graph? AWT, Swing, JavaFX & SWT 16
ralfb1105 Swing Dynamischer Graph zum anzeigen Perfomance Daten AWT, Swing, JavaFX & SWT 35
Soloeco Graph zeichnen AWT, Swing, JavaFX & SWT 1
I Graph mit Swing zeichnen AWT, Swing, JavaFX & SWT 8
S Graph zeichnen bei Mausklick AWT, Swing, JavaFX & SWT 4
S Balkendiagramm und XY-Graph in einem Chart? AWT, Swing, JavaFX & SWT 2
M eigene GUI Bibliothek erstellen. AWT, Swing, JavaFX & SWT 10
M Mandelbrot mit BigDecimal erstellen und in der UI zeichnen, funktionierte nicht. AWT, Swing, JavaFX & SWT 1
I Hilfe bei dem Erstellen einer SQL Abfrage aus gewählten JComboBoxen AWT, Swing, JavaFX & SWT 5
C Swing ImageIcon erstellen, skalieren und verwenden AWT, Swing, JavaFX & SWT 3
T src ordner erstellen AWT, Swing, JavaFX & SWT 6
M Javafx versuch Bibliothek zu erstellen AWT, Swing, JavaFX & SWT 0
melaniemueller Confirmation Dialog erstellen AWT, Swing, JavaFX & SWT 18
izoards Outlook Mail erstellen - Signatur wird nicht angezeigt. AWT, Swing, JavaFX & SWT 3
E Putzplan erstellen AWT, Swing, JavaFX & SWT 15
news2swen automatisches erstellen eines Languagefiles AWT, Swing, JavaFX & SWT 1
W Clear Canvas und anschließendes neues Erstellen von Objekten auf Canvas aus ArrayList AWT, Swing, JavaFX & SWT 4
P Swing Programm hängt sich bei Buttondruck auf? (GUI für "Chatbot" erstellen) AWT, Swing, JavaFX & SWT 15
D runnable Jar mit Javafx erstellen(Eclipse) AWT, Swing, JavaFX & SWT 10
N Kontextmenü (Popup-Fenster) erstellen AWT, Swing, JavaFX & SWT 3
L JavaFX PropertyView mit dynamischer EditCell erstellen? AWT, Swing, JavaFX & SWT 8
C Falschfarbenbild (lineare Grauwertspreizung)aus Grauwert-Bild erstellen AWT, Swing, JavaFX & SWT 15
H Beim JFrame erstellen ein anderes schließen AWT, Swing, JavaFX & SWT 0
Z Random Butten erstellen ohne Container AWT, Swing, JavaFX & SWT 15
F Verzeichnis über GUI erstellen AWT, Swing, JavaFX & SWT 2
J Exception beim JFrame erstellen AWT, Swing, JavaFX & SWT 6
S Labels in Panel erstellen AWT, Swing, JavaFX & SWT 1
B JavaFX RadioButtons erstellen AWT, Swing, JavaFX & SWT 7
N Ausführbare Datei aus JavaFX Projekt erstellen AWT, Swing, JavaFX & SWT 22
A Objekt von einem Window erstellen? AWT, Swing, JavaFX & SWT 8
K Buttons dynamisch erstellen (NetBeans) AWT, Swing, JavaFX & SWT 10
ralfb1105 JavaFX TreeView dynamisch aus Datenbank Tabelle erstellen AWT, Swing, JavaFX & SWT 22
ralfb1105 JavaFX Dynamisch TableView Spalten erstellen AWT, Swing, JavaFX & SWT 4
O Basics - Anwendung erstellen mit mehreren Szenen AWT, Swing, JavaFX & SWT 1
dereki2000 LookAndFeel Individuelles LAF erstellen AWT, Swing, JavaFX & SWT 9
C SWT Breadcrumb Zeile mit entsprechenden Hyperlinks erstellen AWT, Swing, JavaFX & SWT 0
D Swing Anwendung ohne JPanel erstellen AWT, Swing, JavaFX & SWT 1
L Chat erstellen AWT, Swing, JavaFX & SWT 13
N "Automatisches" erstellen von jButtons AWT, Swing, JavaFX & SWT 1
K Swing outerPanel und innerPanel erstellen AWT, Swing, JavaFX & SWT 4
N Eclipse - GUI - MacBook - Buttonsichtbarkeit beim Anlegen/Erstellen AWT, Swing, JavaFX & SWT 14
Timo_neu_in_java Buttons Erstellen AWT, Swing, JavaFX & SWT 6
P JList erstellen AWT, Swing, JavaFX & SWT 4
H Musik wird nach dem erstellen der .jar Datei nicht mehr abgespielt AWT, Swing, JavaFX & SWT 1
J Statistik erstellen AWT, Swing, JavaFX & SWT 3
H GUI erstellen um JUnit Tests auszuführen AWT, Swing, JavaFX & SWT 29
H JavaFX via .fxml einen abgeleiteten Button erstellen... AWT, Swing, JavaFX & SWT 4
D Swing JComboBox (DefaultComboBoxModel) überschreibt Eintrag beim erstellen AWT, Swing, JavaFX & SWT 0
Prafy Sich ändernde Farbverläufe erstellen AWT, Swing, JavaFX & SWT 4
Thallius Swing Mehrere tausend "Panels" erstellen AWT, Swing, JavaFX & SWT 3
O Swing JList beim Klicken in der GUI erstellen AWT, Swing, JavaFX & SWT 6
M JavaFX GUI-Elemente erstellen, nachdem die GUI geladen hat AWT, Swing, JavaFX & SWT 4
U dynamisches JTree erstellen AWT, Swing, JavaFX & SWT 2
A Mit dem Scene Builder eine Collage erstellen (Bilder beziehen aus Flickr) AWT, Swing, JavaFX & SWT 1
D JavaFX build.fxbuild error beim Erstellen einer exe AWT, Swing, JavaFX & SWT 2
T JavaFX Flexible Layouts dynamisch erstellen / Design-Inspirationen AWT, Swing, JavaFX & SWT 8
J JavaFX JavaFX exe erstellen AWT, Swing, JavaFX & SWT 5
E JavaFX JavaFX - MenuItem erstellen aus dem Inhalt einer HashMap AWT, Swing, JavaFX & SWT 1
G Programm GUI erstellen AWT, Swing, JavaFX & SWT 5
N Swing JTree Problem beim erstellen der Knoten AWT, Swing, JavaFX & SWT 0
G Anonyme Instanz von JXImageView erstellen und mit Bild initialisieren AWT, Swing, JavaFX & SWT 7
M "(Buch-)Seiten" erstellen AWT, Swing, JavaFX & SWT 2
R AWT AWT Textfeld durch Klick auf Button erstellen? AWT, Swing, JavaFX & SWT 3
H Swing Probleme beim erstellen eines neuen Objektes durch einen Button AWT, Swing, JavaFX & SWT 10
Z Diagramm mit jfreechart quadratisch erstellen AWT, Swing, JavaFX & SWT 1
F JButtons erstellen lassen mit unterschiedlichen Funktionen AWT, Swing, JavaFX & SWT 3
T JPanel dynamisch erstellen AWT, Swing, JavaFX & SWT 4
J Logikfehler im erstellen eines GUI AWT, Swing, JavaFX & SWT 3
A Swing Frames richtig erstellen AWT, Swing, JavaFX & SWT 3
T Wizard mit NEXT Button erstellen AWT, Swing, JavaFX & SWT 11
D Swing Ansichtstranformationsmatrix erstellen AWT, Swing, JavaFX & SWT 0
M JavaFX MSI oder EXE aus JavaFX Projekt erstellen? AWT, Swing, JavaFX & SWT 2
R Kästchen mit Zufallsfarben erstellen AWT, Swing, JavaFX & SWT 2
A Fehler bei erstellen eines JTextFields AWT, Swing, JavaFX & SWT 2
A Fenster erstellen AWT, Swing, JavaFX & SWT 2
G Label erstellen AWT, Swing, JavaFX & SWT 6
G Blöcke erstellen AWT, Swing, JavaFX & SWT 4
K Swing Terminplaner erstellen AWT, Swing, JavaFX & SWT 7
G JavaFX Neues Fenster erstellen AWT, Swing, JavaFX & SWT 3
M Wie kann ich eine an Apple Automator angelehnte GUI erstellen? AWT, Swing, JavaFX & SWT 1
T An/aus Button erstellen AWT, Swing, JavaFX & SWT 5
A Swing Transparenten JPanel erstellen AWT, Swing, JavaFX & SWT 5
D Jahreskalender erstellen AWT, Swing, JavaFX & SWT 2
R Int aus JSpinner auslesen und Tabelle erstellen AWT, Swing, JavaFX & SWT 3
W JTable erstellen und Spalten sortieren AWT, Swing, JavaFX & SWT 2
B Erstellen eigener Combobox ("CellFactory") AWT, Swing, JavaFX & SWT 4
K Swing SwingGUI - Erstellen für Anfänger AWT, Swing, JavaFX & SWT 15
B Eigenen Look&Feel erstellen?! AWT, Swing, JavaFX & SWT 2
S Swing Kopie eines JPanels inkl. aller objekte darin erstellen AWT, Swing, JavaFX & SWT 5
R SWT Eigene Events erstellen und werfen AWT, Swing, JavaFX & SWT 59
K JSpinner in passender Breite erstellen oder automatisch anpassen AWT, Swing, JavaFX & SWT 2
B 2D-Grafik Dynamisches Erstellen von Images und deren Animation AWT, Swing, JavaFX & SWT 4
C Border in JPanel erstellen AWT, Swing, JavaFX & SWT 4
P JTabbedPane per Menuitem erstellen AWT, Swing, JavaFX & SWT 20
B Swing invokeLater nötig beim GUI erstellen? AWT, Swing, JavaFX & SWT 10
V Swing Wochenplaner in Swing erstellen! Aber wie? AWT, Swing, JavaFX & SWT 13

Ähnliche Java Themen


Oben