java publish_java-在另一个类中使用Swingworker publish方法

我有一个摇摆工,所以我在后台工作时我的GUI可以保持响应.

问题是我需要在各个点更新gui(例如,使用程序状态/信息更新标签),但是我有很多处理要做,而我无法通过一个巨大的doInBackground方法来完成所有工作.

所以我从doInBackground方法实例化其他类来做到这一点,问题是我无法更新gui,除非在此SW线程或EDT中.

注意:为简便起见,我删除了不必要的代码

我希望能够从DoWork1&中更新gui. DoWork2等.我尝试过传递对SW swingworker对象的引用,但是大概不能访问publish方法,因为它受到了保护.我也许可以使用反射来更新gui,但是任何使用我的代码的人都不会喜欢.我确实听到有人提到过使用反向接口,但是没有示例,因此我对此一无所知.

任何帮助,将不胜感激,谢谢.

public class SW extends SwingWorker {

private DoWork1 doWork1;

private DoWork2 doWork2;

private Iframe frame;

public SW(Iframe frame, DoWork1 doWork1) {

this.frame = frame;

this.doWork1 = doWork1;

this.doWork2 = new DoWork2();

}

@Override

protected Object doInBackground() {

doWork1.lotsOfWork("");

publish("Can write to label from here");

doWork2.lotsOfWork("", "");

return null;

}

@Override

public void process(List chunks) {

for (String s : chunks) {

frame.getLabel().setText(s);

}

}

@Override

protected final void done() {

}

}

public class DoWork1 {

public DoWork1() {

}

private lotsOfWork(String s) {

//Do lots of work in here

//But need to update the gui with information!

//would like to be able to do something like:

publish("somehow write to label from here!?");

}

}

public class DoWork2 {

public DoWork2() {

}

private lotsOfWork(String s, String s) {

//Do lots more work in here

//But need to update the gui with information!

//would like to be able to do something like:

publish("somehow write to label from here!?");

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值