Witam, mam taki program, który oblicza na ilę sposobów można rozmienć kwotę na 2, 5, i 10zł. Program dla większych kwot długo liczy dlatego przydałby się pasek postępu. Postęp programu można mniej więcej opisać jako l10, gdzie l10 jest zmienną. Niestety to nie działa. Wiem że jest trochę źle. np to ppasek = new JProgressBar(0, max); . Proszę o pomoc.
package kwotawa;
import javax.swing.JCheckBox;
import java.io.FileNotFoundException;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JProgressBar;
import javax.swing.JTextField;
public class KwotaWA extends JFrame implements ActionListener
{
private JLabel lPodajKwote, lLsp, lCzas;
private JTextField tPodajKwote, tLsp, tCzas;
private JButton bLicz, bWyjście;
private JCheckBox chOnOff;
private JProgressBar ppasek;
int l10, l5, l2, progress, max;
double kwota;
long h, m, s, ms, tm;
long lsp=0;
private String shutdownCommand;
public KwotaWA()
{
setSize(480, 320);
setTitle("KwotaWA");
setLayout(null);
lPodajKwote = new JLabel("Podaj Kwotę:");
lPodajKwote.setBounds(30, 20, 100, 50);
add(lPodajKwote);
lLsp = new JLabel("Liczba sposobów:");
lLsp.setBounds(30, 115, 120, 50);
add(lLsp);
lCzas = new JLabel("Program liczył:");
lCzas.setBounds(30, 160, 100, 50);
add(lCzas);
tPodajKwote = new JTextField(" ");
tPodajKwote.setBounds(150, 35, 125, 20);
add(tPodajKwote);
tLsp = new JTextField(" ");
tLsp.setBounds(150, 130, 125, 20);
add(tLsp);
tCzas = new JTextField(" ");
tCzas.setBounds(150, 175, 250, 20);
add(tCzas);
chOnOff = new JCheckBox("ON/OFF");
chOnOff.setBounds(345, 35, 100, 20);
add(chOnOff);
chOnOff.addActionListener(this);
ppasek = new JProgressBar(0, max);
ppasek.setBounds(100, 82, 280, 20);
ppasek.setValue (0);
ppasek.setStringPainted (true);
add(ppasek);
bLicz = new JButton("Enter");
bLicz.setBounds(100, 225, 100, 20);
add(bLicz);
bLicz.addActionListener(this);
bWyjście = new JButton("Wyjście");
bWyjście.setBounds(250, 225, 100, 20);
add(bWyjście);
bWyjście.addActionListener(this);
}
public static void main(String[] args) throws FileNotFoundException, IOException
{
KwotaWA window = new KwotaWA();
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e)
{
Object z = e.getSource();
if(z==bWyjście)
{
dispose();
}
else if(z==bLicz )
{
PrintWriter zapis = null;
try
{
kwota = Double.parseDouble(tPodajKwote.getText());
max=(int) (kwota/10);
long t1 = System.currentTimeMillis();
for(l10=0; l10<=kwota/10; l10++)
for(l5=0; l5<=kwota/5; l5++)
for(l2=0; l2<=kwota/2; l2++)
if(2*l2 + 5*l5 + 10*l10 == kwota)
{
lsp++;
progress=(l10);
ppasek.setValue(progress);
}
long t2 = System.currentTimeMillis();
tm=t2-t1;
h=tm/3600000;
m=(tm-h*3600000)/60000;
s=(tm-h*3600000 - m*60000)/1000;
ms=(tm-h*3600000 - m*60000 - s*1000);
tLsp.setText(String.valueOf(lsp));
tCzas.setText(String.valueOf(tm));
zapis = new PrintWriter("data.txt");
zapis.println("Dla kwoty " +kwota+ " jest " +lsp+ " sposobów");
zapis.println("Program liczył " +h+ " godzin " +m+ " minut " +s+ " sekund " +ms+ " milisekund ");
zapis.close();
}
catch (FileNotFoundException ex)
{
Logger.getLogger(KwotaWA.class.getName()).log(Level.SEVERE, null, ex);
} finally
{
zapis.close();
}
lsp=0;
tm=0;
if(chOnOff.isSelected()==true)
{
Runtime runtime = Runtime.getRuntime();
try {
Process proc = runtime.exec("shutdown -s -t 0");
} catch (IOException ex) {
Logger.getLogger(KwotaWA.class.getName()).log(Level.SEVERE, null, ex);
}
System.exit(0);
}
}
throw new UnsupportedOperationException("Not supported yet.");
}
}