Progressbary problem.

0

mam napisane 2 progress bary. Niestety nie działaja.. Co jest nie tak??

import java.awt.*;
import GUI.ProgressbarDemo;
import java.awt.event.*;
import java.util.concurrent.ThreadFactory;

import javax.swing.*; 

public class Progress extends JFrame  {
    int b = ProgressbarDemo.m;
    JProgressBar current,maka,tluszcz,cukier;
    JTextArea out;
    JButton find;
    Thread runner;
    int num = 80;
    int num2 = 50;
    JLabel cukierText,tluszczText,makaText;

    Thread watek = null;
    Thread watek2 = null;

    public Progress() {
        super("Progress");

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JPanel pane = new JPanel();
        pane.setLayout(new GridLayout(3, 3));
        cukierText  = new JLabel("    ilosc cukru");
        cukier = new JProgressBar(0, 100);
        cukier.setStringPainted(true);
        pane.add(cukier);
        pane.add(cukierText);
        setContentPane(pane);
        makaText  = new JLabel("    ilosc maki");
        maka = new JProgressBar(0, 100);

        maka.setStringPainted(true);
        pane.add(maka);
        pane.add(makaText);
        setContentPane(pane);

    }

    public void iterate() {
        if (num> 0) {
            cukier.setValue(num);
            watek = new Thread(new Runnable() {
                public void run() {
                    try {

                        Thread.sleep(1000);

                    } catch (InterruptedException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
            num -= 10;
                            }
            });
            watek.start(); 
        }
            else{
                watek.stop();
            }

        if (num2 > 0) {
            maka.setValue(num2);
            watek2 = new Thread(new Runnable() {
                public void run() {
                    try {

                        Thread.sleep(1000);

                    } catch (InterruptedException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
            num2 -= 5;

                }
            });
            watek2.start();  
        }
        else{
            watek2.stop();
        }

    }

    public static void main(String[] arguments) {
        Progress frame = new Progress();
        frame.pack();
        frame.setVisible(true);
        frame.iterate();

    }
}
0

wszelkie iteracje rób w metodzie run(), w niej dajesz jakąś pętlę

iterate powinna wygladać jakoś tak, analogicznie dla 2 progressbara-tworzysz wątek, implementujesz run i w run bawisz się:
public void iterate() {
watek = new Thread(new Runnable() {
public void run() {
while((num> 0))
try {
cukier.setValue(num);
num -= 10;
Thread.sleep(1000);

                                    } catch (InterruptedException e) {
                                            // TODO Auto-generated catch block
                                            e.printStackTrace();
                                    }

                                        }
                    });

//watek2=new .. skopiuj run z pierwszego i pozmieniaj parametry

//na koncu odpalasz watki, nie musisz ich zatrzymywac przez stop():
watek.start();
watek2.start();
}

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