2016-02-12 101 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