我对 Java 非常陌生(只使用了大约一周),并且正在开发商店模拟器。基本上我只想立即完成基本的事情,比如在屏幕上显示一个关闭前的时间和打开后的一段时间。
我在我的 Simulation extends javax.swing.JFrame 类中做了以下函数:
public void incOpenTime() {
timeOpen++;
int hours = timeOpen / 3600;
int minutes = (timeOpen % 3600) / 60;
int seconds = (timeOpen % 3600) % 60;
this.openTime.setText((hours < 10 ? "0" : "") + hours
+ ":" + (minutes < 10 ? "0" : "") + minutes
+ ":" + (seconds < 10 ? "0" : "") + seconds);
decTimeLeft();
}
public void decTimeLeft() {
int remainingTime = 28800 - timeOpen;
int hours = remainingTime / 3600;
int minutes = (remainingTime % 3600) / 60;
int seconds = (remainingTime % 3600) % 60;
this.timeLeft.setText((hours < 10 ? "0" : "") + hours
+ ":" + (minutes < 10 ? "0" : "") + minutes
+ ":" + (seconds < 10 ? "0" : "") + seconds);
}
使用 setText() 方法的 openTime 和 timeLeft 变量是 GUI 本身的一部分。
主要是这样调用incOpenTime:
while(this.timeOpen < 28800)
{
incOpenTime();
}
首先,当我运行它时,它基本上只是通过循环并仅在最后一次输出到屏幕。我将如何做到这一点,使时代不断变化?
其次,我想稍微延迟一下……也许每秒大约 1 毫秒,这样模拟运行速度会更慢,并且输出到屏幕(稍后)的其他数据更具可读性。我试过 Thread.sleep(1); 在循环中,但在更改时不显示数字。
请帮忙。
谢谢
编辑:
这是我为使其正常工作所做的工作。主要:
timer = new Timer();
for(int i=1; i<= 28800; i++)
{
timer.schedule(new task(), 1*i);
}
新建了一个类:
class task extends TimerTask {
@Override
public void run() {
incOpenTime();
}
}