我是編程新手(我11歲,希望Java編碼是我的職業,但現在只是一個愛好:)),我只是做了一個倒計時計劃,這裏是班級:進行更新JLabel
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);
}
}
}
這可能沒有必要,但無論如何。就像我說的那樣,如果你閱讀代碼,你會注意到它將值輸出到控制檯。那麼,如果我能在同時更新的同時將它顯示在JLabel上。我試過只是在setText(「」+ number)的思想,因爲我有一個線程去,它會重繪。但是那沒有發生。它只是停留在11.有人可以幫我嗎?謝謝
有一個很好的[答案在其他地方](http://stackoverflow.com/a/2477202/1523342)。 – mthmulders
當我11歲時,我不知道如何在鍵盤上打字。 – Maroun
我可以在代碼中看到一些缺陷,儘管有兩件很快的事情,變量'running'應該用'關鍵字volatile'聲明,因爲在while循環的審查中它的值沒有被代碼更新,值是來自其他地方。其次,恕我直言,我認爲包名應該全部用小寫字母表示。 –