ERLEDIGT
NEIN
NEIN
ANTWORTEN
4
4
ZUGRIFFE
1231
1231
EMPFEHLEN
-
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!
tinobeeGeändert von Tinobee (25.01.08 um 17:03 Uhr)
Durch gegenseitige Hilfe geht vieles oft leichter......
-
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
-
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......
-
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
-
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ß, tinoDurch gegenseitige Hilfe geht vieles oft leichter......
Ähnliche Themen
-
composite erst sichtbar wenn shell vergrößert/verkleinert oder verschoben wird
Von tyr im Forum JavaAntworten: 0Letzter Beitrag: 28.07.10, 15:04 -
Entweder Hintergrundfarbe oder Buttons, ich möchte beides
Von Nord-Süd-Richtung im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 1Letzter Beitrag: 08.11.09, 19:15 -
SQL DISTINCT oder GROUP BY oder beides
Von Hannibal im Forum Relationale DatenbanksystemeAntworten: 4Letzter Beitrag: 18.04.08, 10:12 -
Software oder Hardware Firewall (oder beides) ?
Von MC-René im Forum Security (Viren, Trojaner, Spam)Antworten: 9Letzter Beitrag: 15.05.06, 11:00 -
internet oder firewall,beides zusammen nich
Von elsi im Forum Linux & UnixAntworten: 4Letzter Beitrag: 18.03.05, 18:08





Zitieren
Login





