Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Frage zu GUIs mit SWT

Empfohlene Antworten

Veröffentlicht

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?

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ß!

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...

  • 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.

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.