在实例对象中创建JFrame

时间:2016-02-12 00:04:57

标签: java constructor jframe main

我正在尝试显示一个倒计时,我正在搜索如何做到这一点并尝试编码但是这不是我在这个问题中要求的,尽管如果你帮助我,我会很高兴区域也是。

这看起来有点基本但似乎无法让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 个答案:

答案 0 :(得分:1)

你有一个没有被调用的伪构造函数。构造函数没有返回类型,没有空白,没有任何东西。

更改

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

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

}

另外,您需要学习并使用Java naming conventions。变量名都应以较低的字母开头,而类名以大写字母开头。了解并遵循这一点将使我们能够更好地理解您的代码,并使您能够更好地理解其他代码。

因此该课程实际上应该被称为 T \ test M ain:

public class TestMain {

    public TestMain() {
        // constructor code here
    }

}