等待框架创建

Waiting for frame creation

我在 java 中遇到问题,我不认识他,但我解决了。 我创建了一个简单的程序,使用 forsleep 函数插入文本 JPanel

像这样(这是一个例子):

public class example{
  JFrame frame....
  ..
  ..
   public example(){
      //ini frame and label.. then..
      String s = "abcqweewqewqewqewqweqwqeweqweqwq";

      //DO ANIMATION
      try
         {
         for(int i = 0;i<s.length();i++)
         {
         JLABEL.append(String.valueOf(s.charAt(i)));
           Thread.sleep(10);
         }
      }catch(Exception ex){}
   }
  public static void main.......{
     new example();
  }
}

完美运行(在一定时间间隔后写入字符) 但是,如果我使用其他 class 调用这个 main - 所以等到一切都呈现然后 window 出现( 所以没有动画).

哪里有问题?我希望,你能理解我。

Swing 是单线程的,正确编写的 swing 代码在 event dispatch thread 中运行。您的示例通过在 EDT 外部创建 GUI 来打破线程规则,并且还在主线程中运行循环。通常,当在 EDT 中正确创建时,或作为对按钮单击或类似事件的响应时,循环 会阻塞事件调度线程 以便在循环完成之前不会进行绘制完成。

如果在事件分派线程中初始化 GUI,就会出现这种行为:

public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {
        public void run() {
            new example()
        }
    });
}

正确的方法是使用 Swing Timer.

,而不是在 EDT 中休眠

综上所述:您的代码似乎可以正常工作,因为它有错误,它在事件调度线程之外运行了一些 UI 代码。