日期:2014-05-20 浏览次数:20946 次
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
/**
* 这个又是典型的SWING线程模型的问题
* 我不知道如何通过SwingUilities.invokerLater来解决
* 这个就说明自己对此模型理解的还是不到位
*/
public class Test12 extends JFrame {
final JTextArea jb;
JScrollPane js = null;
JButton jb2 = null;
public static void main(String[] args) {
new Test12();
}
public Test12() {
this.setSize(500, 500);
this.setVisible(true);
this.setResizable(true);
this.setLayout(null);
jb = new JTextArea();
jb.setLineWrap(true);
js = new JScrollPane(jb);
js.setBounds(10, 10, 100, 100);
jb2 = new JButton("OK");
jb2.setBounds(100, 100, 100, 100);
jb2.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
SwingUtilities.invokeLater(new Runnable(){
public void run(){
write();
}
});
}
});
this.add(jb2);
this.add(js);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void write() {
String c = "你好啊,放飞梦想共勉:让我们以一种平常";
int a = 0;
int x = 0;
int y = 1;
for(int i=0;i<c.length();i++){
// for (int j1=0; j1<300000000; j1++) {
// a = a + 1;
// } 这里用线程休眠就可以了,还节约CPU资源
try{
Thread.sleep(500*1);
}catch(Exception e){
e.printStackTrace();
}
if(i==0){
final String t=c.substring(i, i+1);
// jb.setText(t);
SwingUtilities.invokeLater(new Runnable(){
public void run(){
try{
Thread.sleep(100*1);
}catch(Exception e){
e.printStackTrace();
}
jb.setText(t);
}
});
}else{
final String s=c.substring(i, i+1);
// jb.append(s);
//
SwingUtilities.invokeLater(new Runnable(){
public void run(){
try{
Thread.sleep(100*1);
}catch(Exception e){
e.printStackTrace();
}
jb.append(s);
}
});
}
x++;
y++;
this.repaint();
}
}
}