【问题标题】:JAVA : How do I reduce the timer's time when the timer is running?JAVA:如何在定时器运行时减少定时器的时间?
【发布时间】:2016-04-08 18:10:06
【问题描述】:

问题

我想让每次我输入错误的答案减少时间,我有更多这样的面板,我想在我移动到下一个面板时开始时间,而不是在我编译文件时定时器同时开始.

输出

代码

    int time = 7000;
    ans2.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent ae){
                if(ans2.getText().toUpperCase().equals("CAT")){
                    word.setText("CAT");
                    ans2.setText("");
                    if(word.getText().equals("CAT") && word2.getText().equals("CARD") && word3.getText().equals("TILES") && word4.getText().equals("MIRROR") && word5.getText().equals("COUCH") && word6.getText().equals("STRAW")){
                        JOptionPane.showMessageDialog(null, "COMPLETE\n Go to Next Stage");
                        word.setText(""); word2.setText(""); word3.setText(""); word4.setText(""); word5.setText(""); word6.setText("");
                        timer.stop();
                        CardLayout cl = (CardLayout) main.getLayout();
                        cl.show(main, "Stage2");
                    }
                }
                //i want to make "else if wrong answer time reduce 2 sec"
            }
        });
    JProgressBar progressBar = new JProgressBar(JProgressBar.HORIZONTAL, 0, 70);
    progressBar.setValue(70);
    progressBar.setPreferredSize(new Dimension(600, 20));
    ActionListener listener = new ActionListener() {    
        int counter = 70;
        public void actionPerformed(ActionEvent ae) {
            counter--;
            progressBar.setValue(counter);
            if (counter<1) {
                JOptionPane.showMessageDialog(null, "Game Over!");
                timer.stop();
                CardLayout cl = (CardLayout) main.getLayout();
                cl.show(main, "Main Menu");
            } 
        }
    };
    timer = new Timer(time, listener);
    timer.start();// i have main menu and i want the timer start when i press start button in main menu 

【问题讨论】:

  • 请清理您的代码,只留下相关部分。并描述您面临的特定编程问题,而不是您的意图。
  • 我找到了所有 6 个单词!
  • @SashaSalauyou 完成 :)
  • @zec 是的,它们在代码中列出:)
  • 我可能会建议你看看thisthis

标签: java swing timer


【解决方案1】:
  1. 您应该使用Swing Timer 而不是 AWT 计时器。阅读 API,有一些方法可以让您设置/更改计时器延迟。

  2. 不要使用 KeyListener 来处理文本字段上的 Enter 键。相反,您应该将 ActionListener 添加到文本字段。然后 Enter 键将调用该操作。

【讨论】:

  • 但我使用 import javax.swing.Timer;这没有什么区别吗?
  • @KiraKatou,你用什么方法来改变延迟?为什么你的代码仍然使用 KeyListener?
  • 关于我在计时器上仍然菜鸟的方法老兄,我已经把它改成了 actionlistener
  • @KiraKatou, `我仍然不喜欢计时器` - 这就是为什么您需要阅读 API 并尝试在 API 中找到的方法。
  • 我已经读过老兄,我认为我只需要 actionlistener,启动和停止方法,我尝试了重启方法,没有任何变化。而是用延迟来减慢时间?
猜你喜欢
  • 1970-01-01
  • 2015-06-02
  • 1970-01-01
  • 1970-01-01
  • 2020-05-25
  • 2020-06-13
  • 2016-01-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多