Zum Inhalt springen

Frage zu GUIs mit SWT


geloescht_JesterDay

Empfohlene Beiträge

Hallo,

ich hab meine erste Oberfläche mit SWT gemaht, naja sagen wir angefangen.

Ist ja auch gar nicht so schwer, aber wie kann ich zur Laufzeit weitere Komponenten zur Oberfläche hinzufügen?

Ein ganz simples Beispiel zeigt mein Problem:


public static void main(String[] args) {

	Display display = new Display();

	Shell shell = new Shell(display);

        shell.setLayout(new RowLayout());

	new Label(shell, SWT.PUSH).setText("bla");


	shell.open();


	new Label(shell, SWT.PUSH).setText("bla");

}

Das erste Label wird angezeigt, das zweite nicht.

Ich will bei meinem Programm aber Inhalte zur Laufzeit erst erzeugen bzw anzeigen. Da gibt es doch bestimmt einen Trick wie man das hinbekommt, oder?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich bin kein Guru, daher kann ich keine Garantie auf meine Aussage geben, aber ich meine, wenn du die Shell erstmal geöffnet hast, können keine Widgets mehr hinzugefügt werden.

Du hast aber die Möglichkeit, die Sichtbarkeit deiner Komponenten über Methoden wie label.setEnabled (wenns nur ausgegraut werden soll) oder setVisible zu beeinflussen, vielleicht hilft dir das ja weiter?

Gruß!

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich bin kein Guru, daher kann ich keine Garantie auf meine Aussage geben, aber ich meine, wenn du die Shell erstmal geöffnet hast, können keine Widgets mehr hinzugefügt werden.

Ja, so kam mir das auch vor. Aber das wäre ja sehr komisch. Bei keiner anderen Sprache ist das so und ich sehe erstmal hier auch keinen Grund warum man einem angezeigten Fenster nichts mehr hinzufügen kann.

Das hilft mir nur sehr bedingt. Eigentlich sollten die Komponenten nach den Nutzereinstellungen angezeigt werden bzw neue hinzugefügt werden und entfernt, zur Laufzeit.

Also keine einfachen Labels oder ähnliches, schon etwas komplexer dann ;)

Aber bin jetzt eh am überlegen das nich doch anders zu gestallten. Dennoch finde ich dieses Verhalten komisch. Das ist ja jetzt kein so absonderlicher Wunsch...

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 4 Wochen später...

Hab eine Lösung gefunden, falls es jemand interessiert:


display = new Display();

shell = new Shell(display);

new Label(shell, SWT.PUSH).setText("bla");

shell.open();

new Label(shell, SWT.PUSH).setText("blubb");

shell.layout();

Also ein shell.layout() muss aufgerufen werden, damit die Änderungen angezeigt werden.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...