2013-04-03 1 views
2

У меня есть класс GUI, который работает хорошо, однако у меня есть кнопка в этом GUI класса, который является предполагается открыть новый GUI из другого класса ..Инициирование GUI как нить

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt){ 

    GUI2 newGui = new GUI2(); 
    newGui.setVisible(true); 
} 

Однако, когда вызывается новый GUI-класс (newGui), он просто отображается как сквозное окно. Это потому, что оба GUI не могут работать одновременно?

Теперь я пытаюсь открыть новый графический интерфейс как нить, но я не знаю, как это сделать!

Thread thread = new Thread(); 
thread.sleep(5000); 
thread.newGui.setVisible(); 

public void run();

Это была моя попытка, но неудивительно, что это не сработало.

Любая помощь?

Спасибо!

ответ

0
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt){ 
    Thread thread = new Thread(){ 
     public void run(){ 
      GUI2 newGui = new GUI2(); 
      newGui.setVisible(true); 
     } 
    }; 
    thread.start(); 
} 
+0

GUI Качели должны быть созданы в [Initial нити] (http://docs.oracle.com/javase/tutorial/uiswing/concurrency/initial.html), в противном случае, вызванные OPs .... – mKorbel

+0

нет, он может быть создан во вторичных/рабочих потоках тоже, если не рекомендуется, это что-то еще, но он хочет: «Теперь я пытаюсь открыть новый графический интерфейс в качестве потока, но я не знаешь, как это сделать! " – 2013-04-03 11:18:56

+0

не имеет значения. Swing GUi должен быть создан, как вы можете видеть в другом ответе, неправильном ответе, sooo crazy thats, принятом, из этого потока – mKorbel

3
SwingUtilities.invokeLater(new Runnable() 
     { 
      public void run() 
      { 
       GUI2 newGui = new GUI2(); 
       newGui.setVisible(true); 
      } 
     }); 
+1

+1 правильный способ, но половинный размер ответа без каких-либо описание – mKorbel