[SUCHE] Java Countdown

Status
Nicht offen für weitere Antworten.
P

PhilXYLON

Gast
hallo,
ich hab echt null plan von java !
aber suche einen java-countdown, wo ich nur die sekunden eintragen muss, und der mir dann life 00:01:60 -> 00:01:59 -> usw runterzählt ...
kennt jemand einen ?

THX Phil
 

Illuvatar

Top Contributor
Der zum Beispiel:

Musst du mit java Countdown [sekunden] aufrufen.

Code:
import java.awt.*;
import java.awt.event.*;

public class Countdown extends Frame
{
  public Countdown (String title)
  {
    super (title);
    addWindowListener(new WindowAdapter() {
      public void windowClosing (WindowEvent evt) {System.exit(0);}});
    setSize(300, 300);
    setVisible(true);
    while (true){
      seconds--;
      if (seconds == -1){
        seconds = 59;
        minutes--;
      }
      if (minutes == -1){
        minutes = 59;
        hours--;
      }
      repaint();
      try{
        Thread.sleep (1000);
      }catch (InterruptedException e){}
      if ((seconds == 0) && (minutes == 0) && (hours == 0)){
        getToolkit().beep();
        System.out.println ("Countdown beendet");
        break;
      }
    }
  }
  private static int hours;
  private static int minutes;
  private static int seconds;
  public void paint (Graphics g)
  {
    g.drawString (this.toString(), 50, 100);
  }
  public String toString()
  {
    return ((hours < 10) ? "0" : "") + hours + ":" + ((minutes < 10) ? "0" : "") + minutes + ":" + ((seconds < 10) ? "0" : "") + seconds;
  }
  public static void main (String[] args)
  {
    try{
      seconds = Integer.parseInt (args[0]);
      seconds++;
      minutes = seconds / 60;
      seconds %= 60;
      hours = minutes / 60;
      minutes %= 60;
    }catch (NumberFormatException e){
      System.out.println("Not a Number!");
      System.exit (1);
    }catch (ArrayIndexOutOfBoundsException e){
      System.out.println("Too few arguments: Countdown [seconds]");
      System.exit (1);
    }
    new Countdown("Countdown");
  }
}

00:01:60 kannst du damit aber nicht machen, 120 Sekunden sind 00:02:00 :D
 
P

PhilXYLON

Gast
ups, sorry stimmt ;)
wie geb ich das ergenis wieder ?
und muss der script in <script> ?

verstehe von java an sich nicht viel :oops: , bin eher der php typ *g*
THX
 
B

Beni

Gast
@Illuvatar

:-D Dein Code wird nicht exakt genau auf die Millisekunden funktionieren :-D

- 1 Sekunde warten
- Code ausführen
(insgesammt 1 Sekunde + ein paar Millis )

- Warten
- ...
(2 Sekunden + 2 * ein paar Millis )

Man könnte z.B.: mit System.currentTimeMillis() die Zeit messen, die der Code benötigt (Minuten berechnen, println...), und von der nächsten Wartesekunde abziehen :)

Gruss Beni
 

Illuvatar

Top Contributor
@Beni

Weiß ich auch, hab ich aber schnell geschrieben und vernachlässigt.

Code:
    long time_begin = System.currentTimeMillis();
    while (true){ 
      seconds--; 
      if (seconds == -1){ 
        seconds = 59; 
        minutes--; 
      } 
      if (minutes == -1){ 
        minutes = 59; 
        hours--; 
      } 
      repaint(); 
      while (System.currentTimeMillis() != (time_begin + 1000))
        try{
          Thread.sleep (0, 500);
        }catch (InterruptedException e){}
      time_begin = System.currentTimeMillis();
      if ((seconds == 0) && (minutes == 0) && (hours == 0)){ 
        getToolkit().beep(); 
        System.out.println ("Countdown beendet"); 
        break; 
      } 
    }

So besser? :) (Ja, kann noch bis zu einer halben Millisekunde pro Sekunde falsch sein :D )

Klappt bei dir eigentlich das

Code:
getToolkit().beep();
?


@PhilXYLON

Das ist eine Java-Applikation, kein Javascript. :evil:

Du musst dafür von http://www.java.sun.com das Java-SDK runterladen, den Code in einer Datei Countdown.java abspeichern und mit javac Countdown.java compilieren.

Starten musst du es dann mit java Countdown [Sekunden] oder
javaw Countdown [Sekunden].
 
P

PhilXYLON

Gast
@Illuvatar

Hi,
ich versteh davon nix ...
ich wollte doch nur was haben wo ich die sekunden eintragen muss, und dann life runtergezählt wird im browser ...
kannst du mir das nicht bitte machen ? auf der seite geht irrgentwie garnix ... :?:
und den code, den ich dann ins html eintragen muss zur anzeige ..

Wäre echt top von dir !!

THX
 
R

Roar

Gast
*hmpf*
ich hab echt null plan von java !
aber suche einen java-countdown,
du redest von java. du weisst was das ist? java.. und nicht javascript *hmpf* von website oder so erwähnst du nix.... und von javascript auch nicht. dann schreibst du das alles auchnoch in ein Java forum ( nichtmal in das JavaScript forum, was dann ja ok gewesen wär)...
dann machen sich zwei leute die mühe und schreiben dir nen code, genau da swas dein beitrag verlangte...

und muss der script in <script> ?

verstehe von java an sich nicht viel , bin eher der php typ *g*

:idea: aha.. ganz plötzlich ne website, aber immernoch java. und wenn du php können willst, dann solltest du wissen was Java ist, und was JavaScript ist. :!:

dazu sag ich nur: hmpf :evil:

und was meinst du dann auch noch damit:
auf der seite geht irrgentwie garnix ...

du hast doch nicht etwa den Java code in das html eingegeben oder? [schild=5 fontcolor=000000 shadowcolor=C0C0C0 shieldshadow=1]tzzzzzzzzz[/schild]
 
G

Guest

Gast
ich mein nich die seite hier, sondern der link von dir ...

und wenn man php kann, kennt man nicht alles verschiedenes von java ... ich hab mich damit noch nie mit beschäftigt, ich kenn nich den untershcied zwischen java, java applets, usw ...

und das habe ich nich in html reingemacht, weil das so eh nich gehen kann ...
 
P

PhilXYLON

Gast
sorry Name vergessen,
aber man könnt das hier ja mal in das richtige verschieben ...
 
R

Roar

Gast
na wie auch immer.. hier:
java ist eine Programmiersprahe
Java Applets sind Programme, geschrieben in der programmiersprache Java, nur mit dem vorteil, dass sie in Webseiten eingebettet werden können.
JavaScrpit ist was ganz anderes als Java. JavaScrpit ist eine Scriptsprache entwickelt von Netscape Comms. und hieß ursprünglich LiveScript, und sie hätten den namen auch so lassen sollen *hmpf*
 

Illuvatar

Top Contributor
Als Applet könnte man es so machen:

Code:
import java.awt.*;
import java.awt.event.*;
import java.applet.*;

class CountdownFrame extends Frame
{
  public CountdownFrame (String title)
  {
    super (title);
    setVisible(true);
    int sizeX = getInsets().left + getInsets().right + getToolkit().getFontMetrics(getGraphics().getFont()).stringWidth (toString());
    int sizeY = getInsets().top + getInsets().bottom + getToolkit().getFontMetrics(getGraphics().getFont()).getHeight();
    setSize (sizeX, sizeY);
    long time_begin = System.currentTimeMillis();
    while (true){
      seconds--;
      if (seconds == -1){
        seconds = 59;
        minutes--;
      }
      if (minutes == -1){
        minutes = 59;
        hours--;
      }
      repaint();
      while (System.currentTimeMillis() != (time_begin + 1000))
        try{
          Thread.sleep (0, 500);
        }catch (InterruptedException e){}
      time_begin = System.currentTimeMillis();
      if ((seconds == 0) && (minutes == 0) && (hours == 0)){
        getToolkit().beep();
        System.out.println ("Countdown beendet");
        break;
      }
    }
    try{
      Thread.sleep (2500);
    }catch (InterruptedException e){}
    dispose();
  }
  private static int hours;
  private static int minutes;
  private static int seconds;
  public void paint (Graphics g)
  {
    g.drawString (this.toString(), getInsets().left + 10, getInsets().top + 10);
  }
  public String toString()
  {
    return ((hours < 10) ? "0" : "") + hours + ":" + ((minutes < 10) ? "0" : "") + minutes + ":" + ((seconds < 10) ? "0" : "") + seconds;
  }
  public static CountdownFrame cf;
  public static void main (String[] args)
  {
    try{
      seconds = Integer.parseInt (args[0]);
      seconds++;
      minutes = seconds / 60;
      seconds %= 60;
      hours = minutes / 60;
      minutes %= 60;
    }catch (NumberFormatException e){
      System.out.println("Not a Number!");
      System.exit (1);
    }catch (ArrayIndexOutOfBoundsException e){
      System.out.println("Too few arguments: Countdown [seconds]");
      System.exit (1);
    }
    cf = new CountdownFrame ("Countdown");
  }
}
public class Countdown extends Applet
{
  public void start()
  {
    CountdownFrame.main (new String[]{getParameter("Sekunden")});
  }
  public void stop()
  {
    CountdownFrame.cf.dispose();
  }
}

Das kannst du auf deine Seite bringen mit:

Code:
<Applet Code="Countdown.class" Width=1 Height=1>
<param name="Sekunden" value="9"/>
</Applet>

Das ändert allerdings nichts daran, dass du von hier das SDK runterladen musst und die Datei compilieren musst.

(Ich weiß, dass getFontMetrics() deprecated ist. Ging aber schneller, und ich kenne keine Alternative zu stringWidth())
 

Illuvatar

Top Contributor
@PhilXYLON
Hat das jetzt funktioniert?

@all
Kennt denn jemand eine Alternative zu stringWidth() in FontMetrics?
 
P

PhilXYLON

Gast
Hallo,
mein prob ist, das ich die anzahl der sekunden aus einer mysql db nehme und die ja in den "script" rein muss...
deswegen hatte ich auch nen java script gesucht...
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben