Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JButtons的Java定时器使用_Java_Swing_Timer_Jbutton - Fatal编程技术网

JButtons的Java定时器使用

JButtons的Java定时器使用,java,swing,timer,jbutton,Java,Swing,Timer,Jbutton,我有一个问题,我不明白,如何正确使用JButton的Java定时器 我需要什么的想法- 当我点击带有文本“0”的JButton时,计时器从两秒开始计数,直到零。 释放按钮时,程序检查情况: 如果计时器现在为0,则在JTextField中显示符号“+”,否则显示“0” 这是我的程序代码。有人可以添加我需要的东西来让程序像我想要的那样工作吗 public class DialPanel extends JPanel { private MainFrame frame; public

我有一个问题,我不明白,如何正确使用JButton的Java定时器

我需要什么的想法-
当我点击带有文本“0”的JButton时,计时器从两秒开始计数,直到零。
释放按钮时,程序检查情况:
如果计时器现在为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");
            }
        });
    }
}

如果代码中有不必要的错误,请原谅。我删除并更改了真实代码中的许多内容,以便阅读时更容易理解和清晰。

您可能只想使用
System.currentTimeMillis()
而不是使用计时器。
计时器
可能不是您正在寻找的计时器,而是秒表类型的对象

你可以这样做

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

我们真的需要看看你用计时器的方式,我是说是圣人还是魔鬼。(圣人与魔鬼是从Swing的角度来定义的;))我试图在互联网上寻找如何在JButton中添加计时器的方法,但我不明白。什么都不管用。这就是为什么我在这里问,是否有人可以添加任何类型的计时器,使程序像我所需要的那样工作。看看。这是我看过的,但我不知道如何在我的程序中实现它,这样它就可以工作了。没有人回答。。。实现一些计时器有那么难吗?我觉得自己很愚蠢,因为我没有意识到这样解决问题的方法。头脑糊涂了^ ^谢谢,成功了!)