按下按钮时的Java计时器

时间:2018-02-13 06:32:52

标签: java swing timer

我是java的新手,当我按下按钮但我无法启动它时,我正在尝试启动计时器。我试了几行代码,但似乎没什么用。

我已经宣布了我的标签,文本字段和计时器:

private JTextField JTFHours;
private JTextField JTFMinutes;
private JTextField JTFSeconds;
private int ticks = 0;
private Timer timer;

之后在创建GUI中我有这个

JLTimer = new JLabel("     DIGITAL TIMER     ");
jPRightTimer.add(JLTimer);
JTFHours = new JTextField(2);
jPRightTimer.add(JTFHours);
JLTimer = new JLabel(" : ");
jPRightTimer.add(JLTimer);
JTFMinutes = new JTextField(2);
jPRightTimer.add(JTFMinutes);
JLTimer = new JLabel("  :  ");
jPRightTimer.add(JLTimer);
JTFSeconds = new JTextField(2);
jPRightTimer.add(JTFSeconds);
timer = new Timer(1000, this);
timer.start();

在我的活动方法中我有这个:

Object source = event.getSource();

if (source == jBRun) {
    JTFHours.setText(Integer.toString(ticks / 360));
    JTFMinutes.setText(Integer.toString(ticks / 60));
    JTFSeconds.setText(Integer.toString(ticks % 60));
    ticks = ticks + 1;
}

如果我按下运行按钮,计时器不会启动。

1 个答案:

答案 0 :(得分:2)

我的猜测是,问题是计时器始终是事件的来源,这意味着如果语句永远不为真,JButton将永远不会成为源。试试这个。

//Do the stuff you had

JButton button = new JButton("Start");
int ticks = 0;

Timer t = new Timer(1000, (event) -> {
    JTFHours.setText(Integer.toString(ticks / 360));
    JTFMinutes.setText(Integer.toString(ticks / 60));
    JTFSeconds.setText(Integer.toString(ticks % 60));
    ticks = ticks + 1;
});

button.addActionListener((event) -> t.start());