MainWindow中开了一个线程来处理数据,当数据处理完了,我想让它通知Mainwindow来更新界面上的信息,怎么实现呢?
Java中是不是也有类似Windows的消息循环机制呢?用户能够重载自定义吗?
谢谢!

解决方案 »

  1.   

    java中没有消息循环机制,java中是通过接口来实现类似delphi、vb、C#的事件机制的。你首先需要定义一个消息接口,接口中定义一个更新界面的方法,然后在主界面中类中定义一个实现这个接口的内部类。然后把这个内部类的一个实例付给那个执行线程,这样在执行线程中就可以调用接口方法来更新界面了。
    例如:
    public interface IProgressListener { public void onProgress(String msg);
    public void onAddMsg(String msg);
    }
        class ImportTask implements Runnable
    {
    public void run() {
    btnImport.setEnabled(false);
    beginInput();
    btnImport.setEnabled(true);
    }
        
    }
    }beginInput的实现:
    Director d = new Director();
    d.setProgressListener(progressListener);
        protected void beginInput()
    d.parseXML(txtField.getText());
    progressListener的定义:
    IProgressListener progressListener = new IProgressListener(){
    public void onProgress(String msg) 
    {
    labelProgress.setText(msg);
    } public void onAddMsg(String msg) {
    memoResult.append(msg);
    memoResult.append("\n");
    }
    };
    在Director类中
    for(int i=0,n=20;i<n;i++)
    progressListener.onProgress("已经导入"+i+"条数据!");
      

  2.   

    在主类中加入listener监听线程是否完成,然后依此进行动作。