您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

java swing挂起系统中的setvisible方法

java swing挂起系统中的setvisible方法

首先,建议在Swing Event-Dispatch线程中进行所有GUI更新,即使用SwingUtilites类。

其次,您JDialog是模态的,因此阻塞了setVisible(true)调用方法的线程(在您的情况下为Main线程,在以下情况下为Swing Event-Dispatch Thread)。

我并不是说以下代码是完美的,但是它应该使您步入正轨。

final JDialog waitForTrans = new JDialog((JFrame) null, true);

SwingWorker worker = new SwingWorker() {

  public String doInBackground() throws Exception {
    Thread.sleep(5000);
    return null;
  }

  public void done() {
    SwingUtilities.invokelater(new Runnable() {
      public void run() {
        waitForTrans.setVisible(false);
        waitForTrans.dispose();
      }
    });
  }

};

worker.execute();
SwingUtilities.invokelater(new Runnable() {
  public void run() {
    waitForTrans.add(new JLabel("Please Wait..."));
    waitForTrans.setMinimumSize(new Dimension(300, 100));
    waitForTrans.setVisible(true);
  }
});

希望这可以帮助。

java 2022/1/1 18:25:37 有440人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶