【问题标题】:MouseMoved Timer Countdown in Swing摇摆中的 MouseMoved 计时器倒计时
【发布时间】:2017-04-08 23:25:08
【问题描述】:

我想问一下如何在第一次移动鼠标(并在标题中显示)时启动定时器进行 60 秒倒计时。然后最后我想显示一些 jOptionPane.Message 或其他东西。这是代码...

private void jPanel2MouseMoved(java.awt.event.MouseEvent evt)   {                                   
    jPanel1.setBounds(evt.getX(), evt.getY(), jPanel1.getWidth(), jPanel1.getHeight());
    int a = KEK.nextInt(jPanel2.getWidth()-15);
    int b = KEK.nextInt(jPanel2.getHeight()-15);
    if(jPanel1.getBounds().intersects(jPanel3.getBounds()) == true){
        rurin++;
        jPanel3.setBounds(a, b, jPanel3.getWidth(), jPanel3.getHeight());
        this.setTitle("Number of red dots touched: " +rurin+" ");
    } 
}

【问题讨论】:

  • 您自己没有向我们展示任何计时器代码,也没有发布可编译/可运行的代码,这让我们很难知道您卡在哪里或如何以一种不仅可以帮助您,也可以帮助有类似问题的未来访客。为了获得最佳帮助,并查看您可能做错了什么,请在您的问题中发布您最好的善意minimal reproducible example 解决方案尝试。这是一个可运行的小型程序,您在此处发布为代码格式的文本,它充分向我们展示了您的问题。祝你好运。
  • 使用Swing Timer。也许启动两个计时器。第一个 Timer 将每秒触发一次,因此您可以用剩下的秒数更新标签。第二个定时器将在 60 秒内触发。它将停止第一个 Timer,然后显示您的 JOptionPane。

标签: java swing timer


【解决方案1】:
  1. 创建实现ActionListener的类的实例:示例EmilsListener list = new EmilsListener();
  2. 创建Timer类的实例,并将对象和重启时间传递给它:Timer tym = new Timer(1000,list);
  3. 将监听器添加到定时器,然后启动定时器:例如
tym.addActionListener(list);
tym.start();//But before this make sure you defined the EmilsListener class which must also contain your `jPanel2MouseMoved()` method.

您可以在this stackoverflow page 接受的答案中查看计时器的完整示例

【讨论】:

  • 对不起,我不明白(尤其是 EmilsListener),你能在代码中使用它吗?
  • @MatějPospíšil, Sorry i don't get it - 你读过教程了吗?您是否按照本课程中提供的链接获取另一个问题的示例。您是否在论坛中搜索过使用 Timer 类的其他示例?
  • 是的,我做到了。 . .
  • EmilListener 只是一个实现ActionListener 以便能够使用actionPerformed() 方法的类。在你的情况下,你打电话给jPanel2MouseMoved()是因为你想做的事。因此,您可以将EmilListener 更改为任何名称。我选择使用EmilListener,所以你也可以选择你想要的。
  • 事实上,这背后的整个想法是让您使用Timer 类,好吧。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-23
相关资源
最近更新 更多