如何再JList里逐个显示数据?

vivan19781111 2007-06-28 10:17:44
我作一个程序,运行很长时间,我想在程序运行开始时在Jlist里显示"运行中,请等待...",在结束时显示"执行完毕.",但是不知道怎么在Jlist逐步显示这两个信息.试过以下方法,但总是在程序执行完时一下子显示出来.请指教!

DefaultListModel resultModel = (DefaultListModel) resultList.getModel();
resultModel.clear();
resultModel.addElement("运行中,请等待...");
resultList.revalidate();
resultList.repaint();


.......


resultModel.addElement("执行完毕.");
...全文
285 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenyuelin311 2007-06-30
  • 打赏
  • 举报
回复
不知道楼主是不是这个意思,我先把代码贴上来
package CSDN;

import javax.swing.AbstractListModel;
import javax.swing.DefaultListModel;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JScrollPane;

public class vivan19781111 {
public vivan19781111(){
JFrame f=new JFrame();
DefaultListModel listModel=new DefaultListModel();
JList resultList=new JList(listModel);
resultList.setVisibleRowCount(5);
f.add(new JScrollPane(resultList));
f.pack();
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
listModel.addElement("运行中,请等待...");
try{
Thread.sleep(1000);
listModel.remove(0);
listModel.addElement("执行完毕.");
Thread.sleep(500);
resultList.setModel(new ListModelDate());
}catch(Exception e){
e.printStackTrace();
}
}

private static class ListModelDate extends AbstractListModel{
public int getSize(){
return 10;
}
public Object getElementAt(int n){
return new Integer(n);
}
}
public static void main(String[] args) {
new vivan19781111();
}
}
vivan19781111 2007-06-29
  • 打赏
  • 举报
回复
没人会吗?
neucloud 2007-06-29
  • 打赏
  • 举报
回复
应该是界面刷新的问题,你的所有操作都在一个线程当中,在你的主线程执行完之前你的整个界面是来不及刷新的。

可以把耗时操作单起一个线程,在你的子线程执行完毕时再调用resultModel.addElement("执行完毕.")试试
baobao28 2007-06-29
  • 打赏
  • 举报
回复
你试验一下我这个代码,可能是因为你程序执行时间太短了,你看不出来效果
System.out.println("程序开始运行");
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("程序运行结束");

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧