Ändern jLabel-icon

Wie es scheint bin ich nicht der einzige mit dieser Frage, aber ich kann nicht finden, eine Antwort, die das problem löst.

Erstellte ich eine Label und weisen eine Icon mit WYSIWYG interface designer.
Jetzt möchte ich das Symbol ändern sich dynamisch während der Laufzeit.

Die Logik Weg wäre, wie hier (mein Erster Versuch) :

ImageIcon newIcon = new ImageIcon("SomePath");
jLabel1.setIcon(newIcon); 

Wenn ich dieses Symbol einfach verschwindet von der Schnittstelle, also habe ich es gegoogelt und jemand meinte zu "flush" - Symbol, was auch immer das bedeutet, ich habe es versucht :

ImageIcon newIcon = new ImageIcon("SomePath");
newIcon.getImage().flush();
jLabel1.setIcon(newIcon);

Immer noch das gleiche problem.. Das Symbol verschwindet.

Was mache ich falsch ?


Update (Full-Methode) :

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
attempted = myEngine.Attempt('q', word);
if(attempted)
  {
      this.jTextArea1.setText(myEngine.ChangeEncrypt('q', word, this.jTextArea1.getText()));    
  }
  else
  {
      JOptionPane.showMessageDialog(null,"The Letter Q is not in the word", "Error",JOptionPane.WARNING_MESSAGE);
      jButton1.setEnabled(false);
      life ++;
      ImageIcon newIcon = myEngine.UpdatePicture(life);
      newIcon.getImage().flush();
      jLabel1.setIcon(newIcon);
  }

Dies ist die UpdatePicture Methode :

public ImageIcon UpdatePicture(int life)
{
  ImageIcon emptyIcon = new ImageIcon();
  if (life == 0)
  {
       ImageIcon iconZero = new ImageIcon("/hang0.gif");
       return iconZero;
  }
  if (life == 1)
  {
      ImageIcon iconOne = new ImageIcon("/hang1.gif");
      return iconOne;
  }
  if (life == 2)
  {
      ImageIcon iconTwo = new ImageIcon("/hang2.gif");
      return iconTwo;
  }
  if (life == 3)
  {
      ImageIcon iconThree = new ImageIcon("/hang3.gif");
      return iconThree;
  }
  if (life == 4)
  {
      ImageIcon iconFour = new ImageIcon("/hang4.gif");
      return iconFour;
  }
  if (life == 5)
  {
      ImageIcon iconFive = new ImageIcon("/hang5.gif");
      return iconFive;
  }
  if (life == 6)
  {
      ImageIcon iconSix = new ImageIcon("/hang6.gif");
      return iconSix;
  }

  return emptyIcon;

}

Nicht, dass der ganze code war notwendig, aber trotzdem könnte es helfen.

Leben-variable bei 0 beginnt.
Ich habe überprüft, und in der UpdatePicture es trifft die "/hang1.gif"; und gibt es zurück.

Wenn Sie sagen, dass es verschwindet, meinst du, dass es zeigt, bis zu einem gewissen Punkt und dann verschwindet? Oder nie auftaucht? Außerdem, kannst du posten, wo du diesen code aufzurufen?
Es nie zeigen. Ich meinte den Standard, verschwindet der andere don t show up. Ja, ich werde aktualisieren mit mehr code
interessant flush() arbeiten in den meisten Fällen und für hohe Frequenz, Menge der Perioden, die vor Sekunden, sind Sie in der Lage zu zeigen, jedes Bild ein mal, nicht das laden von Bildern zur Laufzeit laden, die als lokale variable, dann Symbol ändern (und wenn die Sünde sich nicht verändert zu rufen flush())
AFAIK Icon, ImageIcon nie wieder Ausnahmen (standardmäßig), um auf null zu testen, sind Sie in der Lage, den test für null-Wert, da Ihr Weg (glaube ich) nicht richtig
Getestet habe ich Hinzugefügt und ein Symbol wie eine lokale variable und es funktioniert nicht, es bleibt leer

InformationsquelleAutor phadaphunk | 2012-11-07

Schreibe einen Kommentar