2013-09-22 3 views
0

У меня есть метка в другом классе, и я меняю текст этой метки в действии другого компонента. В любом случае я попытался задержкой на ней, как Thread.sleep (300) и даже реализующую свой собственный метод, какТекст не меняется с задержкой

private void waitTime(long WaitTime){ 
     long waitUntil = System.currentTimeMillis() + WaitTime; 
     while(System.currentTimeMillis() != waitUntil); 
    } 

Он работал хорошо, но текст не изменится до задержки. Есть ли альтернативная задержка, что текст действительно изменится, а затем задержит?

if(frame.Index == 10){ 
     frame.label.setText("Wow, you're more patient then I am, you win."); 
     waitTime(3000); 
     if(frame == null) return; 
     System.exit(1); 
} 
+0

1) Изучите общие [Соглашения об именах Java] (http://java.sun.com/docs/books/jls/second_edition/html/names.doc.html#73307) (в частности, используемый для имена) для имен классов, методов и атрибутов и использовать их последовательно. 2) Чтобы получить более эффективную помощь, опубликуйте [SSCCE] (http://sscce.org/). 3) Какой набор инструментов GUI? Swing, AWT, Java-FX, GWT, SWT, Android ..? –

ответ

2
  • Ты ставишь нить Качели событий и, таким образом, все приложения спать с Thread.sleep(...). Поэтому вы не хотите использовать это в потоке событий Swing (также известном как Thread Dispatch Thread или EDT).
  • Вместо этого используйте таймер, не Thread.sleep(...)
  • Альтернативы бросить JOptionPane у пользователя с нужным сообщением, а затем выйти из приложения, когда JOptionPane возвращается. Таким образом, вам гарантируется, что пользователь, по крайней мере, видел панель параметров и, надеюсь, ее сообщение до выхода приложения.
Смежные вопросы