Archief - Java 2D Interface

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Squealer

Legacy Member
In de toekomst zal ik mij met een project moeten bezig houden die de gebruiker toelaat op een grafische manier (op een tekening) stuff te manipuleren. De requirements liggen nog lang niet vast. Er werd hooguit even over gepraat, niets concreets werd beslist, maar ik wou toch al even informeren...

Met "interface" hier in de titel bedoel ik niet een standaard GUI met buttons en labels en panels en what not.
Ik heb het ook niet over een Paint applicatie ofzo

Ik heb het over een dynamisch genereerde omgeving die de gebruiker kan manipuleren.

- Er zullen tekeningen moeten getoond worden op het scherm (gegenereerd met code). (dwarsdoorsnede van iets, dus meerdere lagen naast elkaar)
- Die schema's zullen bepaalde domein objecten voorstellen.
- De gebruiker moet op het scherm zaken een naam kunnen geven en waarden kunnen wijzigen.
- De gebruiker moet componenten op die tekening (van layer tot layer) met elkaar kunnen verbinden, liefst met een soort "snap to".
- Heel die tekening moet je kunnen pannen en in- en uitzoomen.
- Het domein moet op de hoogte zijn van welk object welk label heeft gekregen, en welke objecten met elkaar verbonden zijn.


In other words:
Ik wil geen tekeningske maken met mijn muis.
Ik wil via code een tekening laten maken adhv bepaalde start up criteria
De gebruiker moet daarna bepaalde componenten (vormen dus eigenlijk) op het scherm kunnen slepen, (of invoegen met een popup menu) en die al dan niet laten verbinden met andere componenten dmv drag en drop, of door lijnen te trekken tussen componenten of andere lijnen.
Heel die bazaar moet ofcourse exportable zijn, en terug importable (wat dan een start up situatie wordt).


Ik vind niet direct een goed voorbeeld, maar om je toch een grof idee te geven van welke richting er moet uitgegaan worden:
(voorbeeld van statisch gegenereerde afbeelding waar enkel properties kunnen gewijzigd worden)
http://www.bergmans.com/Combustion Control System/GUI Screenshot - Small.jpg

(voorbeeld van dynamisch gegenereerde afbeelding, waar alle nodes samen hangen en versleepbaar zijn)
http://www.cytoscape.org/screenshots/2_6_ss1.png


Probleem is: het enige waar ik aan kan denken om hier aan te beginnen, is Java2D.
Mijn ervaring met Java2D is beperkt...

Tijdens en na mijn stage heb ik mij hier wel mee kunnen bezighouden, maar het Java2D gedeelte werd vooral door men collega gecodeerd, door mij enkel getweaked.
In het project toen, tekenden we een simplistische 2D weergave van een computerchip, met al zijn pinnen rondom rond. Die pinnen (korte lijntjes) waren selecteerbaar (zodat ze in een "detailview" konden bekeken worden), en elke pin had ook een label ernaast staan. Die labels lagen vast en konden enkel aangeklikt worden waardoor een dialog opende met meer info.

Heel die bazaar, device, pinnen, en labels, kon in 1 geheel versleept worden en er kon in en uitgezoomed worden.
Om die "click regio's" (voor de pinnen en hun labels) te laten werken in alle situaties, werden die gebieden ergens bijgehouden in de code, en gewijzigd bij elke pan of zoom.

De code werd uiteindelijk tamelijk bloated en error prone. Lot's of pixel neuken....
Ik kan me niet van de indruk ontdoen dat er een andere manier bestaat om zoiets te coderen.... Bestaan er geen frameworks?

Als ik lijnen moet laten trekken en in de code moet "weten" dat er nu een lijn is getrokken tussen object 1 dat behoort tot layer 1, en object 158 in layer 3, dan moet ik toch een shitload aan arrays van Rectangles of whatever gaan bijhouden en er telkens over gaan loopen van zodra de muis beweegt om te weten wat de user aanwijst (om info te tonen bv)? Toch onbegonnen werk?

KenSpectre

Legacy Member
Ge wilt dus een soort 2D versie maken van Sketch-up in Java?
of zit ik fout?

Squealer

Legacy Member
Hmm neen, Sketchup is 3D modeling...
Ik moet niets modeleren en het moet zeker niet zo uitgebreid zijn als sketchup. Mag zelfs niet, users gaan het maar af en toe gebruiken, dus het moet toegankelijk zijn.

Ik moet zaken grafisch voorstellen op een eenvoudige 2D manier, zwart op wit, en de user moet zaken met elkaar kunnen verbinden, renamen, etcetera. Predefined objecten toevoegen, etc. Zo gebruiksvriendelijk mogelijk.
Uiteindelijk moet die representatie weggeschreven worden naar een file die bijhoudt wat er allemaal verbonden is met wat, enzovoort. (file moet uiteindelijk ook geladen kunnen worden, grafisch terug weergegeven worden, bewerkt, weer gesaved, enzovoort.)
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan