2016-02-12 105 views
0

我試圖顯示一個倒計時,我正在搜索如何做到這一點,並嘗試代碼,但這不是我在這裏要問的問題,雖然我很高興如果你在這方面也幫了我的忙。在實例對象中創建JFrame

這似乎有點基本,但我似乎無法得到JFrame顯示。 我預測如果我創建了testmain的一個實例,並且在構造函數中創建了一個JFrame,它將顯示JFrame。

我甚至嘗試從鍵盤獲取輸入,以便它停下來。 但沒有任何反應,程序立即結束。 它說建立成功。

我錯過了什麼?

public class testmain 
{ 
    Timer t; 
    JLabel label; 

    public void testmain() 
    { 

     JFrame myFrame = new JFrame(); 
     label = new JLabel(); 
     myFrame.setSize(400, 400); 
     myFrame.setAlwaysOnTop(true); 
     myFrame.setLocationRelativeTo(null); 

     label.setText("This works"); 
     myFrame.add(label); 
     myFrame.setVisible(true); 
    //  Scanner keyboard = new Scanner(System.in); 
    //  keyboard.nextInt(); 
    //  start(); 


    } 
    void start() 
    { 
     t = new Timer(1000, new TimeTest()); 
    } 
    class TimeTest implements ActionListener 
    { 
     private int counter = 0; 
     @Override 
     public void actionPerformed(ActionEvent e) 
     { 
      label.setText("" + counter++); 

      if(counter == 10) 
       t.removeActionListener(this); 
     } 
    } 

    public static void main(String[] args) 
    { 
     testmain tester = new testmain(); 


    } 
} 

回答

1

你有一個僞構造函數,它沒有被調用。構造函數沒有返回類型,不是void,也不是任何東西。

變化

// this never gets called 
public void testmain() { 
} 

// but this **will** be called 
public testmain() { 

} 

順便說一句,你將要學習和使用Java naming conventions。變量名應該全部以小寫字母開頭,而類名則以大寫字母開頭。瞭解這一點,並遵循這一點將使我們能夠更好地理解您的代碼,並讓您更好地理解其他代碼。

所以類實際上應該稱爲牛逼 EST 中號 AIN:

public class TestMain { 

    public TestMain() { 
     // constructor code here 
    } 

} 
+0

天啊,怎麼會一直我這麼愚蠢到把虛空那裏... 感謝您回答!而且我知道命名約定,但我只是急於讓一個類快速地測試一些東西,但最終使用該類來測試所有內容,然後將其放入我的實際項目中。無論如何,謝謝! – babbi