Und das ganze zur Laufzeit, also als Programm?
Du willst einen Editor fuer Swing schreiben. Das ist etwas...sagen wir mal, komplexer. Ich meine, meine Erfahrungen in der Hinsicht beschraenken sich darauf dass ich mal
WindowBuilder gesehen habe und
an einem solchen Editor im ERP Bereich mitgearbeitet habe, von dem her...also so etwas baut man in etwa so auf:
Du hast dein Fenster. In diesem Fenster hast du zwei Panele, naemlich einmal das "eigentliche" Panel, und einmal ein durchsichtiges Panel darueber welches jedes (Maus-)Ereignis abfangen kann bevor es an die "eigentlichen" Komponenten weitergeleitet wird. Wenn du editieren willst, also neue Knoepfe hinzufuegen willst, dann schaltest du das obere Panel ein und faengst saemtliche Ereignisse ab. Dann kannst du im oberen Panel zum Beispiel pruefen ob ein Knopf angeklickt wurde, und wenn ja ob dieser gezogen wir oder nicht und diesen dann neu positionieren basierend darauf. Gleichzeitig kannst du dann auch das Drag'n Drop abfangen in diesem oberen Panel und dann die Logik fuer den Knopf entpsrechend "konfigurieren". Das funktioniert relativ einfach weil wenn ein Ereignis auf deiner "Editieren"-Ebene passiert, dann gehst du mit diesen Koordinaten in dein "eigentliches" Panel und laesst dir die Komponente auf den Koordinaten geben, dann kannst du damit etwas machen.
Du kannst es auch ohne eine solche zweite Ebene machen, aber dann musst du alle Komponenten "hooken" damit du die Ereignisse alle im Editieren-Modus bekommst, das erscheint mir jetzt etwas komplizierter.
Persistieren kannst du das in einem dir absolut beliebigen Format, also da jetzt sowohl INI als auch XML oder JSON, das spielt keine Rolle. Theoretisch kannst du auch ueber die Standard Serialisierung von Java gehen, aber davon hoert man eigentlich relativ wenig und noch weniger gutes. Theoretisch koenntest du auch so etwas wir
Kryo einsetzen, da weisz ich aber gerade nicht wie sich das mit Ereignissen und Logik verhaelt und wie man die dann am besten speichert.
Es gibt da auch noch
JFormDesigner der so etwas macht, und die haben wohl auch
eine Bibliothek die so etwas macht, aber das habe ich heute zum ersten mal gesehen.
Ein anderer, vielleicht viel einfacherer Weg, ist wenn du dir einen einfachen "Editieren Dialog" anlegst, wo man zum Beispiel einfach in einer Tabelle alle notwendigen Daten erfasst und du dann daraus einfach die Oberflaeche aufbaust. Nicht ganz so komfortabel, aber definitiv einfacher.