SwingWorker:类型的非法启动 [英] SwingWorker : illegal start of type

查看:22
本文介绍了SwingWorker:类型的非法启动的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

是一段代码导致了我的问题:

 SwingWorker sw=new SwingWorker (){@覆盖受保护的 Vector doInBackground() 抛出异常 {TvaJpaController tjc =new TvaJpaController(emf);向量 l_tva=null;尝试{l_tva=(矢量)tjc.findTvaEntities();}捕获(javax.persistence.PersistenceException e){javax.swing.JOptionPane.showMessageDialog(null,"请检查您的网络连接");}返回 l_tva;}@覆盖受保护的无效完成(){向量 l_tva=null;尝试 {l_tva=get();} catch (InterruptedException ex) {Logger.getLogger(main.class.getName()).log(Level.SEVERE, null, ex);} catch (ExecutionException ex) {Logger.getLogger(main.class.getName()).log(Level.SEVERE, null, ex);}int n = l_tva.size();for(int i=0;i<n;i++){Tva tva =(Tva)l_tva.elementAt(i);tva_article.addItem(tva.getIdtva());}}};sw.execute();

这一行:

SwingWorker sw=new SwingWorker ()

给出错误:类型的非法开始...我认为我的问题是由于向量",但我不知道如何解决..有什么帮助吗?

解决方案

不,问题是使用了 void,它不是有效的类型参数.不过,您可以使用 SwingWorker.(注意 void 之间的区别,它是一个 Java 关键字,而 Void 是指 java.lang.Void 类型.)>

我个人建议使用 List 优先于显式使用 Vector,并在可能的情况下使用 ArrayList 作为一种实现而不是 Vector,但这是另一回事 - 只有 void/Void 会导致您立即出现问题.

it is a piece of code that caused my problem :

   SwingWorker <Vector,void> sw=new SwingWorker <Vector,void>(){

     @Override
        protected Vector doInBackground() throws Exception {

             TvaJpaController tjc =new TvaJpaController(emf);
           Vector  l_tva=null;

          try{
         l_tva= (Vector) tjc.findTvaEntities();

             }
        catch(javax.persistence.PersistenceException e)
             {

             javax.swing.JOptionPane.showMessageDialog(null,"please check your internet connecting"); 

             } 
       return l_tva;
     }

     @Override
        protected void done() {
     Vector   l_tva=null;
            try {
                  l_tva=get();
            } catch (InterruptedException ex) {
                Logger.getLogger(main.class.getName()).log(Level.SEVERE, null, ex);
            } catch (ExecutionException ex) {
                Logger.getLogger(main.class.getName()).log(Level.SEVERE, null, ex);
            }

         int n =  l_tva.size();
          for(int i=0;i<n;i++){
       Tva tva =(Tva)l_tva.elementAt(i);
   tva_article.addItem(tva.getIdtva());

   }

     }
   };

    sw.execute(); 

this line :

SwingWorker <Vector,void> sw=new SwingWorker <Vector,void>()

gives an error :illegal start of type... I think my problem was due to "vector",but I do not know how to solve.. Any Helps ?

解决方案

No, the problem is the use of void, which isn't a valid type argument. You can use SwingWorker<Vector, Void> though. (Note the difference between void, which is a Java keyword, and Void which refers to the java.lang.Void type.)

Personally I'd suggest using List<E> in preference to explicitly using Vector, and using it generically if possible, with ArrayList<E> as an implementation rather than Vector, but that's a separate matter - it's only the void / Void which is causing you immediate problems.

这篇关于SwingWorker:类型的非法启动的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆