程序有这么一段代码:
TextArea ta_log = new JTextArea(10,10);
ta_log.setLineWrap(true);
ta_log.setWrapStyleWord(true);
JScrollPane p_log = new JScrollPane(ta_log);JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());
panel.add(p_top,BorderLayout.NORTH);
panel.add(p_log,BorderLayout.CENTER);
setContentPane(panel);把ta_log添加到p_log上,然后添加到JFrame上,然后,我有一个log方法:public static void dolog(String message){
if(ta_log != null){
ta_log.append(message);
ta_log.append("\r\n");
}
}现在的问题是:
我调用dolog()向textarea里面追加数据,并不及时显示,而是等程序结束了才一块显示出来。请问:怎么才能调用dolog()的时候就能把里面的内容显示出来啊?

解决方案 »

  1.   

    SwingUtilities.invokeLater(new Runnable(){public void run(){dolog("..........");}});
      

  2.   

    Swing在数据更新也是重绘的时候可以使用
    panel.getUI(); 
    panel.revalidate();
      

  3.   

    代码不全,可能需要改你调用 dolog() 的那段代码……
      

  4.   


    不好用,跟原来的效果是一样的,我是这么弄的:
    public static void dolog(final String message) {
    try{
    SwingUtilities.invokeLater(new Runnable(){
    @Override
    public void run(){
    if(ta_log != null){
    ta_log.append(message);
    ta_log.append("\r\n");
    }
    }
    });
    /*
    if(ta_log != null){
    ta_log.append(message);
    ta_log.append("\r\n");
    }
    */
    }catch(Exception e){
    e.printStackTrace();
    }
    }
      

  5.   


    你调用dolog()方法这块怎么写的
      

  6.   


    已经解决了,感谢回复。我把业务处理放到一个单独的线程中,在里面调用dolog就能够及时刷新了。