Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
sooo das Programm ist erst am Anfang und deshalb zähle ich nur die Minuten
wenn ich es ausführ wird gar keine zeit gezählt und ich weiß nich warum .
Es kommt sofort “die zeit ist nicht rum “und darauf“ sofort die zeit ist rum“
Und eigentlich sollte häufiger die zeit ist nicht rum erscheinen
Fachklasse
Java:
import java.util.Date;
import java.text.SimpleDateFormat;
class countdown {
int dauerminuten;
void zalen() {
int i1;
SimpleDateFormat date1 = new SimpleDateFormat("mm");
i1 = (int) Double.parseDouble(date1.format(new Date()));
i1 = i1 + dauerminuten;
for (int i2 = 0; i2 < i1; i2 = (int) Double.parseDouble(date1
.format(new Date()))) {
System.out.println("die zeit ist nicht rum");
}
System.out.println("die zeit ist rum");
}
public countdown(int dauerminuten) {
dauerminuten = dauerminuten;
}
}
Hauptklasse
Java:
import javax.swing.JOptionPane;
public class Haupt {
public static void main(String[] args) {
String b = JOptionPane.showInputDialog("Geben Sie die Zeit ein: ");
int dauerminuten;
dauerminuten = (int) Double.parseDouble(b);
countdown r1 = new countdown(dauerminuten);
r1.zalen();
}
}
ich hab nen timer hier, der zählt einwandfrei die zeit bis zum eingeproggten zeitpunkt runter... (nur darunter nich so recht)
der funktioniert eig. über das runterzählen der millisekunden.
sprich: ich hab die ms jetzt und die ms die zu erreichen sind, der unterschied wird in sek, min, std umgerechnet... halt nur im positiven bereich.
Das Model:
Java:
import java.util.Date;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Observable;
import javax.swing.Timer;
public class Model extends Observable
{
private Date current;
private Date target;
private Timer ticker;
public Model()
{
Calendar cal = Calendar.getInstance();
current = new Date();
/*
* hier wird das ziel datum/zeit eingestellt
*/
target = new Date(109, 7, 1);
target.setHours(12);
target.setMinutes(44);
ticker = new Timer(1000, new AL(this));
}
public void ticked()
{
current = new Date();
setChanged();
notifyObservers();
}
public Date getCurrent()
{
return current;
}
public Date getTarget()
{
return target;
}
public void startTicker()
{
ticker.start();
}
public void stopTicker()
{
ticker.stop();
}
private class AL implements ActionListener
{
private Model mdl;
public AL(Model mdl)
{
this.mdl = mdl;
}
@Override
public void actionPerformed(ActionEvent arg0)
{
mdl.ticked();
}
}
}
Die View, die das Model anzeigt:
Java:
import java.awt.Color;
import java.awt.Font;
import java.util.Observable;
import java.util.Observer;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class View extends JPanel implements Observer
{
private Model mdl;
private JLabel lbl;
public View(Model mdl)
{
this.mdl = mdl;
lbl = new JLabel("", JLabel.CENTER);
this.setLayout(null);
this.setBackground(Color.BLACK);
Color c = Color.red;
lbl.setSize(300,100);
lbl.setLocation(0, 0);
lbl.setForeground(c);
lbl.setBackground(Color.BLACK);
lbl.setText(" ");
this.add(lbl);
this.setVisible(true);
}
public void zeigTimer()
{
long ms = mdl.getCurrent().getTime();
long ms2 = mdl.getTarget().getTime();
long sek = (ms2 / 1000) - (ms / 1000);
long min = sek / 60;
long std = min / 60;
sek = sek - (min * 60);
min = min - (std * 60);
//std = std - ((std / 24) * 24);
String s = "" + sek;
String m = "" + min;
if(sek < 10)
{
s = "0" + sek;
}
if(min < 10)
{
m = "0" + min;
}
lbl.setText("<html><h1><b>" + std + ":" + m + ":" + s + "");
}
@Override
public void update(Observable arg0, Object arg1)
{
zeigTimer();
repaint();
}
}
Das Applet
Java:
import javax.swing.JApplet;
public class Starter extends JApplet
{
private Model mdl;
private View vw;
public void init()
{
mdl = new Model();
vw = new View(mdl);
mdl.addObserver(vw);
this.setSize(300, 100);
this.add(vw);
this.setContentPane(vw);
this.setVisible(true);
mdl.startTicker();
}
}
daas sieht ganz gut aus :toll: und funzt auch soweit aba ich weiß immer noch nicht was bei mir falsch ist ?????:L und deine Sache ist etwas dumm da weiter zu machen denn dich muss zum Schluss ein beeeep to einfügen der zum Schluss immer in kürzeren abstanden kommt
Du weist hier der Variablen dauerminuten, die nur im Konstruktur gilt, sich selbst zu. Richtig müsste es heissen
Code:
this.dauerminuten = dauerminuten;
Abgesehen davon, dass man Klassen und deren Konstruktoren groß schreibt, besteht bei Deinem Code die Gefahr einer endlos Schleife (bsp. es ist xx.59 Uhr der Anwender gibt 1min ein --> i1 = 60 und i2 bleibt für immer kleiner i1) Ausserdem erzeugst Du mit Deiner Schleife ständig Prozessorlast, man könnte z.B. Thread.sleep(...) in die Schleife einbauen um den Prozessor zwischendurch freizugeben.