Java 每10秒从GUI获取一次数据

Java 每10秒从GUI获取一次数据,java,swing,user-interface,Java,Swing,User Interface,我想在点击按钮时从GUIinput获取数据,我编写了这个代码,它获取数据,然后进入无限循环 private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { while(true){ try { Thread.sleep(10000); } catch (Interrup

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

    }

我不明白,问题的名字说你们每10秒需要你们的数据,然后你们说你们进入无限循环

移除whiletrue以逃避无限循环

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

你正在使用线程。睡眠。。。在事件调度线程EDT上,这将阻止GUI响应事件,直到循环完成

不要使用线程。睡眠。。。在美国东部夏令时

有两种常见的解决方案:

使用摆动计时器每10秒安排一次事件。 使用单独的线程。然后在此线程中可以使用thread.sleep,因为它不会影响EDT。通常,您会使用SwingWorker并每10秒发布一次结果。 因此,请看一看。您将找到以下主题:

如何使用摆动计时器 Swing中的并发性-这将解释EDT和SwingWorker。
我需要循环,因为我必须保持每10秒读取和更新数据,如果我删除,而它只显示一次数据,但这不是一个无限循环,正是你所寻找的吗?我有两个文本字段和按钮的GUI保持每10秒读取一次并打印数据,你到底有什么问题?我编写了代码,我运行应用程序并单击按钮,它运行并打印,但在程序没有响应任何命令或单击之后,我无法停止GUI或程序。您必须将无限循环放在一个单独的线程上,并且您应该使其成为恶魔,以便您的应用程序仍然可以终止。