我有一些我不明白的问题,如何正确使用JButton的Java计时器。
我需要的想法 -
当我点击JButton时文本为“0”然后启动计时器从两秒开始计数到零
当按钮被释放时,程序检查情况:
如果timer现在为0,则它在JTextField中显示“+”,否则显示“0”。
这是我的程序代码。有人可以添加我需要的东西,使程序像我想要的那样工作吗?
public class DialPanel extends JPanel {
private MainFrame frame;
public DialPanel(MainFrame frame) {
this.frame = frame;
this.setLocation(0, 90);
this.setSize(300, 290);
this.setLayout(null);
this.setBackground(color);
this.initContent();
}
// -------------------------------------------------------------------------
private JButton btnNumZero;
private JTextField txfNumber;
private void initContent() {
txfNumber = new JTextField();
this.add(txfNumber);
txfNumber.setSize(190, 30);
txfNumber.setLocation(30, 0);
txfNumber.setFocusable(false);
txfNumber.addActionListener(controller);
btnNumZero = new JButton();
this.add(btnNumZero);
btnNumZero.setText("0");
btnNumZero.setFocusable(false);
btnNumZero.setSize(30, 30);
btnNumZero.setLocation(10, 10);
btnNumZero.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
//Start someTimer countdown from two seconds
}
});
btnNumZero.addMouseListener(new MouseAdapter() {
@Override
public void mouseReleased(MouseEvent e) {
//Stop someTimer
//if someTimer == 0 seconds then do this line:
txfNumber.setText("+");
//else do this line:
txfNumber.setText("0");
}
});
}
}
如果代码有一些不必要的错误,请原谅。我从真正的一个代码中删除并更改了很多东西,这样就可以更容易理解和清晰阅读。
答案 0 :(得分:0)
您可能只想使用System.currentTimeMillis()
,而不是使用计时器。 Timer
可能不是您正在寻找的计时器,作为秒表类型对象。
你可以做这样的事情
long startTime;
long endTime;
btnNumZero.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
startTime = System.currentTimeMillis();
}
});
btnNumZero.addMouseListener(new MouseAdapter() {
@Override
public void mouseReleased(MouseEvent e) {
endTime = System.currentTimeMillis();
long difference = endTime - startTime;
if (difference > 2000)
txfNumber.setText("+");
else
txfNumber.setText("0");
}
});