jLable: "Progress-Image" (animiertes gif) ein- bzw. ausschalten

Havoc<>

Mitglied
Hallo zusammen,

ich möchte in mein Programm ein Bild einbauen, dass den Benutzern anzeigt das es gerade arbeitet. Leider weiß ich den Fachbegriff für solche "Progress-Images" nicht, aber ich hoffe ihr wisst was gemeint ist.

Nun meine Frage:
Ich möchte dieses Image anzeigen, bevor mein Programm anfängt etwas zu berechnen. Mein erster versuch sieht so aus:

Java:
  private void jbExecuteActionPerformed(java.awt.event.ActionEvent evt)                                          
  {                                              
    if (getConnectState)
    {
      jlLoading.setIcon(new javax.swing.ImageIcon("/home/jens/Documents/loading6backupbackup.gif"));
      executesql();
      jlLoading.setIcon(null);
    } else
    {
      jbConnectActionPerformed(null);
      executesql();
    }
  }


Das Problem: Das Bild wirs erst angezeigt, wenn "executesql()" bereits durchgelaufen ist.

Ich habe es auch schon mit jlLoading.repaint() und .updateUI() versucht, aber das funktioniert auch nicht.

Kann mir vielleicht jemand sagen wie man 1. so ein Bild nennt und 2. wie ich das Problem in den Griff bekomme?

Vielen Dank im Voraus.

Gruß Jens
 
Hallo Kangaroody,

ich glaub wir haben aneinander vorbei geredet.
Ich möchte einfach nur ein JLabel mit einem GIF versehen, bevor ich eine Aktion durchführe. Dafür brauch ich doch nie im Leben mehr als einen Thread?!

Hat vielleicht noch jemand eine Idee wie ich das bewerkstelligen kann? Das GIF wird einfach über .setIcon() nicht vor dem executesql() angezeigt. Vielleicht kann mir ja jemand sagen, wie ich das "forcen" kann.

Wie gesagt: .updateUI() und .repaint() auf das JLable und das darunterliegende Panel haben nicht geholfen.

Danke!

Gruß Jens
 
soweit ich weiß, wird der wechsel zwischen den gif-einzelbildern von dem thread gesteuert, in dem du auch das imageicon erstellst. wenn du in dem thread ein sql statement absetzt, kann er dein icon aber nicht mehr updaten, da statement-executions atomar sind. zumindest in swt war das so. versuchs einfach mal und sag mir bescheid, obs läuft.
wenn du kein statement absendest wird das icon aber schon korrekt angezeigt oder?
 
Zuletzt bearbeitet:
Das Problem ist, das das Icon gar nicht angezeigt wird, bevor das executesql() ausgeführt wird. Gehen wir einfach mal davon aus, ich möchte nur ein Bild anzeigen, bevor ich den SQL ausführe, dann müsste das ja auch gehen (ohne Thread). Wie kann ich Java dazu bringen, das Bild auf jedenfall anzuzeigen?

Gruß Jens
 
Zurück