每隔10s java从GUI获取数据

时间:2017-03-17 08:01:18

标签: java swing user-interface

我想在点击按钮时从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());

    }

2 个答案:

答案 0 :(得分:3)

  

我想在点击按钮

时从GUIinput获取数据

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

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

有两种常见的解决方案:

  1. 使用Swing Timer每10秒安排一次事件。
  2. 使用单独的线程。然后在这个线程中你可以使用Thread.sleep()因为它不会影响EDT。通常,您会使用SwingWorker和"发布"结果每10秒钟一次。
  3. 所以看看Swing Tutorial。您将找到以下主题:

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

答案 1 :(得分:0)

我不明白,问题名称说你想要你的数据每10秒然后你说你进入无限循环(???)

删除while(true)以逃避无限循环