首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在for循环中执行SwingWorker

在for循环中执行SwingWorker
EN

Stack Overflow用户
提问于 2012-09-26 17:24:15
回答 1查看 377关注 0票数 0

我想从扫描仪获取图像,并将它们放入HashMap中,这些图像的名称由名为ScanningService的SwingWorker类按照特定的顺序执行。我希望在使用同一设备完成第一个图像之后,使用for循环获取另一个图像。完成后,scan.getImage()将返回扫描的图像。sc参数是一个扫描仪对象。也许有人可以为我提供一个带有Executor或Timer的实现,因为我的试验没有取得任何成果。

代码语言:javascript
复制
    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());
                }
            }
        });
    }
EN

回答 1

Stack Overflow用户

发布于 2012-09-26 17:46:32

  • SwingWorker被指定为只运行一次,然后您必须调用一个新的instance
  • SwingWorker不适合加载图像,或者在某些时间段
  • 有look Runnable#Thread,输出到Swing图形用户界面必须在invokeLater()
  • 中包装所有对Swing图形用户界面的更改都必须在EventDispatchThread上完成,您必须在invokeLater()中查看Concurency in Swing
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12598512

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档