当前位置: 代码迷 >> J2SE >> 问个Swing的小疑点,向TextArea追加数据,但是不及时显示,thank you
  详细解决方案

问个Swing的小疑点,向TextArea追加数据,但是不及时显示,thank you

热度:1493   发布时间:2013-02-25 00:00:00.0
问个Swing的小问题,向TextArea追加数据,但是不及时显示,thank you!
程序有这么一段代码:
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()的时候就能把里面的内容显示出来啊?



------解决方案--------------------------------------------------------
JScrollPane设置可见宽高
------解决方案--------------------------------------------------------
Java code
SwingUtilities.invokeLater(new Runnable(){public void run(){dolog("..........");}});
------解决方案--------------------------------------------------------
Swing在数据更新也是重绘的时候可以使用
panel.getUI(); 
panel.revalidate();
------解决方案--------------------------------------------------------
代码不全,可能需要改你调用 dolog() 的那段代码……
------解决方案--------------------------------------------------------
探讨

引用:

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


不好用,跟原来的效果是一样的,我是这么弄的:

Java code

public static void dolog(final String messag……