У меня проблема с обновлением компонентов свинга внутри обработчика событий действия мыши. Проблема в том, что все jLabels, которые изменены в этой функции, их изменения видны после того, как jButton1MouseClicked () сделан. Вот моя функция:
private void jButton1MouseClicked(java.awt.event.MouseEvent evt) {
int cycles = Integer.parseInt(c.settings.get("cycles"));
statusMessageLabel.setText("Data collection in progress...");
for(int i=1;i <= Integer.parseInt(c.settings.get("cycles"));i++) {
jLabelCycle.setText(Integer.toString(i));
//here are some functions which are implementing data collection
if(i < cycles){
int counter = Integer.parseInt(c.settings.get("interval"));
while(counter >= 0){
jLabelTimer.setText(Integer.toString(counter));
try {
Thread.sleep(1000);
} catch (InterruptedException ex) {
Logger.getLogger(AppCView.class.getName()).log(Level.SEVERE, null, ex);
}
counter--;
}
}
}
statusMessageLabel.setText("Data collection has been finished.");
}
Можете ли вы помочь мне? Мне действительно нужно, чтобы эти изменения были видны непосредственно, потому что один jLabel визуализирует счет до следующего цикла, а второй визуализирует фактический номер цикла. Я попытался вызвать функцию repaint () на всех jLabels после того, как я изменил их, но это не помогло.
Спасибо всем за любую помощь.