2012-02-10 24 views
0

類型的非法啓動它是一段代碼,引起了我的問題:的SwingWorker:

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(); 

這一行:

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

給出了一個錯誤:類型的非法啓動... 我想我的問題是由於「載體」,但我不知道如何解決.. 任何幫助?

回答

3

沒有,問題是使用void,這不是一個有效的類型參數。不過,您可以使用SwingWorker<Vector, Void>。 (注意:void之間的區別,這是一個Java的關鍵字,並Void這是指java.lang.Void類型。)

個人我建議使用優先List<E>明確使用Vector,如果可能的話一般使用它,用ArrayList<E>作爲一種實現而不是Vector,但這是另外一個問題 - 這僅僅是void/Void這是造成你眼前的問題。

+0

看看: http://en.wikipedia.org/wiki/SwingWorker – 2012-02-10 14:49:56

+1

@MarwenTrabelsi:它是什麼?在我能看到的地方使用'Void'而不是'void'。 – 2012-02-10 14:50:49

+0

外觀極好抓+1 – mKorbel 2012-02-10 14:51:59

2

和第二個問題是關於錯誤的使用方法get()到的SwingWorker的void done(),因爲只返回從SwingWorker異常(且僅當存在例外),更多的方法get()的使用在我question

+0

謝謝,我會看到.. – 2012-02-10 14:56:43