在我的程序中,我有一个swingworker,因此用户可以在程序本身仍在运行时访问GUI。
有没有办法将我在process()
方法中声明的值返回给另一个类?我问的原因如下:
GUI显示图表,如果用户按下按钮,则应该更新。在doInBackground()
方法中,ArrayList是永久更新的。在此ArrayList中是图表应显示的值,因此每次用户按下按钮时,图表都应显示实际位于数组列表中的值
代码如下
protected Void doInBackground()
{
SaveList savelist = new SaveList();
while(true)
{
try
{
savelist.updateSaveList();
publish((SaveList) savelist);
Thread.sleep(100);
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
protected void process(SaveList savelist)
{
this.savelistsize = savelist.saveListSize();
this.trueLabeled = savelist.trueLabeled();
this.falseLabeled = savelist.falseLabeled();
this.trueLabeledPercent = savelist.trueLabeled()/savelist.saveListSize();
this.falseLabeledPercent = savelist.falseLabeled()/savelist.saveListSize();
}`
答案 0 :(得分:0)
如果我理解正确,您希望将process()
中完成的一些逻辑委托给另一个类。在这种情况下,创建SwingWorker
的命名子类,并使用委托实例初始化它。
示例:
public class MySwingWorker extends SwingWorker<Void, X> { // X - I don't know the type of SaveList elements
private MyDelegate delegate;
public MySwingWorker(MyDelegate delegate) {
this.delegate = delegate;
}
protected Void doInBackground() { ... }
protected void process(SaveList savelist) {
delegate.doSomethingWith(savelist);
}
}
然后您可以在MyDelegate.doSomethingWith(SaveList)