Java 中的闪烁整数
Blinking integers in Java
我想制作一个显示随机数的程序,在 JLabel 中或仅在控制台中一次显示一个。我正在制作一个游戏,玩家需要记住显示的数字两次闪烁。
有谁知道如何让数字闪烁?
不幸的是,我没有任何方便的 GUI 项目来测试它(我可能会在一瞬间作为命令行项目),但我认为一种方法是:
(我已经删除了 HideTask,因为当你想再次 运行 它时它会带来一些麻烦,而且我认为手头的任务并不真正需要它 - 只需调用 sleep() : ))
class ShowTask extends TimerTask {
JLabel label;
Random generator = new Random();
//HideTask hTask;
//java.util.Timer timer = new java.util.Timer();
long period = 500; // ms
public Task(JLabel pLabel){
label = pLabel;
//hTask = new HideTask(pLabel);
}
public void run(){
int i = generator.nextInt(100);
setLabel(i);
// if you want it to go SHOW HIDE SHOW HIDE instead of SHOW SHOW SHOW then:
//timer.schedule(hTask, period);
// just wait
Thread.sleep(period);
hideLabel();
}
void setLabel(int i){
...
}
}
/*
class HideTask extends TimerTask {
JLabel label;
public HideTask(JLabel pLabel){
label = pLabel;
}
public void run(){
hideLabel();
}
void hideLabel(){
...
}
}
*/
你想开始的时间:
ShowTask task = new ShowTask();
long delay = 0; // ms
long period = 1000; // ms
java.util.Timer timer = new java.util.Timer();
timer.scheduleAtFixedRate(task, delay, period);
请注意,它没有经过测试,这只是我提出的第一个概念,但也许您可以从中继续努力。
我想制作一个显示随机数的程序,在 JLabel 中或仅在控制台中一次显示一个。我正在制作一个游戏,玩家需要记住显示的数字两次闪烁。 有谁知道如何让数字闪烁?
不幸的是,我没有任何方便的 GUI 项目来测试它(我可能会在一瞬间作为命令行项目),但我认为一种方法是:
(我已经删除了 HideTask,因为当你想再次 运行 它时它会带来一些麻烦,而且我认为手头的任务并不真正需要它 - 只需调用 sleep() : ))
class ShowTask extends TimerTask {
JLabel label;
Random generator = new Random();
//HideTask hTask;
//java.util.Timer timer = new java.util.Timer();
long period = 500; // ms
public Task(JLabel pLabel){
label = pLabel;
//hTask = new HideTask(pLabel);
}
public void run(){
int i = generator.nextInt(100);
setLabel(i);
// if you want it to go SHOW HIDE SHOW HIDE instead of SHOW SHOW SHOW then:
//timer.schedule(hTask, period);
// just wait
Thread.sleep(period);
hideLabel();
}
void setLabel(int i){
...
}
}
/*
class HideTask extends TimerTask {
JLabel label;
public HideTask(JLabel pLabel){
label = pLabel;
}
public void run(){
hideLabel();
}
void hideLabel(){
...
}
}
*/
你想开始的时间:
ShowTask task = new ShowTask();
long delay = 0; // ms
long period = 1000; // ms
java.util.Timer timer = new java.util.Timer();
timer.scheduleAtFixedRate(task, delay, period);
请注意,它没有经过测试,这只是我提出的第一个概念,但也许您可以从中继续努力。