我有兩個SWT按鈕,按鈕(「開始」)&按鈕(「停止」)。當我按下「開始」時,我調用方法: printFiles(inputPath,printer)//掃描pdf的「inputPath」目錄並將它們發送到打印機「打印機」如何同步兩個swt按鈕的事件?
我想printFiles(inputPath,printer)始終運行,直到我按下按鈕(「停止」)。所以,這是我的第一個想法如何做到這一點。
//button("Start")
btnStart.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent arg0) {
keepPrinting=true;
while(keepPrinting){
printFiles(inputPath, printer);
}
}
});
//button("Stop")
btnStop.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent arg0) {
keepPrinting=false;
}
});
但是,有一個明顯的問題。當我按下按鈕(「開始」)時,它永遠不會從while(true)循環返回。結果,整個窗口(shell)停止響應。
你有什麼想法如何把無盡的循環內按鈕的新聞聽衆?
我的instict說我必須使用併發性來以某種方式同步這兩個按鈕。如果這是正確的,你可以提供一些提示如何實現它?
非常感謝!
你爲什麼不使用['Thread'](http://docs.oracle .com/javase/tutorial/essential/concurrency/runthread.html)爲'printFiles'?這樣GUI不會凍結。 – Baz 2013-04-28 12:29:04