Alle Unterdialoge schliessen (swing)



  • hi

    kennt jemand ne einfache möglichkeit wie ich alle dialoge eines JFrame schließen kann ? die dialoge haben als "Oberinstanz" (weiss nicht wie ich das sonst nennen soll ;)das mainFrame. Jeder Dialog entspricht dabei einer eigenen klasse.es könne auch mehrere dialoge einer klasse existieren. dialoge sind abgeleitet von JDialog. any idea ? thx.

    pain



  • Für eine MDI-Anwendung (JDesktopPane, JInternalFrame) geht das relativ einfach. Für eine Applikation, die von sich aus amodale Dialoge öffnet nicht ganz ohne weiteres. Was du bräuchtest wäre eine Art Broadcast an alle Fenster der Applikation mit dem Befehl sich zu schließen. Das geht nur durch zusätzliche Programmierung. Jedes Fenster muss sich hierfür in eine Liste eintragen mit Angabe des parents. Dann musst Du eine Routine schreiben, die nach Angabe des Parents diese LIste durchläuft und bei jedem positiven Vergleich ein dispose() an den jeweiligen Dialog schickt.



  • jo, das war meine alternative falls es kein befehl gibt 😉
    damit wir uns nicht missverstehen, ich habe ein normales mainFenster:

    class Main extends JFrame

    die dialoge sehen so aus:

    DialogRunAnimation extends JDialog

    public DialogRunAniamtion(Main mainInst){

    super(mainInst)
    ......
    }

    nur damit wir uns nicht missverstehen, bei obiger konstellation gibt es kein "schliesse alle unterdialoge(hier zb. DialogRunAnimation)" oder ähnliches ?

    wenn dem so is muss ich die dialoge ja in irgendeine Datenstruktur packen um zu verwalten. was nimmt man da am besten für ? so spontan fällt mir eine hashtabelle und ein array ein.aber veilleicht gibt ja nochwas viel besseres ?
    danke jedenfalls erstmal.

    pain

    ps: wenn ich aus den Dialogen Frames machen ginge da was einfacher ? müßte ja nur konstruktur und die extends umbasteln ? wäre das MDI oder verpeil ich grad wieder was ? thx

    [ Dieser Beitrag wurde am 20.01.2003 um 11:44 Uhr von pain_md editiert. ]



  • Ja Hashtable klingt gut. Ob es ein Array sein muss ... na ja ... ich würds in einen Vector packen.



  • kurze Frage kurze Antwort: Hab noch wie was mit Vektoren gemacht und kein Plan davon. Sollte ich die unbedingt verwenden (dann muss ich halt was neues lernen) oder is Hashtable auch ok ? (hauptsächlich wegen speed, es sind durchaus ein paar 100 Fenster).

    kurze Frage kurze Antwort: Hash oder Vektor oder egal ? thx.

    pain



  • Du brauchst beides. Die Hashtable um deine Fenster-Gruppen erstellen zu können und den Vector um eine Liste von Fenstern zu speichern, die einer Gruppe angehören also Vector in Hashtable

    Hashtable

    +---------------------------------------------+
    | KEY             | Value                     |
    +---------------------------------------------+
    | mainWindow      | Vector{Dlg1, Dlg2, Dlg10} |
    | colorChooser    | Vector(Dlg0815, Dlg4711}  |
    |     ...         |           ...             |
    +---------------------------------------------+
    

    Die Verwendung von Vector ist ziemlich einfach: Du addst immer nur und holst per elementAt(index) etwas raus.



  • hm, wenn vector so einfach sein sollte wie die hashtable mach ich mir keine sorgen :). dankschön

    pain


Anmelden zum Antworten