簡體   English   中英

按下按鈕時的Java計時器

[英]Java timer when button pressed

我對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;
}

如果我按下運行按鈕,則計時器不會啟動。

我的猜測是問題在於計時器始終是事件的源,這意味着如果語句永遠都不為真,則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());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM