tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
4
ZUGRIFFE
1231
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Tinobee Tinobee ist offline Mitglied Bronze
    Registriert seit
    Aug 2003
    Beiträge
    45
    hallo leute, ich habe ein verständnisproblem bzgl. gui building mit swt. und zwar hab ich jetzt grad diese gui. jetzt möchte ich, dass sich alles weitere leben z.b. die darstellund eines geparsten xml files oder die abfragemaske für benutzerdaten oder der table tree immer in einem neuen composite abspiel - grad so wie bei einem install-wizard, wo wenn man auf "weiter" drückt, immer ein neuer inhalt im selben fenster erscheint.

    ich weiß aber nicht, ob das jedes mal eine neue shell ist oder ein neues composite. wenn es eine neue shell ist, von der man ja angeblich beliebig viele erstellen kann, und die ja eigentlich alle elemente beinhalten soll, wie macht man das, dass man jede neue shell, die ja in verschiedenen klassen bzw. objekten angelegt werden soll, an dem einen display "anmelden" kann? denn es darf ja nur ein display geben.

    wenn es ein neues composite ist, wie muss ich dann weiter vorgehen? brauch ich auch jedes mal eine neue shell, die das neue composite beinhaltet? wenn ja, komme ich zur vorherigen frage zurück. wenn nein, wie macht man es?

    ich wäre für anfängergerechte antworten sehr dankbar, da die tutorials und anleitungen bzgl. swt reichlich spärlich sind. vielleicht hat auch jemand ein tutorial an der hand, wo man solche erweiterten gui-fragen detailliert abhandelt?

    vielen dank schonmal im voraus!

    tinobee
    Geändert von Tinobee (25.01.08 um 17:03 Uhr)
     
    Durch gegenseitige Hilfe geht vieles oft leichter......

  2. #2
    Avatar von AlWi
    AlWi AlWi ist offline Mitglied
    Registriert seit
    Jan 2008
    Beiträge
    22
    Hallo ich bin's ...

    also, wenn Du ein neues Fenster öffnen möchtest brauchst du eine neue Shell (Dialog Shell)
    und wenn Du etwas in dem Fenster mit einbauen möchtest entweder ein neues Composite, Group, usw oder Du löst das über das Layout.
    Ganz nette Beispiele für SWT find ich immer unter
    http://www.java2s.com/Code/Java/SWT-...ce-Eclipse.htm
    oder direkt bei Eclipse mal die Widgets
    http://www.eclipse.org/swt/widgets/
    testen.
    Ich hoffe ich konnte Dir damit weiterhelfen
     
    mit freundlichen Grüßen
    AlWi

  3. #3
    Tinobee Tinobee ist offline Mitglied Bronze
    Registriert seit
    Aug 2003
    Beiträge
    45
    hallo und danke für deinen beitrag,

    die empfohlenen links sind schon in meinen bookmarks. da habe ich auch verschiedene ideen her. problem ist jedoch, dass die samples, die ich mir angesehen habe, alle eine eigne main-methode haben. ich hab meine main methode jedoch in einer eigenen klasse, die beim programmstart zuerst die gui aufruft, welche dann ihrerseits wieder alle benötigten klassen (objekte) für den ersten "aufritt" aufruft und darstellt. ich möchte die verschiedenen komponenten meiner anwendung gern objektorientiert in einzelne klassen (objekten) auslagern und stehe dabei jedes mal vor dem problem, dass wenn ich eine neue shell anlege, diese ja beim display der gui-klasse angemeldet werden muss und ich nicht weiß, wie das geht über die objektgrenze hinweg. es darf doch insgesamt nur ein display geben. dieses ist schon in meiner klasse gui angelegt. es bleibt also nach wie vor die frage, wie mache ich es richtig, 3 verschiedene klassen (benutzereingabe, tabelle, textdarstellung) mit ihren ganzen komponenten mit einer eigenen shell zu versehen (so dies der richtige ansatz ist und nicht stattdessen ein composite genommen werden muss) und diese dann bei meiner klasse gui anzumelden sprich Shell shell = new shell (display). und was hat es mit dem "parent" auf sich, das man in den snippets oft liest?

    bislang ist mir die direkte kommunikation einer shell nur gelungen, wenn sie entweder in derselben klasse vorkommt oder in einer abgeleiteten. ich seh den wald irgendwie vor lauter bäumen nicht.
    Geändert von Tinobee (28.01.08 um 11:50 Uhr) Grund: flinke finger.... zeichen fehlten ;)
     
    Durch gegenseitige Hilfe geht vieles oft leichter......

  4. #4
    Avatar von AlWi
    AlWi AlWi ist offline Mitglied
    Registriert seit
    Jan 2008
    Beiträge
    22
    Hallo ich bin's ...

    das ist alles OK und sieht ganz nach objektorientierter Programmierung aus
    Du solltest jetzt nur noch deine Objekte auch an die Unterklassen übergeben, da sie sich sonst nicht bei dem Dispplay anmelden können.
    => Hauptklasse erstellt neue Haupt-Shell (kann auch eine Dialogshell sein, z.B. Splashscreen aber erstmal eins nach dem andern)
    => Hauptshell stellt Methoden bereit um neue Shells (Dialogshell) zu öffnen.
    => An die Methoden wird als Parameter die Hauptshell übergeben oder nur das Display.
    (Du kannst auch nur die Klasse übergeben und diese dann mit einem Getter für das Display ausstatten)
    => Die Methode öffnet eine neue Shell

    Das parent (Elternteil oder Vorgänger) wie schon der Name sagt ist die Elternklasse, von der sich die Kinderklassen die übergeordneten Elemente holen können.
    In Deinem Fall also das Display.

    In Deiner Dialogshell-Klasse könnte das dann ungefähr so aussehen:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    
    public class DialogShell
    {
        private Shell dialogShell;
     
        public DialogShell(Shell hauptshell)
        {
            this.dialogShell = new Shell(hauptshell.getDisplay());
        }
     
        public void open()
        {
            this.dialogShell.setText("Dialogshell - Titelzeile");
            this.dialogShell.setSize(300, 300);
     
            this.dialogShell.open();
     
            while (!this.dialogShell.isDisposed())
            {
                if (!this.dialogShell.getDisplay().readAndDispatch())
                {
                    this.dialogShell.getDisplay().sleep();
                }
            }
     
            this.dialogShell.dispose();
        }
     
    }

    Ich hoffe ich konnte Dir damit weiterhelfen.
     
    mit freundlichen Grüßen
    AlWi

  5. #5
    Tinobee Tinobee ist offline Mitglied Bronze
    Registriert seit
    Aug 2003
    Beiträge
    45
    ich will das nicht so ganz reaktionslos stehen lassen, drum sag ich an dieser stelle erstmal: ich probiers aus und gebe demächst nochmal rückmeldung....

    vorerst danke für den tip!

    gruß, tino
     
    Durch gegenseitige Hilfe geht vieles oft leichter......

Ähnliche Themen

  1. Antworten: 0
    Letzter Beitrag: 28.07.10, 15:04
  2. Entweder Hintergrundfarbe oder Buttons, ich möchte beides
    Von Nord-Süd-Richtung im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 1
    Letzter Beitrag: 08.11.09, 19:15
  3. SQL DISTINCT oder GROUP BY oder beides
    Von Hannibal im Forum Relationale Datenbanksysteme
    Antworten: 4
    Letzter Beitrag: 18.04.08, 10:12
  4. Software oder Hardware Firewall (oder beides) ?
    Von MC-René im Forum Security (Viren, Trojaner, Spam)
    Antworten: 9
    Letzter Beitrag: 15.05.06, 11:00
  5. internet oder firewall,beides zusammen nich
    Von elsi im Forum Linux & Unix
    Antworten: 4
    Letzter Beitrag: 18.03.05, 18:08