【问题标题】:Blinking integers in Java [closed]Java中的闪烁整数[关闭]
【发布时间】:2015-01-22 09:46:38
【问题描述】:

我想制作一个显示随机数的程序,在 JLabel 或控制台中一次闪烁一个。我正在制作一个游戏,玩家需要记住两次闪回时间显示的数字。 有谁知道如何让数字闪烁?

【问题讨论】:

  • 你应该展示你到目前为止的工作,以便我们知道你有什么确切的问题。你知道如何显示 JLabel 吗?你知道如何改变价值吗?如果是,那么您可能可以使用 Timer 类 (docs.oracle.com/javase/7/docs/api/java/util/Timer.html) 来安排具有特定间隔的标签更新。
  • 我对此很陌生,但我确实知道如何显示 JLabel。我不太明白的是,每次 JLabel 闪烁时如何让一个新数字出现。

标签: java random int blink


【解决方案1】:

不幸的是,我没有任何 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);

请注意,它没有经过测试,这只是我想出的第一个概念,但也许你可以继续努力。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-12
    • 1970-01-01
    • 2011-02-28
    • 2021-07-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多