Countdown

Java20134

Bekanntes Mitglied
Ich habe dieses Programm geschrieben, habe auch schon in vielen Erklärungen nach Antworten gesucht, aber ich finde die Lösung nicht. Was mache ich falsch?
Java:
package package_countdown;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.Timer;
import javax.swing.border.EmptyBorder;

public class Countdown extends JFrame {

	private static final long serialVersionUID = 8976602215370097484L;
	private JPanel panel; 
	public static int counterValue = 60; 
	public static Timer timer; 

	public static void main(String[] args){
		Countdown frame = new Countdown(); 
		frame.setVisible(true);
	}
	
	public Countdown() {
		setTitle("Countdown");
		setBounds(100,100,300,250);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		panel = new JPanel();
		panel.setBorder(new EmptyBorder(5,5,5,5));
		panel.setLayout(null);
		setContentPane(panel);
		
    	final JLabel lbl = new JLabel(); 
    	panel.add(lbl);
    	lbl.setBounds(125,125,90,25);
		
		Timer timer = new Timer(1000, new ActionListener() { //1000ms = 1s
		       
		      public void actionPerformed(ActionEvent e) { 
		    	  counterValue--; 
		         		         
		        if(counterValue == 0){
		            lbl.setText(Integer.toString(counterValue)); 
		        	JOptionPane.showMessageDialog(panel, "Der Countdown ist beendet.", "Beendet!", 
		        			JOptionPane.INFORMATION_MESSAGE);
		        }
		      }
			}); 
		}
}
 
hi,
was funktioniert denn nicht?
auf jeden fall, in der ersten zeile müsste meiner meinung nach nach package ein leerzeichen statt ein underscore kommen.
und in deiner actionPerformed-Methode muss der wert des JLabels gesetzt werden (nach countervalue--) mit
Java:
lbl.setText("" + counterValue);
dein lbl ist ja freundlicherweise schon final.
außerdem müsste dein timer noch gestartet werden mit
Java:
timer.start()
nach der Zeile 51
javampir
 
Vielen vielen Dank, es funktioniert. Bloß eine Sache: Die Variable counterValue muss zu einem String gesetzt werden!
Java:
lbl.setText(Integer.toString(counterValue));

Und stimmt der start fehlt, ganz vergessen! 🙂 DANKE!
 
Zuletzt bearbeitet:

Zurück
Oben