所属类别:Java
文章作者:未知
特别推荐:免费发布信息 承包关键词~~抢爆了!HOT!
我的jtextarea.settext放在一个方法中,而且在同一个方法中放入了3个settext方法,可是最后运行发现三个settext的内容是同一时间显示出来的,哪怕两个方法中有时间间隔,可是显示的时候还是同一时间点的,有没有让这些settext的内容不要同时显示,有那种层次感?
polark 回复于:2004-08-10 16:43:21 up一下猫小 回复于:2004-08-11 01:16:51 楼主请明确问题sakulagi 回复于:2004-08-11 07:49:21 [code:1:4ea2e547db]publicclassJTextArea_setTextTest{ publicstaticvoidmain(String[]args)throwsInterruptedException{ JFramejf=newJFrame("JTextArea.setText()Test"); JTextAreajta=newJTextArea(); jf.getContentPane().add(jta); jf.setSize(200,280); jf.show(); jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jta.setText("The1stline"); Thread.sleep(1000); jta.setText("The2ndline"); }}[/code:1:4ea2e547db]我写了个程序试验了一下。可以有时间间隔啊。不太清楚楼主的程序是怎么写的。能铁出来看一下么?polark 回复于:2004-08-11 09:13:50 publicvoidactionperformed(ActionEventevt){textarea.addtime("start");dosql();//这个方法操作数据库可能需要20秒textarea.addtime("stop");}publicvoidaddtime(Strings){textarea.append(s+"timeis"+Calendar.SECOND(这个时间引用略写));}可是最后在textarea中显示内容,三条句子是同时的,虽然显示出来的秒数上面第一第三是有差别,这是为什么?sakulagi 回复于:2004-08-11 11:03:13 [code:1:3860491dde]publicclassJTextArea_setTextTest{ publicstaticvoidmain(String[]args)throwsInterruptedException{ JFramejf=newJFrame("JTextArea.setText()Test"); //TextArea finalJTextAreajta=newJTextArea(); jf.getContentPane().add(jta,BorderLayout.CENTER); //Button JButtonjb=newJButton("Test"); jf.getContentPane().add(jb,BorderLayout.SOUTH); jb.addActionListener(newActionListener(){ publicvoidactionPerformed(ActionEventarg0){ newThread(newRunnable(){ publicvoidrun(){ jta.append("Timeis:" +Calendar.getInstance().getTimeInMillis() +"\n"); jta.invalidate(); try{ Thread.sleep(1000); }catch(InterruptedExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } jta.append("Timeis:" +Calendar.getInstance().getTimeInMillis() +"\n"); } }).start(); } }); jf.setSize(200,280); jf.show(); jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // jta.setText("The1stline"); // Thread.sleep(1000); // jta.setText("The2ndline"); }}[/code:1:3860491dde]放在actionPerformed()这样的回调函数里又是另一回事了。因为setText和append只是更新的JTextArea内部的document的内容,并没有刷新JTextArea的显示(记得经典的MVC结构吧,JTextArea的实现实际上也是Document-View模式的),而在actionPerformed这样的UI事件回调函数返回之前,JTextArea的显示是不会被刷新的。所以方法就是在一个新的Thread里刷新JTextArea,这样actionPerformed()就会立即返回,JtextArea的显示就可以即时刷新了。polark 回复于:2004-08-11 13:40:08 谢谢,大法师~!sakulagi 回复于:2004-08-11 19:50:28 不客气,^_^ 关闭本页
相关信息· 对Rsync的一些了解
· VS2005 启动调试 显示 “绑定句柄无效”
· Java网络移动性-----《深入Java虚拟机》学习笔记
· Code::Blocks-跨平台的 C/C++ IDE
62701
96864
