SwingWorker中的process方法到底是怎么调用的
答案:3 悬赏:20 手机版
解决时间 2021-01-28 05:12
- 提问者网友:戎马万世
- 2021-01-27 22:07
看到一个例子:使用SwingWoker做后台线程,做一些计算,然后点击一个按钮终止线程并把线程计算的临时结果显示到GUI中,代码里主要是重写了SwingWoker的doInBackground()、process()方法,我想知道process方法是怎么调用的,需要在EDT线程中显示调用process方法吗,还是process会自动调用?
最佳答案
- 五星知识达人网友:傲气稳了全场
- 2021-01-27 23:34
又见长代码,头晕
想要理解swingworker,就得先理解GUI的EDT线程机制
用swingworker还要使用继承。
你可以使用swingutilities.invokelater来使用,一样的效果
这个核心思想就是,如果你在GUI里做了长时间操作(比如查询一个结果用了10几秒),如果不用swingworker或swingutilities.invokerlater的话那整个界面就死在那了,俗称死机。用了就很平滑的操作和过渡了
想要理解swingworker,就得先理解GUI的EDT线程机制
用swingworker还要使用继承。
你可以使用swingutilities.invokelater来使用,一样的效果
这个核心思想就是,如果你在GUI里做了长时间操作(比如查询一个结果用了10几秒),如果不用swingworker或swingutilities.invokerlater的话那整个界面就死在那了,俗称死机。用了就很平滑的操作和过渡了
全部回答
- 1楼网友:人间朝暮
- 2021-01-28 01:57
public void propertyChange(PropertyChangeEvent evt) {
if ("progress" == evt.getPropertyName()) {
int progress = (Integer) evt.getNewValue();
progressBar.setIndeterminate(false);
progressBar.setValue(progress);
taskOutput.append(String.format("Completed %d%% of task.\n", progress));
}
}
虽然不是太懂,你看看这段代码能不能有启发吧。这个函数可以写在继承SwingWoker类的里面或外面都行
- 2楼网友:詩光轨車
- 2021-01-28 01:01
可以用这个修补程序试一下: http://download.microsoft.com/download/8/b/4/8b4addd8-e957-4dea-bdb8-c4e00af5b94b/ndp1.1sp1-kb867460-x86.exe
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯