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