java - Vaadin 7.1.0 推送

标签 java vaadin

我是 Vaadin 的新手,只是实现了一个原型(prototype)来测试功能。目前我正在尝试 Vaadin 服务器推送功能。 我喜欢做一个简单的计数器,可以通过按钮增加。之后,我喜欢从不同的浏览器打开这一面,当我计数时,我喜欢更新所有浏览器。

现在我已经知道当前浏览器是由一个单独的线程更新的。

public class PushTestView extends VerticalLayout implements View {

   private static final long serialVersionUID = -8056849522760207972L;
   private Label counter;

   public void enter(ViewChangeEvent event) {
      removeAllComponents();
      PushTestController controller = PushTestController.getInstance();
      counter = new Label("" + controller.getCounter());
      Button button = new Button("Count up");

      button.addClickListener(new ClickListener() {
         private static final long serialVersionUID = -1437136914245802675L;

         @Override
         public void buttonClick(ClickEvent event) {
            InitializerThread thread = new InitializerThread();
            thread.run();
         }
      });

      addComponent(counter);
      addComponent(button);

   }

   class InitializerThread extends Thread {
      @Override
      public void run() {
         // Init done, update the UI after doing locking
         UI.getCurrent().access(new Runnable() {
            @Override
            public void run() {
               // Here the UI is locked and can be updated
               PushTestController.getInstance().countUp();
               counter.setValue("" + PushTestController.getInstance().getCounter());
               UI.getCurrent().notifyAll();
            }
         });
      }
   }
}

我将此 View 嵌入到我的 UI 中,并用 @Push 进行注释。 这是我的 Controller :

public class PushTestController {

   private static PushTestController instance = new PushTestController();
   private int counter = 0;

   private PushTestController() {
      //Private Constructor for Singleton 
   }

   public static PushTestController getInstance() {
      return instance;
   }

   public int getCounter() {
      return counter;
   }

   public String getCounterString() {
      return "" + counter;
   }

   public void countUp() {
      counter++;
   }
}

我如何扩展此示例以使其能够在不同浏览器中更新 UI?

最佳答案

关于java - Vaadin 7.1.0 推送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17676645/

相关文章:

design-patterns - Vaadin:设计模式

重新启动 Vaadin 应用程序时抛出 java.io.NotSerializedException

java - 全屏 Swing 框架在 Linux 中无法正确聚焦(Windows 没问题)

Java:为什么 subList(0, 5).clear() 对我的对象不起作用?

java - 无需安装 SQL Server 即可通过 JDBC 连接到远程服务器

java - 仅当未选择行时如何在 Vaadin 8 Grid 中设置单元格颜色

vaadin - 在Vaadin 14的Uploader中,如何清除之前上传的文件?

java - 从 Python 调用 Java 代码的最佳方式是什么?

java - 用循环创建多个不同名称的文件?

java - 如何将 AND 或 OR 与 JPAContainer 一起使用?