我有两个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