jLabel wird nicht aktualisiert

oomworld

Mitglied
Hallo liebe JavaFans :)
das ist mein erster Post hier im Forum :D und freue mich euch kennenzulernen und natürlich auch auf eure Hilfe. :oops:

Seit ca. Monate bringe ich mir Schritt für Schritt das Java-programmieren bei.
Ich programiere am Anfang kleine dinge, um auch mal Erfolg zu haben und das Erlernte anzuwenden.

( Ich programmiere mit NetBeans 6.8 )

Ich habe hier ein JForm mit einem Label.
Grundsätzlich weiß ich wie ich das Label verändern kann ( mit Buttons ) etc. zu jLabel2.setText.

Mein Vorhaben:
in einem Fenster steht Holz = 10 jLabel2 ( "Holz" und "10" sind 2 verschiedene Labels )
Der Wert "10" wird alle 5 Sekunden um 5 erhöht, dazu habe ich TimerTask benutzt und zwei Klassen geschrieben die das bewerkstelligen.

Auf jedenfall habe ich das gefühl das die Klassen nicht ausgeführt werden, obwohl der Wert "10" aber aus der Klasse herausgelesen wird.


Hier mein Script:

jLabel ausschnitt:
Meine Problemzone Zeile 73 - 84
Java:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * gamexEngine.java
 *
 * Created on 07.01.2010, 16:09:29
 */

package gamex;
import java.util.*;

/**
 *
 * @author oOm
 */
public class gamexEngine extends javax.swing.JFrame {

    /** Creates new form gamexEngine */
    public gamexEngine() {
        initComponents();
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        jLabel1 = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jLabel1.setText("Holz");

        jLabel2.setText("jLabel2");
        jLabel2.addPropertyChangeListener(new java.beans.PropertyChangeListener() {
            public void propertyChange(java.beans.PropertyChangeEvent evt) {
                jLabel2PropertyChange(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(172, 172, 172)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jLabel2)
                    .addComponent(jLabel1))
                .addContainerGap(194, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(22, 22, 22)
                .addComponent(jLabel1)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jLabel2)
                .addContainerGap(30, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>                        

    private void jLabel2PropertyChange(java.beans.PropertyChangeEvent evt) {                                       

timerEngine booM = new timerEngine();
int boomA = booM.holzA;

String wooD;

wooD =(new Integer(boomA).toString());

        jLabel2.setText(wooD);

    }                                      

    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new gamexEngine().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify                     
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    // End of variables declaration                   

}

Klasse1 Name (timerEngine)
Hier wird Holz um 5 erhöht.
Java:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package gamex;
import java.util.*;

/**
 *
 * @author oOm
 */
public class timerEngine extends TimerTask {

    //Eigenschaften

    int holzA = 10;

    @Override public void run()
  {

holzA = holzA + 5;

  }

}

Klasse2 Name ( TimerCfg )
Hier wird die Klasse timerEngine alle 5 Sekunden ausgeführt
Java:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package gamex;
import java.util.*;
/**
 *
 * @author oOm
 */
public class timerCfg {

    {
    Timer timer = new Timer();

    // Start in 2 Sekunden und läuft alle 5 Sekunden
    timer.schedule( new timerEngine(), 2000, 5000 );

  }

}

vielen Dank für eure Unterstützung
oomworld
 

Michael...

Top Contributor
zum einen wird die TimerTask nirgends im Hauptprogramm gestartet und zum anderen bringt es nichts nur eine Variable hochzuzählen, wenn sich eine Textanzeige ändern soll.

Die TimerTask Klasse muss eine Referenz auf das Label besitzen, um es zu aktualisieren - oder sonst irgendwie drauf zugreifen können.

Versuch's doch mal erst mit einem Label ohne irgendwelche Listener - <pers. Meinung>und eventuell auch ohne GUIBuilder</pers. Meinung>
Einfach nur eine Label im Frame eine Zählvariable und ein Thread/TimerTask
 

Michael...

Top Contributor
Hier eine kleine Demo
Java:
import java.awt.BorderLayout;
import java.util.Timer;
import java.util.TimerTask;

import javax.swing.JFrame;
import javax.swing.JLabel;

public class TimerDemo extends JFrame {
	private JLabel label;

	public TimerDemo() {
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setBounds(0, 0, 200, 60);
		label = new JLabel("", JLabel.CENTER);
		this.getContentPane().add(label, BorderLayout.CENTER);

		new Timer().schedule(new MyTimer(label), 0, 1000);
		this.setVisible(true);
	}

	public static void main(String[] args) {
		new TimerDemo();
	}
}

class MyTimer extends TimerTask {
	private JLabel label;

	private int value;

	public MyTimer(JLabel label) {
		this.label = label;
		value = 0;
	}

	public void run() {
		value += 5;
		label.setText("" + value);
	}
}
 

oomworld

Mitglied
Hallo Michael,

vielen Dank für deine Antwort, ganz schlau bin ich allerdings noch nichts daraus geworden, du musst wissen, ich bin ein Anfänger :)!

Einfach nur eine Label im Frame eine Zählvariable und ein Thread/TimerTask.

Wie meinst du das genau? bzw. wie mache ich das?

Zitat:
zum einen wird die TimerTask nirgends im Hauptprogramm

Ich weis das bekomme ich auch nicht hin, weil ich das extends TimerTask nicht unterkriege.
Wie kann ich die Klasse einbinden?

Zitat:
zum anderen bringt es nichts nur eine Variable hochzuzählen, wenn sich eine Textanzeige ändern soll.

Die TimerTask Klasse muss eine Referenz auf das Label besitzen, um es zu aktualisieren - oder sonst irgendwie drauf zugreifen können.

Okay ich kann es irgendwie nachvollziehen, leider habe ich noch nicht soo viel praktische Erfahrung
hast du ein Beispiel oder einen "Ansatz" für mich? was ist mit "Referenz" gemeint ( Verbindung ) ?

danke für die Hilfestellungen :)!
 

oomworld

Mitglied
Danke die Demo, funktioniert, ich muss Sie mir mal gut einprägen.
Leider benutze ich den GUIBuilder weil das echt ein haufen Befehle sind die man sich Merken muss.

kann ich hier: public class gamexEngine extends javax.swing.JFrame

extends TimerTask einfügen?

so das es so aussieht:
public class gamexEngine extends javax.swing.JFrame extends TimerTask

oder so ähnlich?
laut Editor nämlich nicht. Ich verstehe aber nicht warum.
 

CToJava

Mitglied
Machs doch einfach ohne Hilfsklassen und ohne Timer:

Java:
package gamex;
import java.util.*;
/**
 *
 * @author überschrieben 
 */
public class gamexEngine extends javax.swing.JFrame {

int boomA;
 public String wooD;
    int holzA = 10;
    /** Creates new form gamexEngine */
    public gamexEngine() {
        initComponents();

        timerEngine booM = new timerEngine();
        Thread boomT = new Thread(booM);
        
        boomT.start();

         

        
    }


    public class timerEngine implements Runnable {
    Timer timer;
    //Eigenschaften
   

    public void run()
  {
     while(holzA < 500) {
     holzA = holzA + 5;
     wooD =(new Integer(holzA).toString());
     try {
     Thread.sleep(5000);
     } catch (Exception ex) {
         ex.printStackTrace();
     }
     jLabel2.setText(wooD);
     }
     
  }
    }
    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

        jLabel1 = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jLabel1.setText("Holz");

        jLabel2.setText("jLabel2");
        jLabel2.addPropertyChangeListener(new java.beans.PropertyChangeListener() {
            public void propertyChange(java.beans.PropertyChangeEvent evt) {
                jLabel2PropertyChange(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(172, 172, 172)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jLabel2)
                    .addComponent(jLabel1))
                .addContainerGap(194, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(22, 22, 22)
                .addComponent(jLabel1)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jLabel2)
                .addContainerGap(30, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>

    private void jLabel2PropertyChange(java.beans.PropertyChangeEvent evt) {



    }

    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new gamexEngine().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    // End of variables declaration

}
 

oomworld

Mitglied
ja vielen Dank echt ein sehr gutes und einfaches Beispiel!
vielen Dank CToJava denke das ich erstmal so weiterarbeiten werde :)

aber die Timer / TimerTask geschichte muss ich mir trotzdem sehr gut anschauen :rtfm:, ich denke das es eines der wichtigsten Elemente ist. :)

ansonsten Danke für die schnelle und kompotente hilfe :toll:!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Jlabel mit itemlistevent Text gegeben, wird nicht angezeigt Java Basics - Anfänger-Themen 5
P Erste Schritte JLabel wird nicht angezeigt Java Basics - Anfänger-Themen 4
L Variable für JLabel wird nicht erzeugt Java Basics - Anfänger-Themen 6
J Bild auf JLabel wird nicht angezeigt Java Basics - Anfänger-Themen 11
T JLabel wird nicht gesetzt in Schleife Java Basics - Anfänger-Themen 9
I JLabel wird nicht angezeigt Java Basics - Anfänger-Themen 7
D JLabel Text-Änderung wird nicht angezeigt Java Basics - Anfänger-Themen 9
J Auf einem JLabel Linien Malen Java Basics - Anfänger-Themen 1
J neues Object (JLabel) vorab zum Layout hinzufügen , Location setzen, etc? Java Basics - Anfänger-Themen 2
J JLabel bzw. Image Icon mit KeyEvent bewgen Java Basics - Anfänger-Themen 9
GoenntHack Java Text von JLabel verändert sich nicht Java Basics - Anfänger-Themen 1
JUNSKI Zeilenumbruch JLabel Java Basics - Anfänger-Themen 1
H Mit setter-Methode JLabel in einer andern Klasse ändern. Java Basics - Anfänger-Themen 40
S Mit for-Schleife ein 2D JLabel-Array mit veränderbaren Icons erstellen Java Basics - Anfänger-Themen 3
Tom/S JLabel Icon Farbe Java Basics - Anfänger-Themen 2
N Variabel in eine class mit "extends JLabel" übertragen Java Basics - Anfänger-Themen 2
S Kontrollieren, ob ein Jlabel nicht sichtbar ist Java Basics - Anfänger-Themen 6
S Input/Output JLabel verschieben Java Basics - Anfänger-Themen 7
AnnaBauer21 GridBagLayout JLabel weightx: Unterschiedliche Breite mit & ohne Text Java Basics - Anfänger-Themen 6
CptK Interface JLabel bewegt sich nicht sondern teleportiert sich... Java Basics - Anfänger-Themen 3
CptK Methoden JLabel erstellen & verschieben Java Basics - Anfänger-Themen 1
T JLabel hat falsche größe Java Basics - Anfänger-Themen 1
A JLabel mit button drücken verändern Java Basics - Anfänger-Themen 6
CptK JLabel im Array Java Basics - Anfänger-Themen 2
L Threads Mit Threads JLabel ändern! Java Basics - Anfänger-Themen 2
D Methoden JButton und JLabel in einer Methode erstellen Java Basics - Anfänger-Themen 5
P Auf JLabel zugreifen Java Basics - Anfänger-Themen 12
W JLabel, Farbe durch Listener ändern Java Basics - Anfänger-Themen 6
M Vererbung Ein JLabel einer Elternklasse anzeigen Java Basics - Anfänger-Themen 8
D Klassen Wert aus JTextfield in JLabel (andere Klasse) darstellen. Java Basics - Anfänger-Themen 60
J Array in JLabel ausgeben Java Basics - Anfänger-Themen 2
S Variablen JLabel backImagePanel Fehlermeldung Java Basics - Anfänger-Themen 3
snipesss [Java] Schriftart und Schriftgröße von JLabel in einer Zeile festlegen? Java Basics - Anfänger-Themen 3
J JLabel cannot be resolved Java Basics - Anfänger-Themen 8
S JLabel sichtbar machen/GUI Java Basics - Anfänger-Themen 3
WetWer Animation JLabel Java Basics - Anfänger-Themen 2
W aus Methode auf JLabel zugreifen und Image verändern Java Basics - Anfänger-Themen 1
W JLabel in Main aus Thread verändern. Java Basics - Anfänger-Themen 4
T Jlabel durch Text in 2 anderen Jlabels sichtbar machen Java Basics - Anfänger-Themen 4
T Objekt in ein JLabel der GUI übergeben Java Basics - Anfänger-Themen 3
S JLabel an Methode übergeben Java Basics - Anfänger-Themen 2
D Ausgabe über JLabel Java Basics - Anfänger-Themen 12
M Erste Schritte Wie speichert und gibt man Arrays aus? (JLabel) Java Basics - Anfänger-Themen 12
M Fangspiel-Probleme (JLabel, Objekt zurücksetzen) Java Basics - Anfänger-Themen 3
C Rechenaufgabe im JLabel ausrechnen Java Basics - Anfänger-Themen 2
J JLabel Icon neu zeichnen Java Basics - Anfänger-Themen 2
Z JLabel Icon ändern Java Basics - Anfänger-Themen 2
Z Vector in jTextField/jLabel darstellen Java Basics - Anfänger-Themen 4
D JLabel ändern in actionperformed Java Basics - Anfänger-Themen 2
V jab ich eclipse verrückt gemacht :D ? array Jpanel, Jlabel Grafik Fehler / Frage Java Basics - Anfänger-Themen 5
W Klassen Fehler bei public void setLabelText(JLabel label, String text) Java Basics - Anfänger-Themen 11
G drawString/ JLabel updaten Java Basics - Anfänger-Themen 1
G mouseDragged auf Jlabel Java Basics - Anfänger-Themen 2
K JLabel zur Laufzeit dynamisch erzeugen Java Basics - Anfänger-Themen 7
M Frage zu JLabel Java Basics - Anfänger-Themen 5
T JLabel-Bilderpfad ändern... Java Basics - Anfänger-Themen 2
T JLabel anzeigen lassen... Java Basics - Anfänger-Themen 6
T Mein String in ein JLabel stecken Java Basics - Anfänger-Themen 2
Sogomn JLabel in anderer Klasse zum JFrame hinzufügen Java Basics - Anfänger-Themen 2
T JLabel zum klicken... Java Basics - Anfänger-Themen 15
W Datentypen String-Ausgabe in jLabel Java Basics - Anfänger-Themen 14
J JLabel Ausgabe Java Basics - Anfänger-Themen 3
B mouseClicked JLabel Array mitteilen Java Basics - Anfänger-Themen 6
L JLabel Icon Größe anpassen Java Basics - Anfänger-Themen 11
A Zeilenumbruch im Jlabel Java Basics - Anfänger-Themen 11
3 JLabel - Text in mehreren Zeilen zentrieren Java Basics - Anfänger-Themen 5
R JLabel imageicon jede Sekunde wechseln Java Basics - Anfänger-Themen 3
G GUI JLabel ersetzen Java Basics - Anfänger-Themen 3
M Zeilenumbruch in JLabel Java Basics - Anfänger-Themen 51
A Bildgröße automatisch auf JLabel Größe konvertieren Java Basics - Anfänger-Themen 9
S Text in einem JLabel nur zum Teil Fett Java Basics - Anfänger-Themen 2
B JLabel Text Formatierung Java Basics - Anfänger-Themen 5
S NullPointerException bei zweidimensionalem JLabel-Array Java Basics - Anfänger-Themen 4
T JLabel richtig anordnen? wie gehts? Java Basics - Anfänger-Themen 9
L GridLayout mit JLabel-Array füllen Java Basics - Anfänger-Themen 12
SexyPenny90 JLabel Text und Icon untereinander verwenden Java Basics - Anfänger-Themen 3
B JLabel löschen/überschreiben Java Basics - Anfänger-Themen 10
P Netbeans Platform - JLabel und JPanel setLocation Problem Java Basics - Anfänger-Themen 2
A JLabel erst auf null dann auf einen Wert setzen Java Basics - Anfänger-Themen 7
F JLabel-Background Java Basics - Anfänger-Themen 7
T JLabel Farbe ändern, Problem Java Basics - Anfänger-Themen 2
T JLabel mit Text und Bild Java Basics - Anfänger-Themen 3
C JLabel markieren Java Basics - Anfänger-Themen 2
M BeanBinding Jlist an Jlabel Java Basics - Anfänger-Themen 2
M OOP JLabel werden nicht korrekt eingefärbt Java Basics - Anfänger-Themen 6
P JLabel prüfen,... Java Basics - Anfänger-Themen 6
M JLabel auf JPanel positionieren Java Basics - Anfänger-Themen 8
P JLabel auf JFrame - Schrift vergrößern Java Basics - Anfänger-Themen 2
Z Fonts in einem JLabel Java Basics - Anfänger-Themen 7
MonsterBit setText bei JLabel Java Basics - Anfänger-Themen 16
K Zufällige Auswahl innerhalb eines Arrays und Arrays aus JLabel füllen Java Basics - Anfänger-Themen 32
D JPanel + ein JLabel Java Basics - Anfänger-Themen 8
M JLabel attribut wert zuweisen Java Basics - Anfänger-Themen 2
E JLabel deaktivieren ohne Veränderung der Darstellung Java Basics - Anfänger-Themen 2
0 Icon in JLabel Java Basics - Anfänger-Themen 6
JAVAnnik variable erhöhen bei Klick auf JLabel Java Basics - Anfänger-Themen 3
T aus stateChanged ein JLabel adden Java Basics - Anfänger-Themen 6
P HTML <input> Feld in einem JLabel auslesen Java Basics - Anfänger-Themen 4
C Inhalt eines Strings in JLabel ausgeben? Java Basics - Anfänger-Themen 21
T JLabel durch ActionListener ändern Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben