Hinweis: Das Forumsystem hat eine Zitier-Funktion, das machts übersichtlicher.
Solour hat gesagt.:
haha sehr witzig, schau mal nochmal genau hin und du wirst feststellen das verdammt viele daten vertikal angeordnet sind
bsp

ls ordnet die daten vertikal, menü's zeigen ihre aufpopenden elemente vertikal, in meiner icq liste sind die leute untereinander angeordnet, in tabellenprogrammen sind daten in spalten eingetragen)
ich glaube das es ein seeehr kleines problem ist, wenn menschen daten von oben nach unten lesen müssen (insbesondere ist sowas ja genauso bei büchern...)
Jetzt bringst du aber ein paar Sachen durcheinander. In einer einspaltigen Liste (ls) sind die Einträge nicht verknüpft und können sortiert werden. Eine Tabelle hat feste Spalten nach denen sortiert werden kann. Auch hier gibt es keine Verschachtelung.
Aber wie komme ich in einem vertikalen Baum von einem Node weiter unten zu seinem Parent, wenn dieser nicht im sichtbaren Bereich liegt und wie behalte ich dessen Geschwister im Auge, die sowohl vertikal als auch horizontal ganz woanders sein können?
Das ist eine Problemstellung die ich weder in einer Tabelle, noch einer Liste habe. Muss damit zu tun haben dass ein e Liste und eine Tabelle kein Baum ist
ich erwarte ein verhältnis von 1:100 bis 1:1000 von verzweigung zu tiefe
außerdem würde ich das wenn ichs selber mache den selektierten pfad am linken rand der komponente halten, so das dieser pfad rein vertikal verläuft und von diesem nach rechts die abzweigungen dargestellt werden
Viel Spaß beim Stricken des Layout-Algorithmus. Wenn du dir eh schon sowas denkst, kannste auch gleich ne Graph-Lib nehmen, um nicht auch noch das Rad neu erfinden zu müssen.
wie schon gesagt, wenn man eine standard komponte wie JTree verwendet verzwanzigfacht sich das problem, das man das gewünschte element findet.
Ich hab dir ja auch nicht zu JTree geraten
deine meinung. außerdem wo denkst du liegt der unterschied zwischen einer custom komponente die ich erstellen würde und der Graph-lib?
Überleg mal was du da machst:
Du brauchst ne Anzeigefläche in der du deine Nodes positionierst und diese verbindest. Nodes und Links müssen einigermaßen flexibel sein was die Darstellung angeht und noch dazu auf Ereignisse reagieren (Maus, Tastatur), dahinter musst du ein Datenmodell haben.
Bevor du dir ne eigene Graphlib als Unterbau bastelst, solltest du dir überlegen ob es nicht viel Schweiß und Ärger spart eine existierende Lib zu benutzen und dich lieber auf deine Anwendungslogik konzentrierst.
>In prefuse haste noch den Vorteil dynamisch Renderer zuweisen zu können,
bei einer custom komponente ist das natürlich acuh möglich
Ich kann auch jeden Morgen erst das Rad neu erfinden, ehe ich es an meinen Wagen montiere und zur Arbeit fahre. Klar kannst du alles mögliche auch selbst programmieren, die Frage ist nur ob es zweckdienlich ist und ob am Ende etwas rauskommt was wualitativ mit dem vergleichbar ist, was mit anderen Lösungen konkurrieren könnte.
>Teile der Daten ausblenden zu können,
ich will mit sicherheit NICHT das daten nicht angezeigt werden
Anwendungen entwickeln sich mitunter ganz seltsam und unvorhergesehen. Daten/Anzeigen gefiltert sehen zu wollen ist wirklich keine sooo abstruse Anforderung.
>man kann Overviews anbieten, Zoomen...
interessant, aber leider nicht seehr sinnvoll für mienen anwendungszweck, da man die texte der nodes lesen können muss
Schau dir mal die Videos auf der prefuse Seite und die Beispiele an. Ich hab hier selber seit eineinhalb Jahren ausschließlich mit Datenvisualisierung, Interaktion und Graphen zu tun und wenn man sieht was andere teils für Ideen haben (und auch umgesetzt haben) ergeben sich viele neue gute Ideen abseits der ausgelatschten alten Pfade.
> Der Degree-Of-Interest-Algo ist dafür ziemlich geil (siehe auch das prefuse-Video mit der Demo), ist allerdings von > Xerox käuflich zu erwerben...
kP davon, muss ich mal schaun, (da ich aber GPL-software erstelle fällt das sicherlich flach)
Aber die DOI-Tree-Implementation zeigt anschaulich wie eine gute Navi funktionieren kann und da sie auf prefuse aufbaut auch, wie leistungsfähig das Ding ist. Leider komme ich kaum dazu mich eingehender mit prefuse zu beschäftigen (kommt aber noch), da ich derzeit aus praktischen und historischen Gründen noch mit ner anderen Graph-Lib arbeite, habe aber für interne Zwecke schonmal die einen oder anderen Proof-Of-Concept-Sachen damit gemacht.
Die meisten guten Graph-Libs die ich kenne sind kommerziell (JGo, YGraph, ....) oder nicht besonders brauchbar oder haben ne mehrere Lizenzmodelle (JGraph). Prefuse ist BSD und alleine von der Umsetzung schon deutlich verschieden zu allen anderen Libs die ich kenne. Es hat einige sehr sehr interessante Ansätze und ist, so wie ich es derzeit sehe, für Visualisierung und so Navi-Sachen extrem gut (weil in allen Belangen performant und flexibel) geeignet. Außerdem ist der Coder, Jeffrey Heer, gut drauf
> M.E. einzig vernünftige Alternative, es sei den du erfindest die Navigation und den Baum neu.
die derzeitige lösung ist def. eine schlechtere als meine oben erwähnte. und ja man muss sich wenn man dafür eine custom-componente erzeugt ein paar gedanken in bezug auf den anwendugsfall und die usability machen.
Ich kenne jetzt deinen speziellen Anwendungsfall nicht, da haste ja weiter nix zu geschrieben. Gerade am Anfang von Projekten ist aber selten klar abzusehen wohin es mal gehen wird. Die Sachen die ich vor einem Jahr geschrieben habe, muss ich für neue Features auch oft mehr oder minder stark einem Refactoring unterziehen. Das Zurückgreifen auf möglichst flexible Libs im Unterbau ist für mich immer oberstes Gebot umd die ganze Anwendung möglichst flexibel zu halten. Ich kann mich auf meine Anwendung konzentrieren und greife bei den Basics auf ausgereifte Komponenten/Produkte zurück. Wenn ich diese noch jedesmal selbst weiter-/entwickeln müsste, würde ich zu nichts produktivem mehr kommen.
Alleine wenn ich den Aufwand bedenke alles in allen möglichen Umfeldern und Konfigs zu testen und zu debuggen - eine Lebensaufgabe.
Klar hat man oft auch Fälle, wo man sich selbst was ausdenken muss, weil es nix fertiges gibt. Ich sehe mich als Problemlöser und gehe gerne auf Suche im Netz nach neuen interessanten Sachen. Manchmal weil ich akut was brauche, manchmal auch nur um für später schonmal was im Hinterkopf zu haben.
In deinem Fall hört sich das aus meinen Erfahrungen (wie gesagt, habe selbst mit reichlich Trees, TreeTables, Tables und Graphen zu tun) stark nach nem Anwendungsfall für eine Graphlib an. Würde dir Zeit sparen und ne Menge Flexibilität bringen.
Schau dir prefuse, die Beispiele und vor allem das Video und die PDFs mal in Ruhe an, kann ja nicht schaden.
