Zeichnung von Kästchen mit Pfeilen... (Strukturdiagramm)

fl_ex

Bekanntes Mitglied
Hey Leute,

jemand ne Idee wie ich das Problem lösen kann:

eine Klasse "Prozess" (können unterobjekte der eigenen Klasse besitzen)

Ich habe E1Prozesse... die haben E2Prozesse...die haben E3Prozesse.... usw...

nur ich möchte nich von Hand da die Koordinaten hinsetzen mit bounds oder so'n kram... Weil anzahl sich halt auch ändern kann..

möchte sagen
"gib mir alle E1Prozesse"... dann listet er mir eben alle E1Prozesse auf... in Kästchen
--> "gib mir zu den jeweiligen prozessen die E2 Prozesse und verbinde Sie mit den dazugehörigen E1 Prozessen durch striche oder so...(Verbindungen sind in der Datenbank mit Fremdschlüsseln abgespeichert...)
und die funktion "getSubprocesses()" ist ebenfalls vorhanden...

(Derby Datenbank)

kann mir irgendwer helfen? hab schon das ganze Inet abgesucht und NIX gefunden -.-
 
Wenn das mit Deinen Prozessen so ähnlich aufgebaut ist, wie Graphen, würde Dir empfehlen, bei google mal nach "Visualisierung von Graphen" zu suchen.
 
danke schonmal dafür...
brauche aber etwas, was automatisiert abläuft... Es sollen alle angezeigt werden...
und bestimmte die ich vorher auswähle dann z.B mit Pfeilen verbunden werden oder alle anders einfärben... :/
Am besten irgendwie auf die Datenbank zugreifen können...hmmm
 
Zuletzt bearbeitet:
Habs nun hinbekommen! 🙂 Also so eine grobe Struktur womit sich, denke ich, weiter arbeiten lässt 🙂

Java:
package diagramTests;

import java.awt.Component;
import java.awt.Graphics;

import javax.swing.JButton;
import javax.swing.JPanel;

/**
 * @author Felix-André Böttger
 * 
 */
public class Panel extends JPanel {

	int[] xList = new int[7];

	public Panel() {

		int y = 10;
		int count = 0;
		setVisible(true);
		setSize(900, 900);
		setLayout(null);

		final CenterObj centerObj = new CenterObj();
		add(centerObj.createCenterButton("Prozess1", y, getWidth(), 110));

		y += 80;

		for (int i = 2; i < 9; i++) {

			if (i != 2) {
				if (i % 2 == 0) {
					for (int j : xList) {
						if (getComponentAt(j, y) instanceof JButton) {
							xList[i - 2] = j - count * 115;
						} else {
							final Component btn = add(centerObj.createCenterButton("Prozess" + i,
									y, getWidth(), 110));
							btn.setLocation(j, y);
							xList[i - 2] = btn.getX();
							count += 1;
							break;
						}
					}
				} else {
					if (i % 2 == 1) {
						for (int j : xList) {
							if (getComponentAt(j, y) instanceof JButton) {
								xList[i - 2] = j + count * 115;
							} else {
								final Component btn = add(centerObj.createCenterButton("Prozess"
										+ i, y, getWidth(), 110));
								btn.setLocation(j, y);
								xList[i - 2] = btn.getX();
								count += 1;
								break;
							}
						}
					}
				}

			} else {
				final Component btn = add(centerObj.createCenterButton("Prozess" + i, y,
						getWidth(), 110));
				xList[i - 2] = btn.getX();
				count += 1;
			}
		}
	}

	public void paintComponent(Graphics g) {
		super.paintComponent(g);
		for (int i = 0; i < xList.length; i++) {
			g.drawLine(450, 10 + 25, xList[i] + 55, 90);
		}
	}

}

Er malt die Kästchen zentriert unter den Oberprozess immer abwechselnd links/rechts und verbindet sie dann alle mit dem Oberprozess^^ 🙂
 

Neue Themen


Zurück
Oben