Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在窗体上显示动态数据_Java - Fatal编程技术网

Java 在窗体上显示动态数据

Java 在窗体上显示动态数据,java,Java,我创建了一个表单,其中包含各种Jtextfields来显示数据。数据来自互联网来源,并且变化非常频繁(每隔几秒钟)。我不确定最好的方法 到目前为止,我有一个类可以根据请求检索数据并在本地存储数据。然后可以使用getter和计时器检索数据 例如 然后在表单文件MyForm.java中,我有: Timer timer = new Timer(2000, performUpdate); timer.start(); .... ActionListener performUp

我创建了一个表单,其中包含各种Jtextfields来显示数据。数据来自互联网来源,并且变化非常频繁(每隔几秒钟)。我不确定最好的方法

到目前为止,我有一个类可以根据请求检索数据并在本地存储数据。然后可以使用getter和计时器检索数据

例如

然后在表单文件MyForm.java中,我有:

   Timer timer = new Timer(2000, performUpdate);
   timer.start();

   ....

   ActionListener performUpdate = new ActionListener(){
          public void actionPerformed(ActionEvent evt){
              Grabber.update();
              jTextField1.setText(Grabber.getData());
             }
    };
我相信这会起作用,但我不确定这是否是最好的方法,我只是想检查一下我没有做傻事。我考虑在Grabber函数中使用计时器,然后在MyForm
updateData(字符串数据)
中调用一个函数,我认为这会更好,但是它增加了对GUI的依赖,这似乎不正确

另一个问题是,我打算有一些来源。以我建议的方式执行更新将需要串行internet请求,而并行执行可能更好?我希望数据尽可能是最新的


如果这不是一个典型的问题,我深表歉意,但我只是想了解如何实现这一点的其他想法。

在一个单独的线程中以适合源代码的速率更新您的模型,可能按照本文中的建议使用。仅当数据发生实际更改时,才将这些结果发布到感兴趣的视图。

在单独的线程中以适合于源的任何速率更新模型,可能使用本文中建议的方式。仅当数据实际发生更改时,才将这些结果发布到感兴趣的视图。

查看该示例,线程似乎可以访问表单变量,因为它是一个子类?您是否建议使用一个线程来迭代所有源,或者每个源使用一个线程。我想这取决于源,但是任何一个阻塞时间可能超过您可接受的延迟的线程都应该是一个单独的工作线程。我想我只会选择一个。非常感谢您的帮助。看看这个例子,线程似乎可以访问表单变量,因为它是一个子类?您是否建议使用一个线程来迭代所有源,或者每个源使用一个线程。我想这取决于源,但是任何一个阻塞时间可能超过您可接受的延迟的线程都应该是一个单独的工作线程。我想我只会选择一个。非常感谢你的帮助。
   Timer timer = new Timer(2000, performUpdate);
   timer.start();

   ....

   ActionListener performUpdate = new ActionListener(){
          public void actionPerformed(ActionEvent evt){
              Grabber.update();
              jTextField1.setText(Grabber.getData());
             }
    };