Java Vaadin弹出窗口应在单击事件中显示和隐藏,不显示弹出窗口

Java Vaadin弹出窗口应在单击事件中显示和隐藏,不显示弹出窗口,java,popup,vaadin,show-hide,Java,Popup,Vaadin,Show Hide,有 public void buttonClick(ClickEvent event) { MyPopup popup = new MyPopup(); getWindow().addWindow(popup); log.warn("Added POPUP"); //lot of method calling here then getWindow().removeWindow(popup

  public void buttonClick(ClickEvent event) {
             MyPopup popup = new MyPopup();
             getWindow().addWindow(popup);
             log.warn("Added POPUP");
    //lot of method calling here then
         getWindow().removeWindow(popup);
             log.warn("Removed Popup");
}
我希望显示一个弹出窗口,在一些milisecundom之后(在昂贵的方法调用之后),它应该隐藏自己。日志上写着:

2014-02-19 15:26:51 WARN  xyzClass:82 - Added POPUP
2014-02-19 15:26:51 WARN  xyzClass:135 - Removed Popup
但事实是这里没有弹出窗口

如果我只显示它,以后不删除它(弹出窗口将显示) 公共作废按钮单击(单击事件){ MyPopup popup=新建MyPopup(); getWindow().addWindow(弹出窗口); 日志警告(“添加的弹出窗口”); //那么这里有很多方法调用 日志警告(“删除的弹出窗口”); }


我这样做的主要原因是,我想在@Vaadin实现玻璃面板/加载屏幕功能,但还没有找到更好的解决方案。任何解决方案/说明为什么弹出窗口没有显示,我将不胜感激,

只是没有时间渲染它。您可以添加它,然后立即删除它。 尝试这种方法,例如:

private MyPopup popup;
public void buttonClick(ClickEvent event) {
    Thread workThread = new Thread() {
        @Override
        public void run() {         
            // some initialization here 
            getWindow().removeWindow(popup);
        }
    };
   workThread.start();             
   popup = new MyPopup();
   getWindow().addWindow(popup);
}

只是没有时间渲染它。您可以添加它,然后立即删除它。 尝试这种方法,例如:

private MyPopup popup;
public void buttonClick(ClickEvent event) {
    Thread workThread = new Thread() {
        @Override
        public void run() {         
            // some initialization here 
            getWindow().removeWindow(popup);
        }
    };
   workThread.start();             
   popup = new MyPopup();
   getWindow().addWindow(popup);
}

只是没有时间渲染它。您可以添加它,然后立即删除它。 尝试这种方法,例如:

private MyPopup popup;
public void buttonClick(ClickEvent event) {
    Thread workThread = new Thread() {
        @Override
        public void run() {         
            // some initialization here 
            getWindow().removeWindow(popup);
        }
    };
   workThread.start();             
   popup = new MyPopup();
   getWindow().addWindow(popup);
}

只是没有时间渲染它。您可以添加它,然后立即删除它。 尝试这种方法,例如:

private MyPopup popup;
public void buttonClick(ClickEvent event) {
    Thread workThread = new Thread() {
        @Override
        public void run() {         
            // some initialization here 
            getWindow().removeWindow(popup);
        }
    };
   workThread.start();             
   popup = new MyPopup();
   getWindow().addWindow(popup);
}

根据Vaadin版本的不同,您可以使用插件(Vaadin 6)或名为(Vaadin 7)的内置功能。


由于它,您可以将耗时的操作移动到另一个类,从而将业务逻辑与表示层分离。您可以在上面的链接中找到使用示例。

根据Vaadin版本的不同,您可以使用插件(Vaadin 6)或名为(Vaadin 7)的内置功能。


由于它,您可以将耗时的操作移动到另一个类,从而将业务逻辑与表示层分离。您可以在上面的链接中找到使用示例。

根据Vaadin版本的不同,您可以使用插件(Vaadin 6)或名为(Vaadin 7)的内置功能。


由于它,您可以将耗时的操作移动到另一个类,从而将业务逻辑与表示层分离。您可以在上面的链接中找到使用示例。

根据Vaadin版本的不同,您可以使用插件(Vaadin 6)或名为(Vaadin 7)的内置功能。



由于它,您可以将耗时的操作移动到另一个类,从而将业务逻辑与表示层分离。您可以在上面的链接中找到使用示例。

Hmm。。。有趣的是,我现在检查它,但你做相反的你只是删除它第一!然后addWindow()可以修复代码吗?或者我可能不明白。。。。(popup也在后面声明)抱歉,Alexey,但我真的不明白,因为你线程.start(),然后说getWindow.addWindow(popup),所以你首先运行线程()并删除窗口,然后添加它,这看起来与我想要实现的正好相反:我想创建一个模型弹出窗口(稍后将其视为玻璃面板)然后做一些非常繁重的计算,然后当我完成时,我想关闭这个模型对话框(glasspanel),无论如何,由于您的努力,我对它投了赞成票,但我真的很想理解。从外部线程访问Vaadin组件需要正确同步。示例代码中缺少同步。这个插件似乎正是我所需要的!隐马尔可夫模型。。。有趣的是,我现在检查它,但你做相反的你只是删除它第一!然后addWindow()可以修复代码吗?或者我可能不明白。。。。(popup也在后面声明)抱歉,Alexey,但我真的不明白,因为你线程.start(),然后说getWindow.addWindow(popup),所以你首先运行线程()并删除窗口,然后添加它,这看起来与我想要实现的正好相反:我想创建一个模型弹出窗口(稍后将其视为玻璃面板)然后做一些非常繁重的计算,然后当我完成时,我想关闭这个模型对话框(glasspanel),无论如何,由于您的努力,我对它投了赞成票,但我真的很想理解。从外部线程访问Vaadin组件需要正确同步。示例代码中缺少同步。这个插件似乎正是我所需要的!隐马尔可夫模型。。。有趣的是,我现在检查它,但你做相反的你只是删除它第一!然后addWindow()可以修复代码吗?或者我可能不明白。。。。(popup也在后面声明)抱歉,Alexey,但我真的不明白,因为你线程.start(),然后说getWindow.addWindow(popup),所以你首先运行线程()并删除窗口,然后添加它,这看起来与我想要实现的正好相反:我想创建一个模型弹出窗口(稍后将其视为玻璃面板)然后做一些非常繁重的计算,然后当我完成时,我想关闭这个模型对话框(glasspanel),无论如何,由于您的努力,我对它投了赞成票,但我真的很想理解。从外部线程访问Vaadin组件需要正确同步。示例代码中缺少同步。这个插件似乎正是我所需要的!隐马尔可夫模型。。。有趣的是,我现在检查它,但你做相反的你只是删除它第一!然后addWindow()可以修复代码吗?或者我可能不明白。。。。(popup也在后面声明)抱歉,Alexey,但我真的不明白,因为你线程.start(),然后说getWindow.addWindow(popup),所以你首先运行线程()并删除窗口,然后添加它,这看起来与我想要实现的正好相反:我想创建一个模型弹出窗口(稍后将其视为玻璃面板)然后做一些非常繁重的计算,然后当我完成时,我想关闭这个模型对话框(glasspanel),无论如何,由于您的努力,我投票支持它,但我真的很想理解。从外部线程访问Vaadin组件需要正确同步