50,531
社区成员
发帖
与我相关
我的任务
分享
//一个更新JLabel的线程
<code>class CountLabel implements Runnable{
private JLabel label;
CountLabel(JLabel label){
this.label=label;
}
@Override
public void run() {
// TODO Auto-generated method stub
// TODO Auto-generated method stub
String result_start = "共抓取";
String result_end = "条结果";
while (!c.getState()) {
label.setText(result_start+c.getList().size()+result_end);
}
}
}
//省略了无关代码
//这是ActionListener的一个方法
//crawler时一个自定义爬虫类的对象,其中有一个耗时较长的getInfo方法
//我希望在JLabel上实时更新爬取的数据条数
//可能会写出下面的代码
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
if (arg0.getActionCommand().equals("crawler")){
//关键代码
//如果直接从
new Thread(new CountLabel(countLabel)).start();
crawler.getInfo();
flButton.setEnabled(true);
}else if (arg0.getActionCommand().equals("filter")){
if (c.getState())
new Thread(progress).start();
else
JOptionPane.showMessageDialog(null, "爬取未完成");
}else if(arg0.getActionCommand().equals("save")){
}
}
//让Crawler实现在另开的线程工作
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
if (arg0.getActionCommand().equals("crawler")){
//关键代码
//如果直接从
new Thread(new CountLabel(countLabel)).start();
new Thread(crawler).start();
flButton.setEnabled(true);
}else if (arg0.getActionCommand().equals("filter")){
if (c.getState())
new Thread(progress).start();
else
JOptionPane.showMessageDialog(null, "爬取未完成");
}else if(arg0.getActionCommand().equals("save")){
}
}