2016-12-29 2 views
0

Я хочу показать индикатор выполнения. Я положил код, чтобы открыть JFrame, содержащий индикатор выполнения в начале функции. Но прогресс бар открывается только после полного выполнения функцииКак я могу открыть другой jframe из другой функции jframe, не дожидаясь завершения выполнения функции?

public void function(){ 
    java.awt.EventQueue.invokeLater(new Runnable() { 
     public void run() { 
      new ProgressSearch().setVisible(true); 
     } 
    }); 

    instruction 1; 
    instruction 2; 
    instruction 3; 
    instruction 4; 
    instruction 5; 
} 

этого код выше отображается только индикатор после завершения функции

+1

Чтобы лучше помочь, опубликуйте [Минимальный, полный и проверенный пример] (http://stackoverflow.com/help/mcve) или [Короткое, самосохраненное, правильное примерное] (http: //www.sscce. org /) – Dan

+0

Кроме того, попробуйте удалить вызов позже и просто «новый ProgressSearch» (setVisible (true); »вместо' java.awt.EventQueue.invokeLater (новый Runnable() {...} ' – Dan

+0

I TRIED ТОЛЬКО РАМКА ВИДИМО. NO PROGRESS BAR –

ответ

0

Попробуйте добавить статические «поля прогресса» в свой класс. Тогда просто обновить эти поля, как создается ваш JFrame, и получить их значения на вашем коде, используя Class.StaticField

например,

public class MyClass { 
    public static PROGRESS; 
    public MyClass() {...} 
    (...) 
    PROGRESS = (...); 
    (...) 
    PROGRESS = (...); 
    (...) 
} 

и получить MyClass.PROGRESS

Кроме того, не забудьте сбросить переменная пРОГРЕСС после полного завершения, так что каждый раз, когда вы создаете другой JFrame из того же класса вы получите чистый прогресс от 0.

с уважением,

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