Datum/Uhrzeit in ein Textfeld schreiben

Maxi92

Aktives Mitglied
Hallo!

Ich bin neu hier deswegen bitte nicht gleich verurteilen wenn ich wo was falsch erstelle oder ähnliches!

Ich habe folgendes Problem: Ich möchte das aktuelle Datum und die aktuelle Uhrzeit in ein Textfeld schreiben. Die Ausgabe auf der Konsole funktioniert aber ich hab keine Ahnung wie ichs ins Textfeld bekomm.

Die TimerTask Klasse:

Java:
import java.text.SimpleDateFormat;
import java.util.*;


public class UhrTimerTask
        extends TimerTask
{
    private SimpleDateFormat zeit;
    private String uhrzeit = null;

    @Override
    public void run()
    {
        Date time = new Date();
        System.out.println("Zeit:" + zeit.format(time));
        uhrzeit = zeit.format(time);
    }

    public UhrTimerTask()
    {
        zeit = new SimpleDateFormat("EEE d MMM yyyy, HH:mm:ss");
    }

    public String getZeit()
    {
        return uhrzeit;
    }
}

Der Konstruktor meines Dialogs indem ich das gerne anzeigen möchte:

Java:
public AnmeldeDlg(java.awt.Frame parent, boolean modal)
    {
        super(parent, modal);
        initComponents();
        super.setLocationRelativeTo(null);

        UhrTimerTask uhr = new UhrTimerTask();

        Timer timer = new Timer();
        timer.schedule(uhr, 0);

        tfDatumUhrAnmeldeDlg.setText("" + uhr.getZeit());

        try
        {
            Thread.sleep(1000);
        }
        catch(Exception e)
        {
            timer.cancel();
        }    
    }

Danke fürs helfen!
 

Maxi92

Aktives Mitglied
Der Anmeldedialog wird aufgerufen bevor mein Hauptfenster erscheint!

Java:
public HagelkanoneGUI()
    {
        initComponents();
        super.setLocationRelativeTo(null);

        AnmeldeDlg anmeldeDlg = new AnmeldeDlg(this, true);
        anmeldeDlg.setVisible(true);
        tfPruefer.setText(anmeldeDlg.getPruefer());
    }
 
Zuletzt bearbeitet:

Maxi92

Aktives Mitglied
Ja wird angezeigt! Funktioniert alles bis auf des mit Uhrzeit/Datum...

Java:
public class AnmeldeDlg extends javax.swing.JDialog
{
    public boolean isAnmelde = false;
    public String pruefer;

    /** Creates new form AnmeldeDlg */
    public AnmeldeDlg(java.awt.Frame parent, boolean modal)
    {
        super(parent, modal);
        initComponents();
        super.setLocationRelativeTo(null);

        UhrTimerTask uhr = new UhrTimerTask();

        Timer timer = new Timer();
        timer.schedule(uhr, 0);

        tfDatumUhrAnmeldeDlg.setText("" + uhr.getZeit());

        try
        {
            Thread.sleep(1000);
        }
        catch(Exception e)
        {
            timer.cancel();
        }    
    }

    public boolean isIsAnmelde()
    {
        return isAnmelde;
    }

    public String getPruefer()
    {
        return pruefer;
    }
    
    private void onAnmelden(java.awt.event.ActionEvent evt)                            
    {                                
        try
        {
            if(tfPrueferAnmeldeDlg.getText().isEmpty())
                throw new Exception("Sie müssen bitte Ihren Namen eingeben!");
            pruefer = tfPrueferAnmeldeDlg.getText();
            isAnmelde = true;
            dispose();
        }
        catch (Exception ex)
        {
            JOptionPane.showMessageDialog(this, ex.getMessage(), "Anmelde Fehler", WIDTH);
        }
    }                           

    private void onProgBeenden(java.awt.event.ActionEvent evt)                               
    {                                   
        if (JOptionPane.YES_OPTION == JOptionPane.showConfirmDialog(this,
                "Wollen Sie wirklich beenden?", "Beenden", JOptionPane.YES_NO_OPTION))
        {
            isAnmelde = false;
            System.exit(0);
        }
    }                              

    private void onWindowClosing(java.awt.event.WindowEvent evt)                                 
    {                                     
        if (JOptionPane.YES_OPTION == JOptionPane.showConfirmDialog(this,
                "Wollen Sie wirklich beenden?", "Beenden", JOptionPane.YES_NO_OPTION))
        {
            System.exit(0);
        }
    }                                


    /**
     * @param args the command line arguments
     */
    public static void main(String args[])
    {
        java.awt.EventQueue.invokeLater(new Runnable()
        {
            public void run()
            {
                AnmeldeDlg dialog = new AnmeldeDlg(new javax.swing.JFrame(), true);
                dialog.addWindowListener(new java.awt.event.WindowAdapter()
                {
                    public void windowClosing(java.awt.event.WindowEvent e)
                    {
                        System.exit(0);
                    }
                });
                dialog.setVisible(true);
            }
        });
    }
    // Variables declaration - do not modify                     
    private javax.swing.JButton btAbbrechenADlg;
    private javax.swing.JButton btOkADlg;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel3;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JLabel lbDatumUhrAnmeldeDlg;
    private javax.swing.JLabel lbPrueferAnmeldeDlg;
    private javax.swing.JPanel paAktionADlg;
    private javax.swing.JPanel paDatenADlg;
    private javax.swing.JTextField tfDatumUhrAnmeldeDlg;
    private javax.swing.JTextField tfPrueferAnmeldeDlg;
    // End of variables declaration                   
}
 

Maxi92

Aktives Mitglied
danke es funktioniert jetzt!

aber kannst du mir vielleicht auch erklären warum es nur durch diese eine Zeile funktioniert?

woher weiß er wo er mir das Datum und die Uhrzeit jetzt hinschreiben muss...
weil ich erzeuge ja das JFormattedTextField ftf und gebe das Datum/Time im tfDatumUhrAnmeldeDlg aus...und ich verknüpfe die 2 ja nie oder?

Java:
public AnmeldeDlg(java.awt.Frame parent, boolean modal)
    {
        super(parent, modal);
        initComponents();
        super.setLocationRelativeTo(null);

        UhrTimerTask uhr = new UhrTimerTask();

        Timer timer = new Timer();
        timer.schedule(uhr, 0);


        JFormattedTextField ftf = new JFormattedTextField(); // Das is die eine neue Zeile

        tfDatumUhrAnmeldeDlg.setText("" + uhr.getZeit());

        try
        {
            Thread.sleep(1000);
        }
        catch(Exception e)
        {
            timer.cancel();
        }    
    }

Das is die DateFormatter Klasse:
Java:
public class DateFormatter
        extends javax.swing.text.DateFormatter
{
    public DateFormatter()
    {
    }
}

danke!
 
Zuletzt bearbeitet:

VfL_Freak

Top Contributor
Moin,

nein - offen gestanden so aus dem Stand nicht, da Du das neue Feld "ftf" ja augenscheinlich gar nicht ansprichst ..... :bahnhof:

Ich hätte entweder so etwas erwartet :
Java:
JFormattedTextField ftf = new JFormattedTextField();
ftf.setText("" + uhr.getZeit());

oder aber so :
Java:
JFormattedTextField tfDatumUhrAnmeldeDlg = new JFormattedTextField();
tfDatumUhrAnmeldeDlg.setText("" + uhr.getZeit());

Ich denke, Du wirst noch mehr verändert haben .....

Gruß
Klaus
 

Maxi92

Aktives Mitglied
Ich habs so programmiert wies bei dem JFormattedTextField sthet was Du mir vorher geschickt hast!

und dann hats funktioniert...wusste aber nicht wieso und dann hab ich das Gleiche probiert was Du grad vorgeschlagen hast...so funktionierts aber leider nicht!
 
Zuletzt bearbeitet:

VfL_Freak

Top Contributor
hmmm, das klingt aber sehr unwahrscheinlich .... :bahnhof:

Wenn Du das Feld ftf deklarierst, aber sonst nirgendwo benutzt, sollte Dir das erst Deine Entwicklungsumgebung (Eclipse???) anzeigen (etwa in der Art "die lokale Variable ftf wird nie gelesen") und zum anderen kann und darf sich das Feld nicht auf ein anderes Feld auswirken !!!

Leider ist mir noch immer nicht klar, wie und vor allem wo Du Dein Textfeld "tfDatumUhrAnmeldeDlg" denn nun deklarierst .....:eek:

Gruß
Klaus
 

Maxi92

Aktives Mitglied
ja i weiß, dass da was net passt!

er gibt mir das Datum automatisch immer in das Textfeld aus was nach der zeile steht obwohl ich die beiden nie verknüpfe?

Java:
JFormattedTextField ftf = new JFormattedTextField();

das is der komplette code meines AnmeldeDialogs:
zeile 68 wird das TextFeld deklariert...


Java:
import Hagelkanone.business.UhrTimerTask;
import java.util.Timer;
import javax.swing.JFormattedTextField;
import javax.swing.JOptionPane;

/**
 *
 * @author Maxi
 */
public class AnmeldeDlg extends javax.swing.JDialog
{
    public boolean isAnmelde = false;
    public String pruefer;

    /** Creates new form AnmeldeDlg */
    public AnmeldeDlg(java.awt.Frame parent, boolean modal)
    {
        super(parent, modal);
        initComponents();
        super.setLocationRelativeTo(null);

        UhrTimerTask uhr = new UhrTimerTask();

        Timer timer = new Timer();
        timer.schedule(uhr, 0);


        JFormattedTextField ftf = new JFormattedTextField();

        tfDatumUhrAnmeldeDlg.setText("" + uhr.getZeit());

        try
        {
            Thread.sleep(1000);
        }
        catch(Exception e)
        {
            timer.cancel();
        }    
    }

    public boolean isIsAnmelde()
    {
        return isAnmelde;
    }

    public String getPruefer()
    {
        return pruefer;
    }
    
    /** 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() {
        java.awt.GridBagConstraints gridBagConstraints;

        jScrollPane1 = new javax.swing.JScrollPane();
        jPanel1 = new javax.swing.JPanel();
        paDatenADlg = new javax.swing.JPanel();
        lbPrueferAnmeldeDlg = new javax.swing.JLabel();
        tfPrueferAnmeldeDlg = new javax.swing.JTextField();
        lbDatumUhrAnmeldeDlg = new javax.swing.JLabel();
        tfDatumUhrAnmeldeDlg = new javax.swing.JTextField();
        paAktionADlg = new javax.swing.JPanel();
        jPanel3 = new javax.swing.JPanel();
        btOkADlg = new javax.swing.JButton();
        btAbbrechenADlg = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE);
        setTitle("Anmelde Fenster");
        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent evt) {
                onWindowClosing(evt);
            }
        });

        jPanel1.setLayout(new java.awt.GridBagLayout());

        paDatenADlg.setLayout(new java.awt.GridBagLayout());

        lbPrueferAnmeldeDlg.setText("Prüfer:");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
        gridBagConstraints.insets = new java.awt.Insets(4, 0, 4, 0);
        paDatenADlg.add(lbPrueferAnmeldeDlg, gridBagConstraints);

        tfPrueferAnmeldeDlg.setColumns(30);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.insets = new java.awt.Insets(5, 4, 5, 4);
        paDatenADlg.add(tfPrueferAnmeldeDlg, gridBagConstraints);

        lbDatumUhrAnmeldeDlg.setText("Datum / Uhrzeit:");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 1;
        gridBagConstraints.insets = new java.awt.Insets(4, 0, 4, 0);
        paDatenADlg.add(lbDatumUhrAnmeldeDlg, gridBagConstraints);

        tfDatumUhrAnmeldeDlg.setColumns(30);
        tfDatumUhrAnmeldeDlg.setEditable(false);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 1;
        gridBagConstraints.insets = new java.awt.Insets(5, 4, 5, 4);
        paDatenADlg.add(tfDatumUhrAnmeldeDlg, gridBagConstraints);

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.insets = new java.awt.Insets(10, 10, 10, 10);
        jPanel1.add(paDatenADlg, gridBagConstraints);

        paAktionADlg.setLayout(new java.awt.GridBagLayout());

        jPanel3.setLayout(new java.awt.GridLayout(1, 0, 10, 0));

        btOkADlg.setText("Anmelden");
        btOkADlg.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                onAnmelden(evt);
            }
        });
        jPanel3.add(btOkADlg);

        btAbbrechenADlg.setText("Programm Beenden");
        btAbbrechenADlg.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                onProgBeenden(evt);
            }
        });
        jPanel3.add(btAbbrechenADlg);

        paAktionADlg.add(jPanel3, new java.awt.GridBagConstraints());

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 1;
        gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
        gridBagConstraints.insets = new java.awt.Insets(10, 10, 10, 10);
        jPanel1.add(paAktionADlg, gridBagConstraints);

        jScrollPane1.setViewportView(jPanel1);

        getContentPane().add(jScrollPane1, java.awt.BorderLayout.CENTER);

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

    private void onAnmelden(java.awt.event.ActionEvent evt)                            
    {                                
        try
        {
            if(tfPrueferAnmeldeDlg.getText().isEmpty())
                throw new Exception("Sie müssen bitte Ihren Namen eingeben!");
            pruefer = tfPrueferAnmeldeDlg.getText();
            isAnmelde = true;
            dispose();
        }
        catch (Exception ex)
        {
            JOptionPane.showMessageDialog(this, ex.getMessage(), "Anmelde Fehler", WIDTH);
        }
    }                           

    private void onProgBeenden(java.awt.event.ActionEvent evt)                               
    {                                   
        if (JOptionPane.YES_OPTION == JOptionPane.showConfirmDialog(this,
                "Wollen Sie wirklich beenden?", "Beenden", JOptionPane.YES_NO_OPTION))
        {
            isAnmelde = false;
            System.exit(0);
        }
    }                              

    private void onWindowClosing(java.awt.event.WindowEvent evt)                                 
    {                                     
        if (JOptionPane.YES_OPTION == JOptionPane.showConfirmDialog(this,
                "Wollen Sie wirklich beenden?", "Beenden", JOptionPane.YES_NO_OPTION))
        {
            System.exit(0);
        }
    }                                


    /**
     * @param args the command line arguments
     */
    public static void main(String args[])
    {
        java.awt.EventQueue.invokeLater(new Runnable()
        {
            public void run()
            {
                AnmeldeDlg dialog = new AnmeldeDlg(new javax.swing.JFrame(), true);
                dialog.addWindowListener(new java.awt.event.WindowAdapter()
                {
                    public void windowClosing(java.awt.event.WindowEvent e)
                    {
                        System.exit(0);
                    }
                });
                dialog.setVisible(true);
            }
        });
    }
    // Variables declaration - do not modify
    private javax.swing.JButton btAbbrechenADlg;
    private javax.swing.JButton btOkADlg;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel3;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JLabel lbDatumUhrAnmeldeDlg;
    private javax.swing.JLabel lbPrueferAnmeldeDlg;
    private javax.swing.JPanel paAktionADlg;
    private javax.swing.JPanel paDatenADlg;
    private javax.swing.JTextField tfDatumUhrAnmeldeDlg;
    private javax.swing.JTextField tfPrueferAnmeldeDlg;
    // End of variables declaration
}
 

Lexi

Bekanntes Mitglied
Kommentiere mal die Zeile mit dem FormattedTextField aus und guck, ob das ganze immer noch funktioniert, dann weißt du ja, ob das wirklich was verändert.

Ich denke eher das ganze hatte was mit der getZeit() Methode zu tun, die irgendwie blockiert oder vielleicht ein null zurückgegeben hat. Sollte das TextFeld mal wieder leer bleiben kannst du dir den Rückgabewert von getTime() mal per System.out ausgeben lassen.
 

Maxi92

Aktives Mitglied
hab ich schon gemacht!

sobald ich es auskommentier oder etwas verändere funktioniert das Ganze nicht mehr!

so hab jetzt a paar versuche gmacht! hier der code und die dazugehörige ausgabe!

Java:
public class UhrTimerTask
        extends TimerTask
{
    private SimpleDateFormat zeit;
    private String uhrzeit = null;

    @Override
    public void run()
    {
        Date time = new Date();
        uhrzeit = zeit.format(time);
        System.out.println("Zeit:" + zeit.format(time));
        
    }

    public UhrTimerTask()
    {
        zeit = new SimpleDateFormat("EEE d MMM yyyy, HH:mm:ss");
    }

    public String getZeit()
    {
        System.out.println("getZeit: " + uhrzeit);
        return uhrzeit;
    }
}

Java:
public AnmeldeDlg(java.awt.Frame parent, boolean modal)
    {
        super(parent, modal);
        initComponents();
        super.setLocationRelativeTo(null);

        UhrTimerTask uhr = new UhrTimerTask();

        Timer timer = new Timer();
        timer.schedule(uhr, 0);

        System.out.println("Vor JFormattedTextField: "+uhr.getZeit());

        //JFormattedTextField ftf = new JFormattedTextField();

        System.out.println("Vor tfDatumUhrAnmeldeDlg.setText: "+uhr.getZeit());
        tfDatumUhrAnmeldeDlg.setText("" + uhr.getZeit());

        try
        {
            Thread.sleep(1000);
        }
        catch(Exception e)
        {
            timer.cancel();
        }    
    }

hier ist die Zeile mit dem JFormattedTextField auskommentiert...dadurch folgende Ausgabe:

getZeit: null
Vor JFormattedTextField: null
getZeit: null
Vor tfDatumUhrAnmeldeDlg.setText: null
getZeit: null
Zeit:Mi 14 Jul 2010, 12:12:46

wenn die Zeile nicht auskommentiert ist siehts so aus:

getZeit: null
Vor JFormattedTextField: null
Zeit:Mi 14 Jul 2010, 12:15:55
getZeit: Mi 14 Jul 2010, 12:15:55
Vor tfDatumUhrAnmeldeDlg.setText: Mi 14 Jul 2010, 12:15:55
getZeit: Mi 14 Jul 2010, 12:15:55

gruß
max
 

Lexi

Bekanntes Mitglied
Es scheint wohl daran zu liegen wann die Methode run() des UhrTimeTask Objects ausgeführt wird.

Ich habe jetzt keine Ahnung was die Timer Klasse und die Timer.schedule genau machen, aber ich denke das dort das Problem zu suchen ist.
 

Lexi

Bekanntes Mitglied
Quelle: Java doc
This class does not offer real-time guarantees: it schedules tasks using the Object.wait(long) method.


Wie gesagt ich kenne mich damit nicht aus, ich vermute allerdings folgendes:

Du rufst Timer.schedule() auf sodass der Task zum ausführen beim Timer "eingetragen" wird. Aus irgendeinem Grund wird dieser Task allerdings erst ausgeführt NACHDEM du setText() auf deinem Textfeld aufrufst. Wenn du nun zwischen Textfeld befüllen und Task eintragen das JFormattedTextField deklarierst und initialisierst scheint das soviel Zeit in Anspruch zu nehmen, dass der Task ausgeführt wird BEVOR du das Textfeld per setText() füllst.

Du könntest mal Testen alternativ statt des FormattedTextFields mal einfach ein ganz normales auf die gleiche Weise und an der gleichen Stelle aufzurufen.
 

Maxi92

Aktives Mitglied
hattest recht!

hab des jetzt mal rausgenommen und stattdessen ne for-schleife zum verzögern verwendet!
und es funktoniert!

Danke!
 

Lexi

Bekanntes Mitglied
Hört sich nach ner unschönen Lösung an, allerdings habe ich ( da keine Ahnung von Threads) auch keine andere Lösung parat.
Evtl könnte sich da jemand anderes einschalten? Würde mich schon interessieren.
 

Maxi92

Aktives Mitglied
hab jetzt eine bessere Lösung meiner Meinung nach gefunden!

Java:
        try
        {
            Thread.sleep(1000);
            System.out.println("Vor tfDatumUhrAnmeldeDlg.setText: "+uhr.getZeit());
            tfDatumUhrAnmeldeDlg.setText("" + uhr.getZeit());
        }
        catch(Exception e)
        {
            timer.cancel();
        }

Thread.sleep(1000) sollte meiner Meinung nach 1 sekunde verzögern und das ist genug zeit das der String uhrzeit vom UhrTimerTask die aktulle Zeit und Datum bekommt!
 

Lexi

Bekanntes Mitglied
Naja, ich glaube das ist eher die Zeit die der Timer braucht um nach dem Aufruf von schedule() die run() Methode des Runnables ( in diesem Fall dein TimerTask ) auszuführen. Aber da du diese Zeitspanne nicht festlegen kannst und sie, soweit ich weiß, von Faktoren abhängt, die dir zur Compilezeit nicht bekannt sind, ist esdoch nicht so gut dass man sich auf das zeitgenaue Ausführen des TimerTasks verlässt. Was wäre z.B. wenn der Rechner auf dem dein Programm ausgeführt wird so langsam ist, dass die Zeitspanne zwischen schedule() und run() größer ist als eine Sekunde ? --> gleiches Problem.

Ich frage mich gerade warum du die Formatierung des Datums überhaupt in einem ExtraThread laufen lässt. Wieso machst du nicht einfach sowas ähnliches wie:
Code:
textField.setText(Date.toString());
?
Ganz ohne irgendeinen Timer und Thread.
 

Maxi92

Aktives Mitglied
ich muss doch zuerst einmal ein Object der Klasse UhrTimerTask erzeugen und diesen Task (in meinem fall uhr) dann in einen timer.schedule einebinden damit ich meine Systemzeit bekomme?

und wann er die methode run() aufruft mache ich meines wissen nicht mit Thread.sleep() oder?

sonder wenn ich
Java:
timer.schedule(uhr, 0);
schreibe scheduled er jetzt den Task uhr sofort und nur einmal!

wenn ich jetzt schreiben würde
Java:
timer.schedule(uhr, 1000,0);
würde er den Task uhr erst nach 1000 ms einmal ausführen?
 

Lexi

Bekanntes Mitglied
Ich versteh immer noch nicht wieso du die aktuelle Zeit unbedingt in einem parallelen Thread herausfinden möchtest.
Warum machst du das nciht einfach so:

1. aktuelle Zeit und Datum ermitteln und in einer Variable speichern
2. die TextArea mit diesem Datum "füllen"
3. Fertig. Ohne Thread usw.

Java:
public class AnmeldeDlg extends javax.swing.JDialog
{
    /** Creates new form AnmeldeDlg */
    public AnmeldeDlg(java.awt.Frame parent, boolean modal)
    {
        super(parent, modal);
        initComponents();
        super.setLocationRelativeTo(null);

        SimpleDateFormat zeit = new SimpleDateFormat("EEE d MMM yyyy, HH:mm:ss");
        String uhrzeit = zeit.format(new Date());
 
        tfDatumUhrAnmeldeDlg.setText("" + uhrzeit);
    
    }
   }

Edit zum schedulen :

Wenn du Timer.schedule(TimerTask) aufrufst, dann wird der übergebene TimerTask irgendwo im Timer gespeichert und zum ausführen bereitgestellt. Auch wenn dein delay = 0 ist, ist noch nicht garantiert, dass der TimerTask auch wirklich sofort nach dem er geschedulet wurde, ausgeführt wird, da da noch anderen Faktoren mitspielen auf die du so ohne weiteres keinen Einfluss hast.
[ So habe ich die API verstanden. Da ich mir nciht sicher bin, wäres es gut wenn sich noch jemand mit mehr Erfahrung/Ahnung hier dazu äußern würde.]
 
Zuletzt bearbeitet:

Maxi92

Aktives Mitglied
hab nicht daran gedacht, dass ich es einfach so machen könnte!

hab nur daran gedacht, dass wenn ich das in meinem Programm öfter brauche ist es besser ne Klasse zu schreiben und sie dann immer wieder aufzurufen...

aber nachdem es so einfach geht werd ichs so machen!

danke!
 

Lexi

Bekanntes Mitglied
Das ganze in eine Klasse zu packen ist eventuell kein schlechter Ansatz, kommt drauf an wofür du das im laufe der Programmierung deiner Applikation noch so brauchst.
Das ist allerdings was anderes, als daraus direkt einen TimerTask und ein Runnable zu machen was in einem Thread ausgeführt wird. Ich frage mich wie du auf diese Thread-Idee gekommen bist ?
 

Maxi92

Aktives Mitglied
wir haben zuletzt in der schule noch Timer, TimerTask angeschnitten und ein kurzes Beispiel gemacht wie wir zur Systemzeit kommen....

und das hab ich jetzt für mein Prog nachprogrammiert...was dann so ausgesehen hat mit der Klasse UhrTimerTask und dann nem main wo wir ein UhrTimerTask object erzeugt haben und dann nen Timer usw...

so wie ichs halt vorher gemacht hatte....
 

Maxi92

Aktives Mitglied
ja ist es :)

hab aber noch ne interessensfrage:

ruf ich mit dem timerTask eine eigenständgen Thread auf oder mit der methode run() in der Klasse UhrTimerTask die ich geschrieben hab...

weil i hab wo glesn das ma mit Thread.start() einen neuen Thread startet?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Build-Zeitpunt (Datum und Uhrzeit) irgendwie während der Laufzeit zugänglich machen..? Allgemeine Java-Themen 4
T Datum OHNE Uhrzeit Zeitzonen-übergreifend Allgemeine Java-Themen 4
J Countdown für Datum und Uhrzeit Allgemeine Java-Themen 4
A Datum und Uhrzeit in andere Zeitzone umrechnen Allgemeine Java-Themen 7
Bluedaishi String Array mit Datum und Uhrzeit String sortieren Allgemeine Java-Themen 6
K Datum+Uhrzeit in Millisekunden (long) umwandeln Allgemeine Java-Themen 7
J Funktion zu einer Uhrzeit/datum ausführen Allgemeine Java-Themen 4
B Jfree Chart mit Datum und Uhrzeit Allgemeine Java-Themen 6
G Listener auf aktuelles Datum / Uhrzeit Allgemeine Java-Themen 2
W Datum anzeigen Allgemeine Java-Themen 10
MiMa Datum von zweistelliger Jahreszahl auf 4 Stellen aufrüsten? Allgemeine Java-Themen 4
MiMa Datum von String zu LocalDateTime Allgemeine Java-Themen 8
MiMa Wie sollte am besten ein Datum gespeichert werden? Allgemeine Java-Themen 8
Thallius Wie parse ich dieses Datum richtig? Allgemeine Java-Themen 5
G Excel Datum richtig auf der Konsole ausgeben Allgemeine Java-Themen 1
Hatsi09 Heutiges Datum Allgemeine Java-Themen 3
MiMa Das Datum Format ist mir unbekannt. Allgemeine Java-Themen 1
G Datum letzte 7 tage Allgemeine Java-Themen 6
W Datum prüfen + zweistellig Allgemeine Java-Themen 11
M Datum Zeitdifferenz in Stunden umrechnen Allgemeine Java-Themen 4
E Datei anhand Datum identifizieren Allgemeine Java-Themen 3
Dechasa Java 8 - Datum vergleichen Allgemeine Java-Themen 5
M Datum umwandeln. Allgemeine Java-Themen 1
P Datum im gewünschten Bereich Allgemeine Java-Themen 21
N Zeitabstand zwischen 2 Daten(Mehrzahl von Datum) Allgemeine Java-Themen 3
Bluedaishi Dateien löschen die älter als das aktuelle Datum sind Allgemeine Java-Themen 9
M Aktuelle Systemzeit und Datum abfragen Allgemeine Java-Themen 2
M datei aufruf datum auslesen Allgemeine Java-Themen 5
R Datum in Excel Tabelle eintragen Allgemeine Java-Themen 6
T auf Valides Datum prüfen Allgemeine Java-Themen 12
E Datum in Kw umrechen Allgemeine Java-Themen 3
E Datum in String Allgemeine Java-Themen 4
C jollyday: prüfen, ob Datum = Feiertag Allgemeine Java-Themen 8
F Tests mit dynamischem Datum Allgemeine Java-Themen 2
K Datum ermitteln Allgemeine Java-Themen 4
N Datum auf 00:00:00 Uhr normalisieren Allgemeine Java-Themen 3
A einzelne Tage als Datum ausgeben Allgemeine Java-Themen 6
S Datum vergleichen - ohne Hilfsmittel Allgemeine Java-Themen 8
T Aktuelles Datum auslesen Allgemeine Java-Themen 2
T Datum um ein Tag reduzieren Allgemeine Java-Themen 6
S log4j, Datum in Fileappendern formatieren Allgemeine Java-Themen 4
V Apache POI Excel Datum auslesen Allgemeine Java-Themen 6
C Datum in Excel auslesen Allgemeine Java-Themen 13
L Gregorian Calender falsches Datum Allgemeine Java-Themen 2
0 Datum in Java Date umwandeln Allgemeine Java-Themen 4
S String-Array nach Datum sortieren Allgemeine Java-Themen 10
J Datum und Zeit Allgemeine Java-Themen 4
B Datum jetzt vor einer Woche Allgemeine Java-Themen 5
B warum zählt der Kalender das Datum nicht weiter Allgemeine Java-Themen 2
V Datum vergleichen Allgemeine Java-Themen 7
C Datum erstellen für SQL Format Date Allgemeine Java-Themen 3
C Datum zurücksetzen Allgemeine Java-Themen 9
A String zu Datum parsen - SimpleDateFormat Problem Allgemeine Java-Themen 8
G File.listFiles nach Datum sortiert ausgeben Allgemeine Java-Themen 1
A Datum parsen Allgemeine Java-Themen 9
G Datum vergleichen Allgemeine Java-Themen 5
C Datum addieren Allgemeine Java-Themen 2
G Timestamp aus Datum Allgemeine Java-Themen 4
B Herausfinden ob Datum existiert Allgemeine Java-Themen 2
H2SO3- string mithilfe von .matches als datum identifizieren Allgemeine Java-Themen 4
Z Datum ohne Format-Kenntnisse parsen Allgemeine Java-Themen 5
C ArrayList nach Datum sortieren Allgemeine Java-Themen 7
G Datum um 1 Monat verschoben Allgemeine Java-Themen 3
J Umwandeln von einem String in ein Datum Allgemeine Java-Themen 8
M Aus Anzahl Tagen Datum ermitteln Allgemeine Java-Themen 8
D Email versand bei einem festgelegten Datum Allgemeine Java-Themen 11
T Mit Datum und Zeit rechnen Allgemeine Java-Themen 8
D Datum korrekt erkennen Allgemeine Java-Themen 27
M Datum einlesen aus jTextField Allgemeine Java-Themen 2
M Zukünftiges Datum Allgemeine Java-Themen 3
G JDK 1.5 und das Datum Allgemeine Java-Themen 7
V Datum parsen Allgemeine Java-Themen 6
V Datei kopieren und Datum erhalten Allgemeine Java-Themen 2
M Datei Handling mit Datum Allgemeine Java-Themen 2
M Datum in Tabelle formatiert ausgeben Allgemeine Java-Themen 3
S Datum einer Datei online? Allgemeine Java-Themen 6
G Anzahl an Tagen auf Datum addieren Allgemeine Java-Themen 4
G Datum im Format yyyy-mm-dd erstellen Allgemeine Java-Themen 1
P Datum in einer DateComboBox setzen Allgemeine Java-Themen 7
MQue Datum in ComboBox setzen Allgemeine Java-Themen 9
J [Aenderungszeit Datei] nur Datum vergleichen Allgemeine Java-Themen 3
G Anzahl Tage in Datum umwandeln Allgemeine Java-Themen 13
M Datum nicht richtig geprüft, warum? Allgemeine Java-Themen 9
L datum nach dem kopiervorgang neu setzen? Allgemeine Java-Themen 2
R Datum in *.txt suchen und ersetzen Allgemeine Java-Themen 2
H Ein zufälliges Datum innerhalb eines Intervalles erzeugen Allgemeine Java-Themen 3
S POI Datum Allgemeine Java-Themen 2
G Datum einer Datei Allgemeine Java-Themen 8
J Datum auf Gültigkeit überprüfen Allgemeine Java-Themen 4
TheJavaKid Datum -> long Allgemeine Java-Themen 9
M Führende Null in einem Datum Allgemeine Java-Themen 3
C Datum-/Zeitdifferenz Allgemeine Java-Themen 5
F Datum gültig ? Allgemeine Java-Themen 9
G Datum konvertieren Allgemeine Java-Themen 14
G mysql datum umwandeln mittels jsp Allgemeine Java-Themen 10
F Datum mit anzahl tagen berechnen Allgemeine Java-Themen 3
F Datum in GregorianCalendar Allgemeine Java-Themen 3
G Datum Allgemeine Java-Themen 4
T Datum testen und Einsetzten Allgemeine Java-Themen 5
K Datum in ein anderes Format bringen Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben