0

I am trying to make a very basic progress bar with JSwing that changes very second. The bar will be full once counter is equal to refresh_timer/1000. The problem is when I divide these two values and multiply the quotient by 100, I get 0! I cannot figure out why. I tried casting the value to a float and it still does not work. I feel like I am going crazy.

    /** Time to look for newer jobs
     *  Units are in seconds!*/
    static int refresh_timer = 60 * 1000;

    private void ProgressBar() {
            Timer barprogress_timer = new Timer(1000, new ActionListener(){
            int  counter = 0;
            @Override
            public void actionPerformed(ActionEvent e) {
                    if (!app_isRefreshing) {
                        //if ((counter * 1000) >= refresh_timer) counter = 0;

                        counter++;
                        System.out.println("COUNTER = " + counter);
                        System.out.println("EDITED REFRESH TIMER = " + refresh_timer/1000);
                        System.out.println("THE MATH IS: " + (counter / refresh_timer/1000) * 100);
                        app_refreshbar.setValue(0);
                        app_refreshbar.revalidate();
                        app_refreshbar.repaint();

                    }
                }

            });
            barprogress_timer.start();
            barprogress_timer.setRepeats(true); 
        }

Here is my console log for proof:

COUNTER = 1
EDITED REFRESH TIMER = 60
THE MATH IS: 0
COUNTER = 2
EDITED REFRESH TIMER = 60
THE MATH IS: 0
COUNTER = 3
EDITED REFRESH TIMER = 60
THE MATH IS: 0
COUNTER = 4
EDITED REFRESH TIMER = 60
THE MATH IS: 0
COUNTER = 5
EDITED REFRESH TIMER = 60
THE MATH IS: 0
COUNTER = 6
EDITED REFRESH TIMER = 60
THE MATH IS: 0
COUNTER = 7
EDITED REFRESH TIMER = 60
THE MATH IS: 0
COUNTER = 8
EDITED REFRESH TIMER = 60
THE MATH IS: 0
COUNTER = 9
EDITED REFRESH TIMER = 60
THE MATH IS: 0
COUNTER = 10
EDITED REFRESH TIMER = 60
THE MATH IS: 0
COUNTER = 11
EDITED REFRESH TIMER = 60
THE MATH IS: 0
COUNTER = 12
EDITED REFRESH TIMER = 60
THE MATH IS: 0
COUNTER = 13
EDITED REFRESH TIMER = 60
THE MATH IS: 0
COUNTER = 14
EDITED REFRESH TIMER = 60
THE MATH IS: 0
COUNTER = 15
EDITED REFRESH TIMER = 60
THE MATH IS: 0
COUNTER = 16
EDITED REFRESH TIMER = 60
THE MATH IS: 0
COUNTER = 17
EDITED REFRESH TIMER = 60
THE MATH IS: 0
COUNTER = 18
EDITED REFRESH TIMER = 60
THE MATH IS: 0
COUNTER = 19
EDITED REFRESH TIMER = 60
THE MATH IS: 0
COUNTER = 20
EDITED REFRESH TIMER = 60
THE MATH IS: 0
pogh10
  • 41
  • 10
  • In integer division, if you divide 1 by 60000 you get 0. You have to use floats or doubles. – Egor Jun 11 '20 at 03:36
  • int refresh_timer = 60; and add your condition as (counter == refresh_timer) then counter = 0; – Govind Jun 11 '20 at 03:59

0 Answers0