SwingWorker:类型的非法启动 [英] SwingWorker : illegal start of type
问题描述
是一段代码导致了我的问题:
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屋!