jLabel aktuallisieren bzw Progressbar für Zeitanzeige

Status
Nicht offen für weitere Antworten.
M

m0ps1234

Gast
Hi zusammen,
ich bin noch relativer Neuling in der Javaprogrammierung.
Deswegen bin ich fleißig am rumprobieren und habe jetzt mit Netbeans ein Autoshutdownprogramm programmiert.

Funktioniert auch ohne Probleme.
Nur möchte ich jetzt in dem Programm noch eine Fortschrittsanzeige einbauen, d.h. wenn das Programm gestartet wird, dann wird zb ein jLabel-Text geändert, der ununterbrochen die verbleibende Zeit bis zum shutdown anzeigt. Noch schöner würde ich eine Progressbar finden, die den Verlauf darstellt.

Meine Klassen sind wie folgt aufgebaut:
Klasse A:
Code:
public class Programm extends javax.swing.JFrame {
    Image icon = Toolkit.getDefaultToolkit().getImage("sleep.png");
    public myThreads thread1;
    public Programm() {
        initComponents(); //Hier wird die GUI erzeugt (hab den Teil jetzt mal weggelassen.
    }

    @SuppressWarnings("unchecked")

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
        thread1 = new myThreads(Integer.parseInt((String) Stundenbox.getSelectedItem()), Integer.parseInt((String) Minutenbox.getSelectedItem()));
        thread1.start();
        jLabel2.setText("Status: gestartet");


    }

    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
        thread1.stop();
        jLabel2.setText("Status: gestoppt");

    }

    @SuppressWarnings("empty-statement")

    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Programm().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify
    private javax.swing.JLabel Minuten;
    private javax.swing.JComboBox Minutenbox;
    private javax.swing.JLabel Stunden;
    private javax.swing.JComboBox Stundenbox;
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JProgressBar jProgressBar1;
    // End of variables declaration

    private void setIconImage(String string) {
        throw new UnsupportedOperationException("Not yet implemented");
    }

}


Klasse B:
public class myThreads extends Thread {

    private int t;

    public myThreads(int x, int y){
        t = x * 3600000 + y * 60000;
    }

    public void run(){
        try {

            sleep(t);

        } catch (InterruptedException ex) {
            Logger.getLogger(myThreads.class.getName()).log(Level.SEVERE, null, ex);
        }

        Runtime rt=Runtime.getRuntime();
        try {
         rt.exec("shutdown -s -t 00 -f");
        } catch (IOException ex) {
         Logger.getLogger(myThreads.class.getName()).log(Level.SEVERE, null, ex);
        }

    }
}
Jetzt wollte ich irgendwie einen Timer starten, der jede Sekunde einen Wert zurückgibt, der die verbleibende Zeit in Millisekunden zeigt.
Dieser soll entweder in jLabel3 ausgegeben werden oder in der jProgressBar "durchlaufen".

Ich hab schonmal mit While-Schleifen rumgespielt (was auch geklappt hat - die Werte wurden per System.out.println richtig ausgegeben.) nur bekomm ich es nicht hin diese Werte zb per jLabel3.setText('Wert als String') auszugeben.
Geschweige denn sie irgendwie in die Progressbar zu bekommen.

Wie macht man soetwas?

Grüße
 

Ebenius

Top Contributor
So?
Code:
public static void main(String[] args) {
  final JLabel label = new JLabel();
  final JProgressBar progressBar = new JProgressBar();
  final long startTime = System.currentTimeMillis();
  final long shutdownAt = startTime + 1000 * 60;
  progressBar.setMinimum(0);
  progressBar.setMaximum((int) ((shutdownAt - startTime) / 1000L));
  progressBar.setValue(progressBar.getMaximum());
  progressBar.setStringPainted(true);
  final NumberFormat format = new DecimalFormat("':'00");
  final ActionListener actionListener = new ActionListener() {

    @Override
    public void actionPerformed(ActionEvent e) {
      final long timeToLive = shutdownAt - System.currentTimeMillis();
      final long secs = timeToLive / 1000L;
      final long mins = secs / 60L;
      final String s = Long.toString(mins) + format.format(secs % 60L);
      label.setText(s);
      progressBar.setString(s);
      progressBar.setValue((int) secs);
    }
  };
  final javax.swing.Timer timer =
        new javax.swing.Timer(1000, actionListener);
  actionListener.actionPerformed(null);
  timer.setRepeats(true);
  timer.start();
  JOptionPane.showMessageDialog(null, new Object[] { label, progressBar });
}

Ebenius
 
M

m0ps1234

Gast
Hey, danke für deine Antwort.
Wie gesagt: Javaanfänger :)

Was passiert bei deinem Code genau?

Das ergebnis ist genau was ich will, nur weiß ich nicht wie ich das in meinem Code einbauen soll.

Grüße
 
M

m0ps1234

Gast
Vielleicht sollte ich das noch anmerken:

bis zu "progressBar.setStringPainted(true);" hab ich noch alles verstanden ;)
aber was danach genau passiert keine Ahnung (vor allem wie die Progressbar mit dem Timer zusammenhängt)???
 

Ebenius

Top Contributor
Der javax.swing.Timer ruft den ActionListener einmal pro Sekunde auf. Der ActionListener holt sich die aktuelle Zeit und zieht die von der Shutdown-Zeit ab. Die Differenz sind die Millisekunden bis zum Shutdown. Dann dividier ich noch durch 1000 → Sekunden bis Shutdown. ProgressBar bekommt ein Minimum (0) und ein Maximum (Differenz zwischen jetzt und Shutdown in Sekunden) und wird auf sein Maximum initialisiert. Der ActionListener aktualisiert den ProgressBar einmal pro Sekunde mit der Restzeit bis Shutdown in Sekunden. Und er setzt den Text (der gleiche wie auf dem Label) in mins:sec. Jetzt verstanden?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
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
K Jlabel mit itemlistevent Text gegeben, wird nicht angezeigt Java Basics - Anfänger-Themen 5
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
P Erste Schritte JLabel wird nicht angezeigt Java Basics - Anfänger-Themen 4
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
L Variable für JLabel wird nicht erzeugt Java Basics - Anfänger-Themen 6
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
J Bild auf JLabel wird nicht angezeigt Java Basics - Anfänger-Themen 11
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 JLabel wird nicht gesetzt in Schleife Java Basics - Anfänger-Themen 9
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
L Rahmen bei jLabel Java Basics - Anfänger-Themen 3
F JLabel Problem? Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben