使用JButton的Java Timer

时间:2013-12-08 17:33:14

标签: java swing timer jbutton

我有一些我不明白的问题,如何正确使用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");
            }
        });
    }
}

如果代码有一些不必要的错误,请原谅。我从真正的一个代码中删除并更改了很多东西,这样就可以更容易理解和清晰阅读。

1 个答案:

答案 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");
        }
    });