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;
/**
- @Author Bartłomiej B.
- */
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.";
}
}