SWT - Inhalt einer Shell erst nach Größenänderung vorhanden

Status
Nicht offen für weitere Antworten.

TobU

Mitglied
Hallo an alle,

ich habe eine Applikation geschrieben, deren GUI ich mit Hilfe von SWT realisiere.
Nun möchte ich ich über die Menubar, über einen Menüpunkt ein neues Fenster öffnen, in dem auch etwas stehen soll. (in meinem Fall wäre das über das Menü "Hilfe" den Menüpunkt "Hilfe").

Ich rufe das neue Fenster folgendermaßen auf:
Code:
MenuItem hilfeItem = new MenuItem(hilfemenu, SWT.PUSH);
hilfeItem.setText("Hilfe");
hilfeItem.addListener(
		SWT.Selection, new Listener() {
			public void handleEvent(Event e) {
				new HelpShell(display);
			}
		}
);

Die Klasse der HelpShell sieht folgendermaßen aus:
Code:
public class HelpShell {

	private Shell 		helpShell   = null;
	private Composite   helpComp = null;
	
	public HelpShell(Display helpDisplay) {

		helpShell = new Shell(helpDisplay);
		helpComp = new Composite(helpShell, SWT.NONE);

		helpShell.setText("Hilfe");
		helpShell.setSize(320, 240);
		helpShell.setLayout(new FillLayout());

		FillLayout helpLayout = new FillLayout(SWT.HORIZONTAL);
		helpComp.setLayout(helpLayout);

		Label label = new Label(helpComp, SWT.CENTER);
		label.setText("Hilfe");

		helpShell.open();
	}
}

Das Problem hierbei ist, dass das Label in der HelpShell erst zu sehen ist, nachdem ich die Fenstergröße manuell ändere.
Ich habe schon mit helpShell.redraw(); herumprobiert und auch verschiedene Layouts ausgetestet. Aber bis jetzt habe ich es nicht hinbekommen, dass der Text in der neuen Shell sofort zu sehen war.
Ich denke nicht, dass das etwas besonderes ist, aber ich finde einfach meinen Fehler nicht.

Ich hoffe ihr könnt mir weiterhelfen.


Mit freundlichen Grüßen,

TobU
 

byte

Top Contributor
Ich würde die Funktionalität im Menü nicht über einen Listener lösen. SWT bietet die Möglichkeit, dem Menü direkt Actions zuzuweisen. Das heisst, du kannst dir eine HelpAction schreiben (extends Action) und diese dem Menü zuweisen. In der run() implementierst Du dann die Funktionalität, also das Öffnen des Help Fensters.

Das Ganze hat verschiedene Vorteile: (i) bessere MVC Trennung, (ii) Du kannst bei Bedarf die Action noch an anderen Stellen verwenden (z.B. ToolBar), (iii) Actions kommen perse mit ner Menge nützlicher Features daher. Und Dein Problem sollte sich damit auch beheben.
 

chilla

Mitglied
das is ein fieses problem und wenn es einem nicht verraten wird, kommt man nicht drauf.

die klasse composite bietet die methoden layout() und layout(boolean) an.

also: helpComp.layout(true) sollte deinen wünschen entsprechen ;)

mfg,chl
 

TobU

Mitglied
Soo, habe mich jetzt mal mit beiden Möglichkeiten auseinandergesetzt und leider haben mir beide nicht weitergeholfen.

chilla hat gesagt.:
helpComp.layout(true) sollte deinen wünschen entsprechen
Danke für den Tipp, aber leider ist kein Unterschied festzustellen, wenn ich das anwende.

byto hat gesagt.:
SWT bietet die Möglichkeit, dem Menü direkt Actions zuzuweisen.
Da ich auch vorhabe, Actions an anderen Stellen zu verwenden habe ich so eine Möglichkeit gesucht. Unter Swing sind mir die Actions vertraut, aber leider habe ich unter SWT noch keine Möglichkeit gefunden, wie ich Actions benutze.

Da ich das auf jeden Fall hinbekommen möchte und es ja auch irgendwie machbar sein sollte, werde ich mal weiter probieren. Für weitere Anregungen bin ich natürlich offen.

MfG, TobU
 

byte

Top Contributor
Eine eigene Action schreiben:
Code:
public class MyAction extends Action {
	
	public MyAction() {
		this.setText("foo");
		this.setToolTipText("bar");	
                // hier kannst Du noch mehr machen, z.B. ein Image Icon setzen...
	}

	@Override
	public void run() {
		// hier kannst du implementieren, was die Aktion tun soll
	}
}

Eine MenuBar erstellen und Actions zuweisen:
Code:
public class MyApplicationWindow extends ApplicationWindow {
  ...

  @Override
  protected MenuManager createMenuManager() {
    MenuManager menuBar = new MenuManager();
    MenuManager fileMenu = new MenuManager("File");
    fileMenu.add(new MyAction());
    menuBar.add(fileMenu);
    return menuBar;
  }
}
 

TobU

Mitglied
So hatte ich das auch probiert. Man leitet ja von Action ab:
Code:
public class MyAction extends Action {
}
"Action" wurde bei mir nicht erkannt.
Aber habe jetzt herausgefunden, dass man dafür auch JFace braucht. Das hatte ich bei mir nicht mit drin. Bin am überlegen, ob ich mein Prog jetzt noch umstelle, weil das ja doch ganz hilfreich sein kann. Muss mal schauen, wie schnell ich mich da noch einarbeiten kann.

MfG, TobU


edit:
Habe das eigentliche Problem gelöst bekommen. Dass der Inhalt der Shell nicht angezeigt wird, liegt am Composite. Wenn ich ohne arbeite, funktioniert alles einwandfrei.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Kanda Sorata Inhalt einer .txt Datei einlesen und in ein Label einfügen (JavaFX) AWT, Swing, JavaFX & SWT 2
E JavaFX JavaFX - MenuItem erstellen aus dem Inhalt einer HashMap AWT, Swing, JavaFX & SWT 1
Z JavaFX Inhalt einer ViewTable durch Aktion einer Menubar ändern welche in einer anderen fxml ist AWT, Swing, JavaFX & SWT 4
E JavaFX Sehr viel und unterschiedlich Großen Inhalt auf einer "Fläche" ... Umsetzbar ? AWT, Swing, JavaFX & SWT 3
S Inhalt einer JComboBox aktualisieren AWT, Swing, JavaFX & SWT 6
C SWT Wie greife ich auf den Inhalt einer bestimmten Zeile zu? (TableViewer) AWT, Swing, JavaFX & SWT 7
L Inhalt einer table löschen AWT, Swing, JavaFX & SWT 2
C Swing Inhalt einer JTable aktualisieren und filten nach Feldern die nicht in der Tabelle sind AWT, Swing, JavaFX & SWT 3
C Swing JTable zeigt in jeder Zelle einer Reihe denselben Inhalt AWT, Swing, JavaFX & SWT 2
J Aus einer JList den Inhalt als Textdatei speichern AWT, Swing, JavaFX & SWT 15
X Swing Inhalt einer JEditorPane in Datei abspeichern AWT, Swing, JavaFX & SWT 5
R JTable Hintergrund der Zeile abhängig von Inhalt einer Zelle verändern AWT, Swing, JavaFX & SWT 3
S Inhalt einer JTable kopieren? (GlazedLists) AWT, Swing, JavaFX & SWT 2
D Inhalt einer JTable Celle auslesen AWT, Swing, JavaFX & SWT 3
P Für den Inhalt einer Zelle (aus Tabelle) STRG-C anwenden AWT, Swing, JavaFX & SWT 2
T Inhalt einer Combobox dynamisch erstellen? AWT, Swing, JavaFX & SWT 13
D Inhalt einer Canvas löschen (SWT.NO_BACKGROUND gesetzt) AWT, Swing, JavaFX & SWT 3
sliwalker Swing: Scrollbalken scrollt den Inhalt einer JList nicht AWT, Swing, JavaFX & SWT 2
E Inhalt einer JComboBox ... -gelöst AWT, Swing, JavaFX & SWT 2
E Inhalt einer JComboBox aufgrund von Eintragungen prüfen,??? AWT, Swing, JavaFX & SWT 1
E Inhalt einer Zelle eine Table in ein TextField bekommen AWT, Swing, JavaFX & SWT 24
H AWT Dialog Größe ändern - Schwarzer Inhalt beim groß ziehen AWT, Swing, JavaFX & SWT 1
Fragerjava Frame inhalt komplett löschen AWT, Swing, JavaFX & SWT 4
_user_q Wie den Inhalt vom Spinner auf Integer überprüfen? AWT, Swing, JavaFX & SWT 15
izoards JavaFX TableView mit Array Inhalt füllen AWT, Swing, JavaFX & SWT 1
B Batik: Inhalt JComponent to SVG? AWT, Swing, JavaFX & SWT 6
B JavaFX TableView-Zellen sollen automatisch so groß wie der größte Inhalt sein AWT, Swing, JavaFX & SWT 6
B JavaFX TextInputDialog: Focus auf Eingabefeldinhalt setzen und nach OK Inhalt leeren AWT, Swing, JavaFX & SWT 5
H JTabel Inhalt löschen AWT, Swing, JavaFX & SWT 1
L JDialog hat manchmal keinen Inhalt AWT, Swing, JavaFX & SWT 2
A Swing Datei lässt sich zwar speichern, aber nicht laden (Inhalt im JTextField anzeigen) AWT, Swing, JavaFX & SWT 18
ZH1896ZH JavaFX Wie kann ich die Fenstergrösse entsprechend dem Inhalt vergrössern/verkleinern AWT, Swing, JavaFX & SWT 2
K JavaFX Component Größe an Inhalt anpassen AWT, Swing, JavaFX & SWT 11
L JavaFX Pane inklusive Inhalt der Bildschirm Auflösung anpassen AWT, Swing, JavaFX & SWT 13
Hatsi09 JTextArea Inhalt verlinken AWT, Swing, JavaFX & SWT 4
L JPanel zeigt keinen Inhalt AWT, Swing, JavaFX & SWT 1
A Inhalt wechseln bei Klick auf Label AWT, Swing, JavaFX & SWT 8
C JTextField Inhalt mit Maus selektieren wenn disabled AWT, Swing, JavaFX & SWT 2
C JavaFX ProGuard -> TableView kein Inhalt AWT, Swing, JavaFX & SWT 7
D Inhalt von JTextField in MySQL speichern. Wie ? AWT, Swing, JavaFX & SWT 1
C JavaFX Inhalt eines SplitPane's durch Menü-Auswahl ändern? AWT, Swing, JavaFX & SWT 13
MaxG. JavaFX Inhalt in Tableview wird nicht angezeigt AWT, Swing, JavaFX & SWT 11
T [Neuling] Textfeld Inhalt überprüfen und falsche Stellen als msg Ausgeben AWT, Swing, JavaFX & SWT 1
gamillton Swing JComboBox mit extra Inhalt + breiteres Popupmenü AWT, Swing, JavaFX & SWT 0
M Swing Inhalt meines JTables wird falsch dargestellt AWT, Swing, JavaFX & SWT 8
P TreeView automatisch an große von Inhalt anpassen AWT, Swing, JavaFX & SWT 3
U Swing Inhalt vom Fenster wird erst durch Hovern oder Klicken sichtbar AWT, Swing, JavaFX & SWT 3
G Menübar anklicken und Inhalt entsprechend wechseln AWT, Swing, JavaFX & SWT 4
A Nach klick auf Button neuen Inhalt im gleichen Fenster AWT, Swing, JavaFX & SWT 3
Z Swing Frame wird geöffnet, aber ist ohne Inhalt AWT, Swing, JavaFX & SWT 0
A JavaFX Von Klasse auf Controller Inhalt zugreifen AWT, Swing, JavaFX & SWT 9
V JScrollBar soll weiterscrollen, wenn Inhalt von JTextArea erweitert wird AWT, Swing, JavaFX & SWT 7
K Swing Inhalt eines JPanels lesen AWT, Swing, JavaFX & SWT 3
Tausendsassa Frame öffnet aber zeigt keinen Inhalt... AWT, Swing, JavaFX & SWT 10
A BorderLayout "Center" Inhalt wechseln AWT, Swing, JavaFX & SWT 1
D Swing JTable mit Inhalt aus XML-File AWT, Swing, JavaFX & SWT 3
A JFace/SWT: ListViewer Inhalt nach Selection in zweitem List Viewer aktualisieren! AWT, Swing, JavaFX & SWT 5
S Swing Nur den sichtbaren Bereich eines TextPane mit Inhalt darstellem AWT, Swing, JavaFX & SWT 0
M ausgewählte Inhalt von ListItem inn ComboBox in der Tabelle speichern AWT, Swing, JavaFX & SWT 0
D 2D-Grafik Inhalt eines Graphics in anderes Graphics zeichnen.... AWT, Swing, JavaFX & SWT 3
JAVAnnik JavaFX Inhalt der TreeCell nicht einrücken AWT, Swing, JavaFX & SWT 1
F AWT Drucken verschluckt inhalt AWT, Swing, JavaFX & SWT 1
S Inhalt der Java-Konsole in die JTextArea AWT, Swing, JavaFX & SWT 3
TheJavaKid JTextField: Reine Domain herausfiltern, sonst Inhalt löschen AWT, Swing, JavaFX & SWT 1
A Swing JLabel/JTextField Inhalt mit JSlider verändern AWT, Swing, JavaFX & SWT 12
OnDemand Inhalt des Frames ändern AWT, Swing, JavaFX & SWT 4
S SWT TableCell mit Composite als Inhalt / Höhe der Cell/Row AWT, Swing, JavaFX & SWT 5
3 Swing JList-Inhalt als verschlüsselte Datei schreiben und lesen AWT, Swing, JavaFX & SWT 1
C Swing Anzeigeproblem mit TableModels abhängig von deren Inhalt AWT, Swing, JavaFX & SWT 10
H Swing JScrollPane mit "viel Inhalt" scrollt zu langsam (inkl. See-For-Yourself.jar :D) AWT, Swing, JavaFX & SWT 2
I JTable Spalten automatisch dem Inhalt anpassen! AWT, Swing, JavaFX & SWT 6
P Swing Dialog zeigt keinen Inhalt in Verbindung mit JFrame AWT, Swing, JavaFX & SWT 18
0 JTable Spaltenbreite automatisch an Inhalt anpassne geht nicht AWT, Swing, JavaFX & SWT 3
M EditorPane Inhalt anders als er soll! AWT, Swing, JavaFX & SWT 2
S Swing JFormattedTextField - bei nicht korrekter Eingabe Inhalt überschreiben AWT, Swing, JavaFX & SWT 5
S Swing JFormattedTextfield markiert nicht gesamten Inhalt AWT, Swing, JavaFX & SWT 4
A 2D-Grafik Panel inhalt löschen AWT, Swing, JavaFX & SWT 5
H JCombobox inhalt löschen AWT, Swing, JavaFX & SWT 17
N Swing JCombobox - PopupMenu-Inhalt mit KSKB AWT, Swing, JavaFX & SWT 2
N Swing KomponentenHöhe an html-Inhalt anpassen AWT, Swing, JavaFX & SWT 4
Nicklas2751 Table View zeigt keinen Inhalt nur leere Zeilen AWT, Swing, JavaFX & SWT 2
A JComboBox-Inhalt durch neues Array ersetzen AWT, Swing, JavaFX & SWT 2
D LayoutManager JScrollPane mit dynamischem Inhalt AWT, Swing, JavaFX & SWT 8
N Fehler Inhalt von JTable wird gelöscht AWT, Swing, JavaFX & SWT 5
H JFrame Inhalt neu aufbauen? AWT, Swing, JavaFX & SWT 8
M Beim Start von TableEditor Inhalt der Zelle markieren. AWT, Swing, JavaFX & SWT 2
T Inhalt von einem Tab an JTabbedPane größe ausrichten? AWT, Swing, JavaFX & SWT 2
TheWhiteShadow JList-Inhalt nach Änderung weg AWT, Swing, JavaFX & SWT 3
P Swing JScrollPane-Inhalt: Grösse anpassen AWT, Swing, JavaFX & SWT 6
0 JFrame zeigt Inhalt erst nach vergrößern an AWT, Swing, JavaFX & SWT 3
P AWT Wie kann mein listener den Inhalt eines anderen Textfelds ändern? AWT, Swing, JavaFX & SWT 10
L JFrame an Paint-Inhalt anpassen AWT, Swing, JavaFX & SWT 6
A Swing JScrollPane zeigt keinerlei Inhalt an AWT, Swing, JavaFX & SWT 2
H Swing JPanel Inhalt wird bei verwenden von JPopup gelöscht AWT, Swing, JavaFX & SWT 5
C SWT Textfeld mit festem und variablen Inhalt AWT, Swing, JavaFX & SWT 13
X Swing JTable stets mit gleichem Inhalt öffnen AWT, Swing, JavaFX & SWT 3
O JTable mit Inhalt drucken AWT, Swing, JavaFX & SWT 3
lumo SWT ScrolledComposite maximierter inhalt AWT, Swing, JavaFX & SWT 2
K Tabellen Inhalt ( Zelle ) Modifizieren AWT, Swing, JavaFX & SWT 2
H Swing HTML in einem JEditorPane zeilenweise hinzufügen ohne Inhalt jedes Mal neu zu laden AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben