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.

Obwohl EDT - anzeige wird nicht aktualisiert

Empfohlene Antworten

Veröffentlicht

hallo,

also ich lasse einen swingworker ein paar aufgaben erledigen, am ende soll dann kurz im ladefenster ein label eingeblendet werden, das anzeigt: "Beendet", und der thread wird 2 sekunden unterbrochen.

der entsprechende code, der sich auf die änderung der oberflöäche bezieht, ist in der done()-methode des workers, die im EDT ausgeführt wird.

ich habe auch sicherheitshalber en abfrage gemacht, liefert true, also ist im EDT. ich habe es auch manuell versucht, um fehlprogrsmmierung meinerseits auszuschließen.

warum wird die anzeige trotzdem nicht aktualisiert, wenn ind er done-methode soetwas steht wie:

jLabel2.setVisible(true);

?

lg

hallo, ja das habe ich auch schon versucht. Allerdings sollte doch bei


jLabel2.setVisible(true);

das sowieso neu gezeichnet werden, oder? hier ist mal der code, bei klick wird halt die actionPerformed aufegrufen. Season ist ne Fachkonzeptklasse, ProgressView ist einfach s ein fenster mit progressbar und nem Label "beendet", das aber unsichtbar ist.
public void actionPerformed(ActionEvent evt) 

				{

[...]


newSeason = new Season(1,teams.toArray(new String[18]));

view = new ProgressView(identity,newMainAppFrame());				

new SeasonPlanWorker(parent, newSeason, view).execute();

// der worker berechnet für ne teamliste einen saisonspielplan.

[...]

}


// hier der code aus dem worker


public class SeasonPlanWorker extends SwingWorker<Void, Void>

{

  private Season season;

  private ProgressView view;

  private final TableManagerDialog diag;



	public SeasonPlanWorker(TableManagerDialog main, Season s, ProgressView view)

	{

		super();

		this.season = s;

		this.view = view;

		this.diag = main;

	}


	@Override

	protected Void doInBackground() throws Exception

	{

    view.setVisible(true); // die arbeit beginnt: ladefenster wird angezeigt

		SeasonPlanner.createPlan(season);

		return null;

	}


	@Override

   protected void done()

   {

		System.out.println("Ende"); // überprüft: wird ausgeführt

System.out.println( SwingUtilities.isEventDispatchThread() ); // wie erwartet true


view.taskEnded(); // enthält nur die sichtbarmachung des labels "Beendet"

[...] //  <-- enthält nur einen try-catch-block, der den thread 1 sekunde anhält, damit man das erschienene label noch ne sekunde sieht.

diag.setVisible(false); // dann wird der dialog unsichtbar gemacht, mit ihm auch das ladefenster


   }


}


				 

ich hoffe, das hilft, danke für die mühe...

Bearbeitet von danvan

ok, danke. Darf ich den Grund erfahrren, nützt ja nichts, die Erkenntnis einfach auswendig zu lernen ;)

ich probiere es mal damit...

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.