PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Java | Etwas zu einem bestimmten ZEITpunkt ausführen...



maceop
10-10-2002, 19:57
hallo,
ich hatte hier einmal die Idee eine kleine Erinnerungsbox für mich selbst in Java zu schreiben, das Programm wird also gestartet und zu einem Zeitpunkt der im Source definitert ist, soll z.B. ne kleine Box mit Inhalt erscheinen.
Hierbei macht mir allerdings "nur" der erste Teil Probleme, also wie kann ich es machen das mein Programm(teil) .... zu einem bestimmten Zeitpunkt, zb. 16.00Uhr ausgeführt wird ? Noch was, wenn der User es nicht mit OK bestätigt soll eine Viertelstunden später nochmals nachgefragt werden, also ähnliches Problem, hat jemand ne Idee dafür ?

tia
maceop

ps. ich habe diese frage auch auf einem anderen Board gestellt (www.computer-security.de), also wundert euch nicht wenn ihr einen solchen Thread auch dort findet...vielleicht ergänzen sich Hinweise/Codes....ja

anda_skoa
10-10-2002, 20:45
Wenn das Programm sonst nichts tun muß ist das einfach.

1) Aktuelle Zeit bestimmen
Calendar cal = Calendar.getInstance().
long now = cal.getTimeInMillis();

2) Zielzeit bestimmen
cal.set(...); //... durch das Zieldatum ersetzen
long later = cal.getTimeInMillis();

3) Schlafen
Thread.sleep(later-now);

Ciao,
_

maceop
10-10-2002, 22:36
hallo,
also erst einmal danke für die schnelle antwort.

du sagtest solange es nichts anderes machen muss, wie würdest du das ganze denn lösen wenn es noch was anderes machen müsste ?
mich würde da mal interessieren was sich ändert, normalerweise kann man den Prozess ja dann nicht "schlafen" lassen.

Wenn einer noch wüsste wie es ginge wenn das Prog während der 15 Min, bzw. bis 16.00Uhr was machen sollte, kann es ja mal posten.

tia
maceop

anda_skoa
10-10-2002, 22:39
Je nachdem was noch zu machen ist.

Wenn es reicht, hin und wieder was zu tun, dann kannst du in kleineren Schritten schlafen.
Wenn das Programm zB eine GUI hat und zu jeder Zeit reagieren können muß, dann mußt du den "Timer" in einem extra Thread laufen lassen.

Ciao,
_

maceop
10-10-2002, 22:49
leider sind meine java-kenntnisse noch nicht allzu berauschend, trotzdem danke für die schnelle und kompetente hilfe !

werde wohl erst einmal andere basics lernen müssen

in that way
maceop

--- edit: ---
es sollte schon ne GUI sein, also das praktisch ständig was passieren könnte....

anda_skoa
10-10-2002, 23:51
Wenn du weitere Fragen hast, nachdem du dir die Basics angeschaut hast., bist du hier jeferzeit mit Fragen willkommen.

Gibt einige Java Programmierer hier.

Ciao,
_

Edit:
meine Idee wäe ungefähr so etwas



public interface Task
{
public void execute()
public long getTimeInMillis();
}


und


public class Scheduler extends Thread
{
public void addTask (Task task)
{
// task in einen Liste geben
}

public void run()
{
while (true) // eine bessere Abbruchbedingung wäre angebracht
{
// aktuelle Zeit in Millis bestimmen
// in der Liste nachsehen, ob ein Task mit zeit <= aktueller Zeit vorhanden ist
// wenn ja aus der Liste nehmen und task.execute() aufrufen
// wenn nein, oder alle tasks behandelt
// Thread.sleep() für 5 Sekunden oder so
}
}
}

maceop
12-10-2002, 20:32
hallo,
hab da mal ne dumme zwischenfrage, und zwar wie ich in ne TextArea Text einfügen , in unterschiedlichen Farben ? mir ist bekannt das es setForeground gibt, aber damit wird ja der gesamte vordergrund gefärbt.

später soll so was möglich sein:

hallo (in blau) welt (in rot)

natürlich ein nutzloses und dummes beispiel, es zeigt aber das "problem"

tia
maceop

anda_skoa
12-10-2002, 20:48
Da kannst du glaub ich mit normalen TextAreas nichts machen.
Dazu gibt es die packages unter swing.text

Ist aber keine so einfache Sache mehr, die Klassen dort sind "highly sophisticated"

Ciao,
_

peschmae
14-10-2002, 12:20
eine ganze menge von Swing - Komponenten unterstützt html,
so hab ich z.B. eben erst eine tabelle in einem JLabel dargestellt
tönt idiotisch, ist es auch denn imho ist ein label für einzeilen - Texterls, aber da es auch html versteht...

ich würds mal mit JTextArea versuchen

MfG Peschmä