在实例对象中创建 JFrame
Creating JFrame in an instance object
我正在尝试显示倒计时,我正在搜索如何操作并尝试代码,但这不是我在这个问题中要问的问题,不过如果你能帮助我我会很高兴在那个地区也是。
这似乎有点初级,但我似乎无法显示 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();
}
}
您有一个未被调用的伪构造函数。构造函数没有 return 类型,不是 void,不是任何东西。
改变
// this never gets called
public void testmain() {
}
到
// but this **will** be called
public testmain() {
}
顺便说一句,您将想要学习和使用 Java naming conventions。变量名称应全部以小写字母开头,而 class 名称应以大写字母开头。了解这一点并遵循这一点将使我们能够更好地理解您的代码,并使您能够更好地理解其他人的代码。
所以 class 实际上应该叫做 TestMain:
public class TestMain {
public TestMain() {
// constructor code here
}
}
我正在尝试显示倒计时,我正在搜索如何操作并尝试代码,但这不是我在这个问题中要问的问题,不过如果你能帮助我我会很高兴在那个地区也是。
这似乎有点初级,但我似乎无法显示 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();
}
}
您有一个未被调用的伪构造函数。构造函数没有 return 类型,不是 void,不是任何东西。
改变
// this never gets called
public void testmain() {
}
到
// but this **will** be called
public testmain() {
}
顺便说一句,您将想要学习和使用 Java naming conventions。变量名称应全部以小写字母开头,而 class 名称应以大写字母开头。了解这一点并遵循这一点将使我们能够更好地理解您的代码,并使您能够更好地理解其他人的代码。
所以 class 实际上应该叫做 TestMain:
public class TestMain {
public TestMain() {
// constructor code here
}
}