Countdown

tameck

Erfahrenes Mitglied
Guten Morgen :)

ich hab einen timer geschrieben der sekunden bis zu nem bestimmten punkt hochzählt ..

nur soll er die vorgegeben sekunden rückwärts auf null runter zählen ...

hier ein kleiner ausschnitt von meinem quelltext

wär super wenn jmd mir helfen könnte also danke im vorraus grüßle tameck

timer = new Timer (1000, this);

timer.setInitialDelay(1000);

}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==b1)

timer.start();
a = f1.getText();
zahl = Integer.parseInt(a);
System.out.println(sec + " ");
sec++;
l4.setText("Gesetzte Zeit: "+a+" sek.");
l3.setText("Zeitanzeige: "+sec + " sek.");
l2.setText("Timer wurde gestartet");
 
Äh und wo ist das Problem? Wenn du hochzählen hinkriegst ist doch runterzählen das selbe nur halt nicht + sondern -
 
ja klar des t ja dann auch aber er zählt dann von 0 in den minus bereich ...
und wenn ich den eingebenen sekunden wert runterzählen lassen will zählt er einfach nicht runter ...
 
Anhand deines geposteten Codeausschnitts kann ich dein Problem auf jeden Fall nicht nachvollziehen. Da bräuchte ich schon was was sich auch mal ausführen lässt oder zumindest einigermaßen vollständig ist.
 
package pccontrol;

import javax.swing.*;
import java.awt.*;
import java.awt.Event.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;

public class Asd extends JFrame implements ActionListener {

JLabel l1 = new JLabel("Bitte Zeit in Sekunden angeben");
JLabel l2 = new JLabel();
JLabel l3 = new JLabel();
JLabel l4 = new JLabel();
JLabel l5 = new JLabel();
JTextField f1 = new JTextField();
JButton b1 = new JButton("Timer starten");
JButton b2 = new JButton("Timer zurücksetzen");
JPanel p1 = new JPanel();
JPanel p2 = new JPanel();

String rechnername;
String a;
String b;
int zahl;
int zahl1;

private Timer timer;
private int sec ;

public Asd(String title, String rech) {

super (title);
rechnername=rech;

Container c = getContentPane();

p1.setLayout(new GridLayout(8,1));
p1.add(l1);
p1.add(f1);
p1.add(b1);
p1.add(b2);
p1.add(l2);
p1.add(l4);
p1.add(l3);
p1.add(l5);

p2.add(p1);

c.add(p2);

b1.addActionListener(this);
b2.addActionListener(this);

setTitle (title);
setSize (250,250);
setVisible(true);

timer = new Timer (1000, this);

timer.setInitialDelay(1000);

}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==b1)

timer.start();
a = f1.getText();
zahl = Integer.parseInt(a);
System.out.println(sec + " ");
sec++;
l4.setText("Gesetzte Zeit: "+a+" sek.");
l3.setText("Zeitanzeige: "+sec + " sek.");
l2.setText("Timer wurde gestartet");

if (sec == zahl)
{
timer.stop();
try
{
String cmdBefehl = "shutdown.exe -m "+ rechnername +" -s -t 30 -f -c \"System Shutdown from User: ";
Runtime.getRuntime().exec(""+cmdBefehl);
System.out.println("Der Rechner "+rechnername+" wird runtergefahren.");
l5.setText("Der Rechner "+rechnername+" wird runtergefahren.");
}
catch (IOException e1)
{
e1.printStackTrace();
}

}
if(e.getSource()==b2)
{
f1.setText("");
timer.stop();
sec=1;
l3.setText("");
l2.setText("");
l4.setText("");
l5.setText("");
}
}



public static void main(String argv[])
{

System.out.println("Start: ");
while (true){}
}
}

danke für deine hilfe hoffe du kannst mit dem quelltext was anfangen :)
 
Die main-Methode tut nichts....

UUUND ich hätte dich persönlich gehauen wenn irgendeiner meiner Rechner zufällig runtergefahren worden wäre. Das schreibst du bitte nächstesmal dazu und packst deinen Code in die Code-Tags damit er lesbar ist.

Hab deinen Code mal ein wenig aufgeräumt. Funktioniert jetzt:
Java:
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.Timer;

public class Asd extends JFrame implements ActionListener {

	private JLabel l1 = new JLabel("Bitte Zeit in Sekunden angeben");
	private JLabel l2 = new JLabel( );
	private JLabel l3 = new JLabel( );
	private JLabel l4 = new JLabel( );
	private JLabel l5 = new JLabel( );
	private JTextField f1 = new JTextField( );
	private JButton b1 = new JButton("Timer starten");
	private JButton b2 = new JButton("Timer zurücksetzen");

	private String rechnername;

	private Timer timer;
	private int sec;

	public Asd(String title, String rech) {

		super(title);
		rechnername = rech;

		setSize(250, 250);
		init(title);
	}

	private void init(String title) {
		Container c = getContentPane( );

		JPanel p1 = new JPanel( );
		JPanel p2 = new JPanel( );

		p1.setLayout(new GridLayout(8, 1));
		p1.add(l1);
		p1.add(f1);
		p1.add(b1);
		p1.add(b2);
		p1.add(l2);
		p1.add(l4);
		p1.add(l3);
		p1.add(l5);

		p2.add(p1);

		c.add(p2);

		b1.addActionListener(this);
		b2.addActionListener(this);

		timer = new Timer(1000, this);
		timer.setInitialDelay(1000);
	}

	public void actionPerformed(ActionEvent e) {
		if (e.getSource( ) == b1) {
			start( );
		}
		else if (e.getSource( ) == b2) {
			stop( );
		}
		else {
			calculate( );
		}
	}

	private void calculate() {
		System.out.println(sec + "  ");
		sec--;
		l3.setText("Zeitanzeige: " + sec + " sek.");

		if (sec == 0) {
			timer.stop( );
			System.out.println("Der Rechner " + rechnername +
					" wird runtergefahren.");
			l5.setText("Der Rechner " + rechnername + " wird runtergefahren.");
		}
	}

	private void stop() {
		f1.setText("");
		timer.stop( );
		sec = 0;
		l3.setText("");
		l2.setText("");
		l4.setText("");
		l5.setText("");
	}

	private void start() {
		String a = f1.getText( );
		int zahl = Integer.parseInt(a);
		sec = zahl;
		timer.start( );

		l4.setText("Gesetzte Zeit: " + a + " sek.");
		l2.setText("Timer wurde gestartet");
	}

	public static void main(String args[]) {
		Asd asd = new Asd("Countdown", "Rechnername");
		asd.setVisible(true);
	}
}
 
Es wird nicht angezeigt ja?

Ruf mal setVisible(true) auf der asd auf. Das habe ich rausgenommen weil es da nicht reingehört. Wann ein Frame angezeigt wird sollte immer von aussen entschieden werden und nicht im Konstruktor des Frames.
 
Zurück