Program odliczający czas- nie działa

0

Witam
Napisałem program odliczający czas do danej daty. Błędów nie wywala, ale po uruchomieniu ProgressBar się nie ładuje (jest 0%) i nie pokazuje się czas, jaki pozostał. Dopiero uczę się Javy, więc proszę o wyrozumiałość :).

Oto kod:
GUI


import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JProgressBar;
import javax.swing.JTextField;

/**

public class GUI extends JFrame implements Runnable
{

Obliczenia obliczenia = new Obliczenia();
private static JLabel LpozostalyCzas;
private static JTextField TFdata;
private static JProgressBar PBpasek;

public GUI()
{
	setTitle("Odliczanie czasu do tesów gimnazjalnych");
	setSize(600, 400);
	setLocation(400, 200);
	setLayout(null);
	
	TFdata = new JTextField();
	TFdata.setBounds(50, 50, 200, 50);
	add(TFdata);
	
	LpozostalyCzas = new JLabel("");
	LpozostalyCzas.setBounds(50, 200, 100, 50);
	add(LpozostalyCzas);
		
	PBpasek = new JProgressBar(0, 1000);
	PBpasek.setBounds(100, 100, 400, 30);
	PBpasek.setStringPainted(true);
	add(PBpasek);	
}

public void run() 
{
	Thread newThread = new Obliczenia();
	newThread.start();
}	

public static void main(String[] args) 
{
	GUI okno = new GUI();

	okno.setDefaultCloseOperation(EXIT_ON_CLOSE);
	okno.setVisible(true);	
}

static void ustawianieDanych(Integer uplynietyCzasPrc, String tekst) 
{
	PBpasek.setValue(uplynietyCzasPrc);
	LpozostalyCzas.setText(tekst);	
}

}


Obliczenia


import java.util.GregorianCalendar;

public class Obliczenia extends Thread
{
public long uplynietyCzasSec, calkowityCzasSec, pozostalyCzasSec;
String tekst = new String("");
public static Integer UplynietyCzasPrc = new Integer(0);

public void run() 
{
	
	GregorianCalendar dataRozpoczeciaRoku = new GregorianCalendar(2013, 8, 2, 9, 0 ,0);
	GregorianCalendar dataTestu = new GregorianCalendar(2014, 3, 23, 9, 0 , 0);
	
	calkowityCzasSec =  (dataTestu.getTimeInMillis()- dataRozpoczeciaRoku.getTimeInMillis())/1000;
				
	do
	{
		GregorianCalendar aktualnyCzas = new GregorianCalendar();
		
		pozostalyCzasSec = (dataTestu.getTimeInMillis()- aktualnyCzas.getTimeInMillis())/1000;
		uplynietyCzasSec = (calkowityCzasSec - pozostalyCzasSec);
		
		long LongPostep1PrcSec =  calkowityCzasSec/100;
		long LongUplynietyCzasPrc = uplynietyCzasSec/LongPostep1PrcSec;
		UplynietyCzasPrc = (int) LongUplynietyCzasPrc;
		
		Obliczanie(pozostalyCzasSec);
		
		GUI.ustawianieDanych(UplynietyCzasPrc, tekst);
			
			try 
			{
				Thread.sleep(500);
			} 
			catch (InterruptedException e) 
			{
				e.printStackTrace();
			}
			
	}while(uplynietyCzasSec < calkowityCzasSec);
}

public void Obliczanie(long pozostalyCzasSec1)
{
	int czasDni = (int) (long) pozostalyCzasSec1/(60*60*24);
	int resztaCzasDni = (int) (long) pozostalyCzasSec1 % (60*60*24);
	
	int czasGodziny = resztaCzasDni/(60*60);
	int resztaCzasGodziny = resztaCzasDni%(60*60);
	
	int czasMinuty = resztaCzasGodziny/60;
	int resztaCzasMinuty = resztaCzasGodziny%60;
	
	int czasSekundy = resztaCzasMinuty;
	
	tekst= "Do egzaminów pozostało:" +czasDni + "dni, " + czasGodziny + "godzin, " + czasMinuty + "minut i " + czasSekundy + "sekund.";
}

}


0
  1. GUI nie ma implementować Runnable.
  2. Nie wywołałeś tej swojej metody "run" z klasy GUI więc wątek progress bara nie wystartował.

1 użytkowników online, w tym zalogowanych: 0, gości: 1