У меня есть основной класс (который в основном представляет собой форму netbeans; перетаскивание), откуда запускается мое приложение, и другой класс (назовем его классом 2), где находятся мои функции. Сначала я вызываю функцию в классе 2 из моего основного метода и этого метода имеет цикл while, который увеличивает счетчик. В зависимости от этого счетчика я вызываю функцию моего основного класса и пытаюсь отобразить счетчик в текстовом поле, а также указать индикатор выполнения в промежуточном состоянии, но он не работает, хотя правильно отображает операторы печати ( счетчик).
Некоторый код, который я добавляю, вызывает у меня проблемы, поскольку он не обновляет индикатор выполнения и не обновляет текстовое поле. Пожалуйста, помогите мне, почему это происходит.
я отредактировал код, но он все равно ничего не отображает :(
public class NewClass
{
public static int counter = 0;
public NewJFrame p = new NewJFrame();
public void packet()
{
try
{
while (true)
{
//some code ,right now which i have omitted
counter = counter + 1;
counter2(counter);
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
public void counter2(int counter)
{
counter3();
}
public void counter3()
{
p.progress(counter);
}
}
Теперь вот основной метод, из которого я вызываю функции, присутствующие в другом коде класса(), приведенном выше)
public class NewJFrame extends javax.swing.JFrame
{
/** Creates new form NewJFrame */
public NewJFrame()
{
initComponents();
}
@SuppressWarnings("unchecked")
public void progress(int y)
{
jProgressBar1.setIndeterminate(true);
jTextField1.setText(y+"packets processed");
System.out.println(y);
}
private void jButton1MouseClicked(java.awt.event.MouseEvent evt)
{
NewClass m=new NewClass();
m.packet();
}
/**
* @param args the command line arguments
*/
public static void main(String args[])
{
try
{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}
catch (Exception e)
{
e.printStackTrace();
}
java.awt.EventQueue.invokeLater(new Runnable()
{
public void run()
{
new NewJFrame().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JProgressBar jProgressBar1;
private javax.swing.JTextField jTextField1;
// End of variables declaration
}
NewJFrame
внутри методаcounter3()
с каждой итерацией циклаwhile
. Создайте только один экземпляр и используйте этот экземпляр для обновления значений :-) - person nIcE cOw   schedule 01.04.2012if (counter == 10) break;
, тогда он будет напечатан, если вы будете придерживаться того, что я предложил в предыдущем комментарии :-). Похоже, что цикл while — это как раз та ситуация, когда нужно использовать SwingWorker. - person nIcE cOw   schedule 01.04.2012