B
Bruegge
Gast
Hallo allerseits,
ich möchte gern in meinem JFrame ein JLabel alle 1 Sekunde updaten. Dazu habe ich eine Methode geschrieben, die
den Text des JLabels jede Sekunde neu generiert. Allerdings kann man wären der berechnung nichts anderes im JFrame machen. Also habe ich mir überlegt, die berechnung des neuen Namen in einem Thread zu machen. Doch das Problem besteht weiterhin, man kann nirgends mehr klicken und es wird auch nichts aktualisiert. Hier mein Code:
Also wenn ich auf Start klicke berechnet der zwar fleißig aber das Programm ist wie eingefroren.
Hat jemand eine Lösung wie ich es schreiben kann sodass sich das Label wirklich nur im Hintergrund aktualisiert?
Vielen Dank im Voraus!
MFG Christian
ich möchte gern in meinem JFrame ein JLabel alle 1 Sekunde updaten. Dazu habe ich eine Methode geschrieben, die
den Text des JLabels jede Sekunde neu generiert. Allerdings kann man wären der berechnung nichts anderes im JFrame machen. Also habe ich mir überlegt, die berechnung des neuen Namen in einem Thread zu machen. Doch das Problem besteht weiterhin, man kann nirgends mehr klicken und es wird auch nichts aktualisiert. Hier mein Code:
Code:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Aktualisierer extends JFrame implements ActionListener {
JLabel lblAkt = new JLabel("Wert: ");
JButton bttStart = new JButton("Start");
Thread t = new Thread(new AktBerechner(this));
public Aktualisierer() {
setSize(200,200);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLayout(new FlowLayout());
add(lblAkt);
add(bttStart);
bttStart.addActionListener(this);
setVisible(true);
}
public void actionPerformed(ActionEvent e) {
t.run();
}
public static void main(String[] args) {
new Aktualisierer();
}
}
Code:
public class AktBerechner implements Runnable {
Aktualisierer akt;
public AktBerechner(Aktualisierer akt2) {
akt = akt2;
}
public void run() {
int i = 0;
while(true) {
i++;
akt.lblAkt.setText("Wert: " + i);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {}
}
}
}
Also wenn ich auf Start klicke berechnet der zwar fleißig aber das Programm ist wie eingefroren.
Hat jemand eine Lösung wie ich es schreiben kann sodass sich das Label wirklich nur im Hintergrund aktualisiert?
Vielen Dank im Voraus!
MFG Christian