这是导致我的问题的一段代码:
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>()
给出错误:非法启动类型... 我认为我的问题是由于“矢量”,但我不知道如何解决.. 任何帮助?
答案 0 :(得分:3)
不,问题是void
的使用,它不是有效的类型参数。您可以使用SwingWorker<Vector, Void>
。 (注意void
(一个Java关键字)和Void
(引用java.lang.Void
类型)之间的区别。)
我个人建议优先使用List<E>
明确使用Vector
,并尽可能使用ArrayList<E>
作为实现而不是Vector
,但是这是一个单独的问题 - 只有void
/ Void
会导致您立即出现问题。
答案 1 :(得分:2)
,第二个问题是关于错误地使用方法get()
到SwingWorker的void done()
中,因为只返回SwingWorker的异常(并且只有在存在异常的情况下),更多关于方法{的用法我question