当前位置: 首页 > 知识库问答 >
问题:

无法更新JLabels分钟和小时我的计时器在java.swing[重复]

呼延庆
2023-03-14

我正在试着用java.swing做一个秒表和一个秒表我已经试过秋千了。定时器和定时器任务。你能帮帮我吗?

这是stopwatch.java课

    public class Cronometro {
    private int secondi;
    private int minuti;
    private int ore;
    private boolean state=true;
    
    public Cronometro(){
        
    }
    
    public void crono(JLabel s, JLabel m, JLabel h, ActionEvent evt){
        state=true;
        
        Thread t = new Thread(){
            public void run(){
                for(;;){
                    if(state==true){
                       try{
                           sleep(10);
                           secondi++;
                           if(secondi>60){
                               secondi=0;
                               minuti++;
                               
                           }
                           if(minuti>60){
                               secondi=0;
                               minuti=0;
                               ore++;
                           }
                           s.setText(" :"+secondi);
                           m.setText(" : "+minuti);
                           h.setText(""+ore);
                       } catch(Exception e){
                           
                       }
                    }
                    else{
                        break;
                    }
                }
            }
        };
        
        t.start();
    }
    
    public void setState(boolean state){
        this.state=state;
    }
    
}

gui/main。java几乎都是由netbeans生成的

共有1个答案

双弘益
2023-03-14

这就是如何使用Swing定时器每秒运行update

class Cronometro {
    private int secondi;
    private int minuti;
    private int ore;
    private boolean state=true;
    private Timer timer;

    private final JLabel s, m,  h;

    public Cronometro(JLabel s, JLabel m, JLabel h) {
        this.s = s;
        this.m = m;
        this.h = h;
    }

    public void crono(JLabel s, JLabel m, JLabel h){
        state=true;
        if(timer != null) {
            timer.stop();
        }

        timer = new Timer(1000, e->update());
        timer.start();
    }

    public void update(){

        if(! state) return;
        secondi++;
        if(secondi>60){
            secondi=0;
            minuti++;
        }

        if(minuti>60){
            secondi=0;
            minuti=0;
            ore++;
        }
        s.setText(" :"+secondi);
        m.setText(" : "+minuti);
        h.setText(""+ore);
    }

    public void setState(boolean state){
        this.state=state;
    }
}

附带说明:为了改进应用程序结构,引入一个封装所需信息(秒、分钟、小时)的模型类。在Cronometro和GUI之间共享此模型。

 类似资料:
  • 我想用java做秒表。秋千和秒表课。java,但由于某种原因,当我运行它时,只有几秒钟有效,而小时和分钟保持在0。你能帮我吗? 这是秒表。java类 gui/main。java几乎都是由netbeans生成的

  • 嗨,我从以下网站获得了倒计时代码: https://codepen.io/SitePoint/pen/MwNPVq, 并已修改为: 我所做的更改是,我检查了分钟和秒是否都为0,然后变量“deadline”应该用新时间更新。倒计时计时器工作正常,但当它达到0:0时,它进入该功能,一切停止。

  • 我的函数返回时间,例如。如何将时间取整到最接近的一分钟,使变为并使变为。

  • 我试图创建一个倒计时计时器,努力让它显示小时、分钟、秒。 努力使分钟和小时正确显示。 除此之外,我还需要计时器在午夜开始计时17小时。按照3600*17(17小时)的思路思考,然后去掉剩余的持续时间?

  • 我试图创建一个基于时间的倒计时钟。它不是基于current_dates。将被拉取的初始时间将来自一个单独的php文件。这将是一个基于浏览器的游戏。当有人点击按钮来启动这个脚本。它将检查是否满足某些要求,如果满足,那么这个脚本将启动。根据对象的级别,它将拉动该进行中级别的初始计时器。希望这有意义。无论如何,我基于我提供的第一个代码的计时器脚本。 此脚本仅占分钟和秒。我对它进行了修改,使其也包括了天和

  • 我刚刚开始学习java,我有一个问题,似乎有一个简单的答案。。。