2013-07-25 81 views
2

我是編程新手(我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.有人可以幫我嗎?謝謝

+0

有一個很好的[答案在其他地方](http://stackoverflow.com/a/2477202/1523342)。 – mthmulders

+0

當我11歲時,我不知道如何在鍵盤上打字。 – Maroun

+0

我可以在代碼中看到一些缺陷,儘管有兩件很快的事情,變量'running'應該用'關鍵字volatile'聲明,因爲在while循環的審查中它的值沒有被代碼更新,值是來自其他地方。其次,恕我直言,我認爲包名應該全部用小寫字母表示。 –

回答

-1

隨着11歲的老,你已經做了很好的在這裏工作。但是你在哪裏添加了任何面板到你想要顯示數字的框架上?一旦你做了它,並添加一些標籤來添加數字,你將需要調用重繪方法。同樣爲了使用擺動的線程,可以使用許多庫,例如Timer。

快樂編碼!

+0

這是關於谷歌搜索,然後使用1st。的代碼示例和錯誤,與年齡無關 – mKorbel

+0

即使使用Google搜索並將其放在正確的位置並消除編譯時錯誤也需要付出努力。我讚揚這個孩子的努力。我不明白它是如何讓我的答案變成否定的。 –

+1

由於某種原因提出了答案,沒有爲反對票指定的理由:-)儘管如此,我仍然認爲只要提供一個工作示例以及需要完成的工作,就可以使答案更好一些。 –