永发信息网

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的话那整个界面就死在那了,俗称死机。用了就很平滑的操作和过渡了
全部回答
  • 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
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯