无法在 java.swing 中为我的计时器更新分钟和小时的 JLabel
Can't update JLabels of minutes and hours for my chronometer in java.swing
我正在尝试用 java.swing 和秒表制作秒表
我已经尝试过 swing.Timer 和 TimerTask。
你能帮帮我吗?
这是stopwatch.javaclass
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生成
这就是您如何使用 Swing Timer 每秒 运行 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;
}
}
旁注:为了改进应用程序结构,引入了一个模型 class,它封装了所需的信息(秒、分钟、小时)。在 Cronometro
和 GUI 之间共享此模型。
我正在尝试用 java.swing 和秒表制作秒表 我已经尝试过 swing.Timer 和 TimerTask。 你能帮帮我吗?
这是stopwatch.javaclass
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生成
这就是您如何使用 Swing Timer 每秒 运行 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;
}
}
旁注:为了改进应用程序结构,引入了一个模型 class,它封装了所需的信息(秒、分钟、小时)。在 Cronometro
和 GUI 之间共享此模型。