I am new to programming (I'm 11 and hoping for java coding to be my career, but its just a hobby right now :)) and I just made a countdown program, here is the class:
package me.NoahCagle.JAVA;
import javax.swing.JFrame;
public class Main extends JFrame implements Runnable {
private static final long serialVersionUID = 1L;
public static int width = 600;
public static int height = 500;
public static String title = "Countdown!";
public static boolean running = false;
public int number = 11;
public Thread thread;
Dimension size = new Dimension(width, height);
public Main() {
    super(title);
    setSize(size);
    setResizable(false);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setLocationRelativeTo(null);
    setVisible(true);
}
public static void main(String[] args) {
    Main m = new Main();
    m.start();
}
public void start() {
    if (running) {
        return;
    }
    running = true;
    Thread thread = new Thread(this);
    thread.start();
}
@SuppressWarnings("static-access")
public void run() {
    while (running) {
        number--;
        if (number == -1) {
            System.out.println("Done!");
            System.exit(0);
        }
        try {
        thread.sleep(1000);
        }catch (Exception e) {
            e.printStackTrace();
            System.exit(0);
        }
        System.out.println("" + number);
    }
}
public void stop() {
    if (!running) {
        return;
    }
    running = false;
    try {
        thread.join();
    }catch (Exception e) {
        e.printStackTrace();
        System.exit(0);
        }
    }
}
That may not have been necessary, but whatever. Well like I was saying, if you read the code, you will notice that it prints the value to the console. Well, if I could get that to display on a JLabel, while updating at the same time. I have tried just doing setText("" + number) thinking that because I have a thread going, it would repaint. But that didn't happen. It was just stuck at 11. Can someone please help me? Thanks
 
     
     
     
    