Ä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.
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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn die Datei in Ihrem
src
Ordner dann :Haben Sie versuchen, zu aktualisieren + reinigen Sie Ihr Projekt auf diese Weise von Eclipse werden die Dateien aktualisieren Baum ?
ja, habe ich. Clean & Bauen. Ich bin mit netBeans btw
Ooooo wow.. ich kombiniert Ihre zwei Antworten, und ich arbeitete. Ihre Lösung ohne die
/
Das war nicht ich. Seltsam, es hat nicht funktioniert, weil es arbeitete in meinem Projekt ! Aber egal, das ist cool, wenn Ihr problem gelöst ist 🙂 !
InformationsquelleAutor flawyte
Sollten Sie wirklich nicht, dass slash vor dem Namen Ihres Symbol. Es arbeitet wie das.
Ich habe gerade versucht in beide Richtungen und zum ersten mal erlebte die gleiche sympthoms wie du hatte, und es funktionierte ohne Schrägstrich 🙂 Trotzdem, die beste Praxis zu tun, wie @miNde sugested.
InformationsquelleAutor gore_obsessed
Ich weiß, das ist eine alte Frage-thread, aber hatte eine Hölle von einer Zeit immer ein Symbol ersetzt, das auf einem jLabel, wenn meine app lief. Dies ist, was endlich behoben:
Ich erstellte einen neuen Ordner in der Quelle-Paket mit dem Namen images und legen Sie die Bilder in es.
In meinem Frame (main-Klasse) ich habe dieses unterhalb der initComponents-Methode:
LC-und CL -.png sind die Bilder, die ich will, als die label-Symbole.
In einer anderen Klasse habe ich noch die folgenden, wenn ich wollte, das Symbol zu ändern:
Müssen Sie die folgenden Importe:
Und fügen Sie diese zwei Erklärungen knapp unterhalb der Variablen-Deklarationen:
Hoffe, das jemand hilft die Suche im Internet nach einer Antwort.
InformationsquelleAutor Phil Longenecker