永发信息网

java中文件选择器组件读取一个txt文件到JTextArea中,我想让它一行一行的慢慢显示出来,怎么做呢

答案:3  悬赏:40  手机版
解决时间 2021-03-15 02:38
在下面的事件中我把文件读到了JTextArea中,我想着是在循环中加入Tread.sleep(50);以达到逐行显示的效果,可是textArea.append(line + "\n");不是即使有效的,总是到事件方法跑完了组件中才显示了完全的内容,请帮我指导一下
private void openActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: int returnVal = fileChooser.showOpenDialog(this); if (returnVal == JFileChooser.APPROVE_OPTION) { File file = fileChooser.getSelectedFile(); try { BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file), "GBK")); String line = null; while ((line = br.readLine()) != null) { textArea.append(line + "\n"); } br.close(); } catch (IOException e) { System.out.println("problem accessing file"+file.getAbsolutePath()); } } else { System.out.println("File access cancelled by user."); } }
最佳答案
Java Swing如何实时刷新JTextArea,以显示刚才加append的内容
在代码中执行完textArea.append("message")后,如果你想让这个更新立刻显示在界面上而不是等swing的主线程返回后刷新,我们一般会在该语句后调用textArea.invalidate()和textArea.repaint()。
问题是这个方法并不能有任何效果,textArea的内容没有任何变化,这或许是swing的一个bug,有一个笨拙的办法可以实现这个效果,就是执行以下语句
  textArea.paintImmediately(textArea.getBounds());

  textArea.paintImmediately(textArea.getX(), textArea.getY(), textArea.getWidth(), textArea.getHeight());
这时,你会发现你刚才增加的消息已经被实时地显示出来了。


应该是在Frame窗口的线程上,因为我点击按钮后,去进行数据处理,数据处理需要很长时间,此时按钮一直呈现的是被点击的样式,Frame线程被阻塞了,所以textArea.append("message");运行后,文本框里没有实时的呈现出来! 
而且现在还有另一种方法,就是在处理数据时,另起一个线程,此时不管处理数据需要多长时间,textArea.append("message");运行后,文本框里会实时呈现出来!


你确信textArea.append("message")是运行在swing事件处理线程上?

SwingUtilities.invokeLater(new Runnable() {

     @Override
     public void run() {
         textArea.append("message");
     }
});
全部回答
22222222222 再看看别人怎么说的。
加一次文字,重绘一次
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
李连杰在电影投名状的出场费高达1亿多?
七年级下册英语暑假作业阅读理解题4
同样是战败国 为什么阿根庭成为哭泣国,而阿
女孩说,其实你可以不必对我这么好,什么意思
大家好。老婆要离婚。起诉了。第一次开庭调节
聊天怎么引导话题
五金日杂批发部地址在哪,我要去那里办事
"位于"英语翻译
女朋友太懒了,平时都不刷碗,怎么办,吃完的
抛光机可不可以把表层漆打掉,喷漆效果太差,
请问 车辆事故 一般要多久保险公司才把理赔的
广州市汇晋房地产代理有限公司怎么样?
脑筋急转弯大全及答案一头牛一个头四条腿一个
新疆到武汉坐火车要多久?
益民乐百货我想知道这个在什么地方
推荐资讯
弃坑两个月的想知道fgo本能寺复刻还会送nobu
什么牌子的洗发水可以让头发能硬、就是不爬下
枣庄科技职业学院新校区-信息工程系地址在什
萌少爷地址有知道的么?有点事想过去
长安汽车,长安汽车买什么好,长安汽车有哪些
千里香专业配菜地址在哪,我要去那里办事
求3D版画面的游戏 要好玩的
(7X+6)÷5=18 用方程解
小米手机相机曝光时间怎么设置
小不凡学一食堂地址有知道的么?有点事想过去
东山路地址有知道的么?有点事想过去
教育局查询上海市浦东新区周浦镇。新童幼儿园
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?