我想把这段代码放在main()
中public class TestPane extends JPanel {
private JTextField field;
private JButton button;
private int tick;
private Timer timer;
public TestPane() {
field = new JTextField(10);
field.setEditable(false);
button = new JButton("Start");
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
button.setEnabled(false);
tick = 0;
timer.start();
}
});
timer = new Timer(1000, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("Success" + tick);
field.setText(Integer.toString(++tick));
if (tick > 4) {
timer.stop();
button.setEnabled(true);
}
}
});
timer.setInitialDelay(0);
setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridwidth = GridBagConstraints.REMAINDER;
add(field, gbc);
add(button, gbc);
}
}
这是做什么的;它打开一个窗口 然后有一个开始按钮 如果按下该开始按钮,它会在一段时间后显示一些文本
我想要做的是将代码放在main函数中 应该发生什么 没有开始按钮,当你运行程序时, 它应该在某个时间间隔内在该区域中设置文本 (自动不按按钮)
我试过但是失败了 这是代码
public static void main(String args[]) {
//int tick;
// Timer timer;
final Timer timer = new Timer(1000, new ActionListener() {
int tick=0;
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("Success" + ++tick);
if (tick > 4) {
((Timer)e.getSource()).stop();
}
}
});
timer.setInitialDelay(0);
System.out.format("About to schedule task.%n");
new NewJFrame();
System.out.format("Task scheduled.%n");
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new NewJFrame().setVisible(true);
}
});
}
我无法弄明白该怎么办?
答案 0 :(得分:3)
正如dict19所说,你可以这样做,也可以直接在main
方法中添加另一个你可以启动的地方,真的取决于你想要实现的目标:
public static void main(String args[]) {
final Timer timer = new Timer(1000, new ActionListener() {
int tick = 0;
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("Success" + ++tick);
if (tick > 4) {
((Timer) e.getSource()).stop();
}
}
});
timer.setInitialDelay(0);
System.out.format("About to schedule task.%n");
// timer.start(); Or here
System.out.format("Task scheduled.%n");
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new NewJFrame().setVisible(true); // previously new Test().setVisible(true);
timer.start();
}
});
}