GUI - KLassendesign



  • Hallo!

    Mein Programm hat eine Hauptklasse welche mit einem Server kommuniziert und alle relevanten Methoden bietet. ZU dieser Klasse habe ich nun eine gui gebastelt. Das Toplevel widget soll sozusagen die Schnittstelle zu der Haupklasse bieten. Jetzt ruft dieses Toplevel windoe allerdings mehrer Fenster auf (hintereinander also hierarchisch) diese müssen also ab und zu eine Aktion anstossen.

    Wie wüdet ihr das machen:

    - Alle GUI-Klassen haben zuriff zur hauptklasse

    - alle gui KLassen müssen über das Toplevel widget gehen. wie macht man das am schönsten ohne immer tausende Parameter rum übergeben zu müssen?

    - Was haltet ihr von einer zentralen Datenstruktur in die jede Klasse reinschreibt und die Hauplklasse bzw das Toplevelwidget dann darauf pollt und die Infos ausliest.

    Das ganze ist nicht ganz trivial weil die gui ja event basiert funktioniert es also auf eine Anfrage (neues Fenster) keine direkte Antwort (rückgabe) gibt. da immer mit blockierenden Methoden zu arbeiten ist irgendwie auch nicht so schön..



  • hi

    schau mal ein paar thread zurück. da hab ich ein ähnliches posting. fast gleiche gleiche problematik. also dialoge werden immer von JDialog abgeleitet.
    im konstruktor : super(ToplevelFrame)
    wenn du das ganze verwalten willst bieten sich hashtabellen und vektoren an. Cegniz hatte mir da was geschriebn. bin grad dabei das umzusetzen. grober ablauf: schmeiss alle dialoge in die hashtabelle wobei der schlüssel dem namen entsrpechen sollte. damit kontrollierst du das.
    mit der parameterübergabe kann man ein wenig faken. ich über gebe an unterdialoge oft this (also ne art zeiger aufs main) damit hab ich alles was ich brauche.
    zum design. du solltest so logisch in weiträumrig trennen wie möglich. sprich jede funktion die sich separieren lässt in einen eigenen dialog. JEDER DIALOG HAT EINE EIGENE KLASSE !!! ganz wichtig, sonst verlierst du den durchblick. alles was dann dieser dialog macht STEHT IN DIESER KLASSE. die Parameter ausn main bekommste über die instanz vom KOnstruktor. soweit ok ? wenn nich frag nochmal. mal schaun wie meine Lsg aussieht.

    pain



  • hi danke!

    Original erstellt von pain_md:
    **hi

    schau mal ein paar thread zurück. da hab ich ein ähnliches posting. fast gleiche gleiche problematik.**

    Ich weiss nicht ganz ob wir die gleiche Problematik haben. Wie heisst den der Thread?
    **

    mit der parameterübergabe kann man ein wenig faken. ich über gebe an unterdialoge oft this (also ne art zeiger aufs main) damit hab ich alles was ich brauche.

    **
    Ja diese Möglichkeit habe ich oben schon angesprochen. Ich wollte allerdings gerne eine Schnittstelle zw der main class und dem Toplevel da ich es unschön finde wenn alle Unterframes unkontrollierbar auf die main classe zu greifen können. Es gäbe dann viele Verbindungen und ich wollte es eigentlich auf eine Schnittstelle minimieren. Nur einer sollte das Recht haben mit dem chef zu kommunizieren
    **

    zum design. du solltest so logisch in weiträumrig trennen wie möglich. sprich jede funktion die sich separieren lässt in einen eigenen dialog.

    **
    Das versuche ich 🙂 Ich arbeite ehrlich gesagt eher mit Frames. Die haben natürlich alle Ihre eigene Klasse. Die Dialoge sind eigentlich nur fü die exceptions da. Hiefür habe ich mir eine schowExceptionDialog Klasse geschrieben, welche die Exception übergeben bekommt und dann selbst entscheided wie der dialog aussiehtt.

    Mir geht es haptsächlich darum mit welchen Rechten die einzelnen frames ausgestattet werden und wie man am geschicktesten Informationen austauscht, oder habe ich Dich etwas falsch verstanden?

    [ Dieser Beitrag wurde am 22.01.2003 um 12:35 Uhr von blauton.com editiert. ]



  • hi

    hm, könnte sein das wir uns vielleicht missverstanden haben. soweit ich das verstehe willst du ne art interface zwischen ChefMain und untermains und alle komunikaktion soll über diesen weg laufen.aaalso eh wir uns wieder mißverstehen ;): du willst unbedingt Frames haben , richtig ? gut.
    ich weiss jetz nicht so genau ob es bei Frames auch sowas wie OberFrame gibt.
    ich handle das alles mit dialogen ab.da verschwinden viele probs. erstens muss über super das ChefFrame angegeben werden -> rangordnung ist geklärt. ja und dann gibts mit private und protected die möglichkeit des sperrens. wenn ich dann die dialoge über die main aufrufe läuft ab dann alles über die dialogklasse. ich versuch grad zu verstehen warum du da noch eine zwischeninstanz brauchst. gut vielleicht ist das bei Frames nicht ganz so.

    was hälst du eigentlich davon dir ein mein GUI zu basteln, wo nur der swingKram drinsteht. dann könntest du dir eine Dummyklasse bauen wo alle funktionen des main drin sind. da die dialoge/Frames ihre eigenen klassen haben dürfte das zumindest ein ansatz für eine schnittstelle sein. ansonsten wüßt ich jetz nich was du meinst.

    zur not müßtes du mal unter dem Topic MDI schauen.da ghets um mehrere Frames.aber wie dat da genau läuft, hm, ich machs wie gesagt anders.
    vielleicht stellst du sonst mal ne ganz konkrete Frage.is bis jetz alles sehr allgemein, deswegen kann ich auch nur sehr allgemein antowrten ;).
    meld dich einfach nochma.

    pain

    ps: der thread heist: alle unterdialoge schließen(swing)

    [ Dieser Beitrag wurde am 22.01.2003 um 14:01 Uhr von pain_md editiert. ]



  • hallo also ich habe nur so halbwegs verstanden was du da im Mitteltei gemeint hast. Ich habe eine MAIN Klasse. diese soll sich mit der MainGUI Klasse unterhalten . es gibt allerdings noch ein paar andere frame Klasse und diese sollten sich über die MainGUI Klasse mit der MAIN Klasse unterhalten. Nur wie mache ich das am besten? ich finde es irgendwie unschön immer referenzen untereinander zu übergeben und jeder kann mit jedem sprechen das wird zu durcheinander und kleine änderungen machen alles Kaputt wenn es keine schnitstelle gibt. 🙂


Anmelden zum Antworten