2013-12-06 3 views
0
 Runnable r = new Runnable() { 

    public void run() { 
     try{ 
      Thread.sleep(2000); 
      action = input.getText(); 
      action = erase(action); 
      input.setText(action); 
     } 
     catch(InterruptedException e){ 
      System.out.println("Thread Interrupted" + e); 
     } 
    } 
}; 

     if(e.getSource() == call){ 
     if(!calling){ 
      String temp = input.getText(); 
      action = called(temp); 
      input.setText(temp + "\n" + action); 
      System.out.println(""+e.getActionCommand()); 
      calling = true; 
     } else{ 
      calling = false;//executes 
      String temp = input.getText();//does not execute until AFTER r.run(); 
      input.setText(temp + "\n" + "Hanging Up...");//does not execute until AFTER r.run(); 
      r.run(); 
      } 

У меня возникли проблемы с созданием этого кода в графическом интерфейсе GUI textArea (input) до возникновения Thread.sleep (2000).Код не выполнен в порядке его ввода

мне нужно TEXTAREA, чтобы отобразить «отбоя» ТОГДА выполнить GUI блокировки/сна в течение 2-х секунд

+0

r - управляемый объект, а не поток – cupojava

ответ

0

Вы не должны вызывать непосредственно метод run, потому что не выполняется в отдельном потоке таким образом. Чтобы начать тему, используйте Thread.start(r), где r является вашим Runnable.

Вы можете попробовать, но это может не сработать ни потому, что Swing требует специального управления параллелизмом. Посмотрите на http://docs.oracle.com/javase/tutorial/uiswing/concurrency/index.html

Смежные вопросы