我作一个程序,运行很长时间,我想在程序运行开始时在Jlist里显示"运行中,请等待...",在结束时显示"执行完毕.",但是不知道怎么在Jlist逐步显示这两个信息.试过以下方法,但总是在程序执行完时一下子显示出来.请指教!DefaultListModel resultModel = (DefaultListModel) resultList.getModel();
resultModel.clear();
resultModel.addElement("运行中,请等待...");
resultList.revalidate();
resultList.repaint();
.......
resultModel.addElement("执行完毕.");

解决方案 »

  1.   

    你试验一下我这个代码,可能是因为你程序执行时间太短了,你看不出来效果
    System.out.println("程序开始运行");
    try {
    Thread.sleep(10000);
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    System.out.println("程序运行结束");
      

  2.   

    应该是界面刷新的问题,你的所有操作都在一个线程当中,在你的主线程执行完之前你的整个界面是来不及刷新的。可以把耗时操作单起一个线程,在你的子线程执行完毕时再调用resultModel.addElement("执行完毕.")试试
      

  3.   

    不知道楼主是不是这个意思,我先把代码贴上来
    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();
    }
    }