想在主线程创建了一个Dialog,open并让其隐藏。在其它线程里通过Display.asyncExec(...)让其显示。但在主线程里open后怎么隐藏Dialog呢?

解决方案 »

  1.   

    楼主可试试:dialog.getShell().setVisible(false);
      

  2.   

    可是在哪调setVisible呢?如果在open之前,那么open会把它重新设为可见。如果是在open之后,那么只有等把对话框关了才会执行这一句。
      

  3.   


    在open之后,顺便说一下我用的是jface的TitleAreaDialog.
      

  4.   

    dialog.setVisible(false);可是实现的,但要注意open()方法和这句话的位置,LZ试试吧!
      

  5.   

    应该在哪调啊?我试了configureShell和createDialogArea都不行。
      

  6.   

    用这个:
    processEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));
      

  7.   

    我用的SWT,没有processEvent,试了
    Event closeEvent = new Event();
    closeEvent.type = SWT.CLOSE;
    this.getShell().getDisplay().post(closeEvent);
    但是没反应,根本不会进public boolean close()函数
      

  8.   

    没搞过swt,弱弱的问一下。
    window被open的时候,没有相应的event吗?写在这个event的action里不行么?
      

  9.   

    你可以在主线程里设置好Dialog的参数,在其他线程里调用Dialog的Open()。
      

  10.   

    dialog.create();
    dialog.getShell().setVisible(false);
    dialog.open();
      

  11.   


    我是这么写的啊,还是不行,一open窗口就显示了