[英]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.