当前位置: 首页 > 面试题库 >

每10秒从GUI获取一次数据

柏高洁
2023-03-14
问题内容

我想在单击按钮时从GUIinput获取数据,我编写此代码以获取数据,然后进入无限循环

  private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
     while(true){
        try {
            Thread.sleep(10000);
        } catch (InterruptedException ex) {
            Logger.getLogger(NewJFrame.class.getName()).log(Level.SEVERE, null, ex);
        }
        System.out.println("hello");
        System.out.println(name.getText());

    }

问题答案:

我想单击按钮时从GUIinput获取数据

您正在上使用Thread.sleep(...)Event Dispatch Thread (EDT)这将阻止GUI响应事件,直到循环完成为止。

不要在EDT上使用Thread.sleep(…)!

有两种常见的解决方案:

  1. 使用Swing计时器每10秒安排一次事件。
  2. 使用单独的线程。然后,在此线程中,可以使用Thread.sleep(),因为它不会影响EDT。通常,您将SwingWorker每10秒使用一个结果并“发布”。

因此,请查看Swing教程。您将找到有关以下主题:

  1. How to Use Swing Timers
  2. Concurrency in Swing -将解释有关EDT和SwingWorker的信息。


 类似资料:
  • 我想每10秒执行一段代码。我在这个论坛上找到了一个例子,但我的实现有一些问题。 我得到这个错误,指向:

  • 问题内容: 我有以下Python Tkinter代码,该代码每10秒重绘一次标签。我的问题是,对我而言,似乎是一遍又一遍地在旧标签上绘制新标签。因此,最终,几个小时后,将有数百个图纸重叠(至少从我的理解来看)。这会占用更多内存还是会引起问题? 在我的示例中,我仅使用一个标签。我知道可以用来更新标签甚至是文本。但是实际要做的是刷新标签(如表格),按钮和填充物的网格,以与可用的最新数据相匹配。 从我了

  • 问题内容: 使用它可以在指定的时间启动功能: 但是,如果我想多次启动该功能怎么办?每次经过一个时间间隔,我都想执行该功能(假设每60秒执行一次)。 问题答案: 如果您不在乎内的代码是否可能花费比您的间隔更长的时间,请使用: 一遍又一遍地触发作为第一个参数传入的函数。 更好的方法是与函数一起使用: 这样可以保证在执行代码之前不会进行下一个调用。在本示例中,我将其用作函数参考。这是给函数命名并在其中调

  • 问题内容: 我有一个C#Windows窗体,其中包含几个文本框和按钮。它还具有显示sql表的datagrid视图。我创建了一个刷新按钮,使我可以刷新表,以便可以看到表中的更新项。我想知道有没有办法自行刷新表。就像每10秒一次,或者代替表格,也许每10秒就会自动加载或刷新整个表格吗? 问题答案: 使用Timer控件,它调用了UI线程,并且可以通过表单设计器使用该控件。

  • 问题内容: 我想每0.5秒触发一次功能,并且能够启动,停止和重置计时器。我不太了解Python线程的工作方式,并且在使用python计时器时遇到了困难。 但是,当我执行两次时,我会不断得到帮助。有没有解决的办法?我尝试在每次开始之前申请。 伪代码: 问题答案: 最好的方法是一次启动计时器线程。在计时器线程中,你需要编写以下代码 然后,在启动计时器的代码中,可以停止事件来停止计时器。

  • 问题内容: 我有一个这样构造的mysql反馈数据库: 名称| 位置| 反馈 瑞安| 英格兰| 大力支持 显然,条目更多。我正在尝试建立一个反馈div,它通过ajax每10秒显示一个新的反馈项。 所以我构造了这个: 这是我的PHP文件: 但是,这仅显示两个。它不会一直显示新的,而是纯粹显示第一个然后显示第二个并停止。 我究竟做错了什么?谢谢 :) 问题答案: 你想做一个吗? 要么: 或者,如果您希望