3
我在刷新鼠標動作事件處理程序中的組件時遇到問題。問題在於,在jButton1MouseClicked()完成後,所有在此函數中更改的jLabel都會顯示其更改。這裏是我的功能:如何立即更改MouseEvent處理程序中jLabel的文本?
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可視化計數直到下一個循環,第二個可視化實際循環數。我改變了他們之後,我嘗試了所有jLabel上的調用函數repaint(),但它沒有幫助。
謝謝大家的幫助。
我讀了關於swingtimer,但我沒有得到如何可以實現它到我的應用程序。比方說,當我定義需要制定的任務時,我將創建班級收集器。但是,如何用swingtimer更改該類中的Swing應用程序的jLabels? – 2011-05-22 09:10:07
@PetrVelký,根本不是真的,在右邊你可以看到相關的線程,檢查之前發佈**** ***這裏 – mKorbel 2011-05-22 10:56:20
你之前發佈**** ***是什麼意思? – 2011-05-22 15:37:09