我想从扫描仪中获取图像并将它们放在一个HashMap中,其名称按SwingWorker Class执行的某个顺序执行,名为ScanningService。我想使用for循环在第一次完成后使用同一设备获取另一个图像。完成后,scan.getImage()
会返回扫描图像。 sc
参数是扫描程序对象。也许有人可以给我一个Executor或Timer的实现,因为我的试验没有任何成果。
for(int k=0; k<10; k++){
lblMessage.setText("Scan Next Image: ");
scan = new ScanningService(sc);
scan.execute();
scan.addPropertyChangeListener(new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent arg0) {
// TODO Auto-generated method stub
if(StateValue.DONE == scan.getState()){
lblImagePreview.setIcon(new ImageIcon(scan.getImage()));
//logic for name in order of sequence
imageList.put<imagename, scan.getImage());
}
}
});
}
答案 0 :(得分:1)
SwingWorker被指定只运行一次,然后必须调用新实例
SwingWorker不适合加载图片,也不适合某段时间
看起来Runnable#Thread
,输出到Swing GUI必须是invokeLater()
中的包装
必须在EventDispatchThrea
d完成对Swing GUI的所有更改,您已查看Concurency in Swing