Labo GUI's 09-10: Java Swing project
Labo GUI's 09-10: Java Swing project
Opdracht: maak een diagram-editor, analoog aan de modeloplossing DiagramEditor.jar.
Functionaliteit
Je kunt een knoop toevoegen door dubbel te klikken
Je kunt de tekst in een knoop bewerken door dubbbel te klikken in de knoop
Je kunt knopen verslepen
Je kunt twee knopen verbinden door te slepen met de rechtermuisknop. De verbindingen worden getekend van en naar het centrum van beide knopen. Als de knoppen daarna verplaatst worden, volgen de verbindingen.
worden
Je kunt een knoop of verbinding selecteren door er op te klikken
Als de muis boven een knoop of verbinding komt wordt die 'opgelicht'
Rechtsklikken geeft een context-menu
Je kunt een geselecteerde knoop of verbinding wissen via de delete-knop, via het contextmenu of via het edit-menu
In het edit-menu kun je de achtergrondkleur van het blad instellen.
In het edit-menu kun je pagina-instellingen opgeven: breedte, hoogte.
Opm. knopen en verbindingen kunnen buiten de "pagina" vallen.
In het edit-menu kun je ook het diagram volledig wissen ("clear")
In het file-menu kun je een diagram bewaren en openen. Eens bewaard verschijnt de naam in de titel en kun je opslaan
De toolbar is versleepbaar.
De toolbar bevatten knoppen (met pictogrammen en help-tekst) voor bewaren en inladen.
Je kunt het diagram bewaren en inladen via het File-menu of via de knoppen op de toolbar. Dit gebeurt d.m.v. serialisatie.
Na het bewaren wordt de save-actie gedisabled (en krijgt het frame een titel). Als er iets wijzigt aan het diagram
wordt de save-actie weer ge-enabled.
Je kunt de zoomfactor ingeven via een spinner (minimaal 1!).
Als het diagram groter wordt dan het venster, dan verschijnen er scrollbars
Het hele frame is resizable.
Linker- en rechterpaneel zijn apart resizable
In het properties-paneel kun je de eigenschappen van de geselecteerde knoop of verbinding editeren.
Beide hebben een eigenschap "kleur" en een eigenschap "lijndikte".
Knopen hebben tevens een eigenschap "tekst".
Algemene opmerkingen:
zorg er in dialoogvensters en propertiespaneel voor dat "cancel" of "esc" correct werkt.
Maak gebruik van actieklassen (implementeren javax.swing.Action)
Hou er bij het ontwerp rekening mee dat er nog andere objecten zouden kunnen bijkomen,
met andere properties. M.a.w. zorg voor een generieke aanpak, waarbij elk tekenobject een
aantal properties heeft (je kunt hiervoor bv. een Map gebruiken)
|