Java-SwingWorker-process()方法中的问题
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java-SwingWorker-process()方法中的问题,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1808字,纯文字阅读大概需要3分钟。
内容图文
![Java-SwingWorker-process()方法中的问题](/upload/InfoBanner/zyjiaocheng/671/fe0c3fb77cb04c88b7bd159a1c2f87aa.jpg)
我第一次使用javax.swing.SwingWorker.
我想根据挥杆工人发布的中期结果来更新JLabel,如下所示:
publish("Published String");
现在,要更新JLabel,我已编写了以下代码:
process(List<String> chunks) {
if (chunks.size() > 0) {
String text = chunks.get(chunks.size() - 1);
label.setText(text);
}
}
上面的代码有效,但是我的问题(或更具体地说,我的疑问)如下:
上面的swing worker任务是一个匿名内部类,因此它可以访问label字段.
但是,如果我想使摇摆工人阶级成为非内部阶级,该怎么办?我是否需要将label作为参数传递给swing worker类的构造函数,以便process()方法可以访问.
或者还有其他方法吗?
当Swing Worker类不是内部类时,其他开发人员会采用什么方法从Swing Worker类的结果中更新UI组件?
解决方法:
But what if I want to make the swing
worker class a non-inner class. Should
I need to pass label as an argument to
the constructor of swing worker class
so that the process() method can
access.
class PrimeNumbersTask extends
SwingWorker<List<Integer>, Integer> {
PrimeNumbersTask(JTextArea textArea, int numbersToFind) {
//initialize
}
@Override
public List<Integer> doInBackground() {
while (! enough && ! isCancelled()) {
number = nextPrimeNumber();
publish(number);
setProgress(100 * numbers.size() / numbersToFind);
}
}
return numbers;
}
@Override
protected void process(List<Integer> chunks) {
for (int number : chunks) {
textArea.append(number + "\n");
}
}
}
JTextArea textArea = new JTextArea();
final JProgressBar progressBar = new JProgressBar(0, 100);
PrimeNumbersTask task = new PrimeNumbersTask(textArea, N);
task.addPropertyChangeListener(
new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent evt) {
if ("progress".equals(evt.getPropertyName())) {
progressBar.setValue((Integer)evt.getNewValue());
}
}
});
task.execute();
注意构造函数PrimeNumbersTask(JTextArea textArea,int numbersToFind).他们通过JTextArea进行更新.
内容总结
以上是互联网集市为您收集整理的Java-SwingWorker-process()方法中的问题全部内容,希望文章能够帮你解决Java-SwingWorker-process()方法中的问题所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。