Проблема с созданием значений обновления JProgressBar в цикле (с резьбой)

Я пытаюсь заставить мою программу постоянно обновлять значения индикатора выполнения внутри метода при выполнении некоторых операций. Однако этого не происходит до конца, и пользовательский интерфейс зависает.

Посмотрев на похожие вопросы с моими проблемами, я попытался реализовать принятые решения (используя потоки), но не могу заставить его работать правильно. Это как если бы их там не было.

Моя программа содержит несколько классов, из которых Main - это тот, который автоматически создается netbeans в режиме JFrame Design , так что есть определенные вещи такие как static void main и public Main , которые не совсем уверены в некотором его содержимом. Ниже я помещу фрагменты этих методов, вместе с моей реализацией потока.

public class Main extends javax.swing.JFrame implements ActionListener, Runnable{
                                          // I added implements ActLis, Runn.....

...

static Main _this;      // I included this variable

...

public static void main(String args[]) {
        Main m = new Main();                               // Added by me
        new Thread(m).start();                             // Added by me
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Main().setVisible(true);
            }
        });
 }

...

public Main() {
        initComponents();
        _this = this;        // Added by me
}


...

// I also included these 2 methods in the class

public void actionPerformed(ActionEvent e) {                                    
    synchronized(this){                                                         
        notifyAll();                                                            
    }                                                                           
}                                                                               

public void run() {                                                             
    try{synchronized(this){wait();}}
    catch (InterruptedException e){}
    progressBar.setValue(50);                                                   
}

...

private void buttonPressed(java.awt.event.MouseEvent evt) {
   for(int i=0; i<=100; i++) {
      for(int j=0; j<=5; j++) {
         // does some work
      }
   run();
   }
}

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

Заранее спасибо за помощь.

5
задан zigdon 1 March 2011 в 00:04
поделиться