CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2SE / 基础类

送分!JTextField的显示刷新的问题

楼主comcy(故乡的云)(▲▲▲▲▲▲▲▲▲▲▲▲▲)2005-06-04 04:41:03 在 Java / J2SE / 基础类 提问

我写如下语句:  
  for   (int   i   =   0   ;   i<amount   ;   i++){  
          jtf.setText("共有"+amount+"户,目前处理第"(i+1)+"户,已完成"+((i+1)*100/amount)+"%");  
  }  
   
  显示的时候只显示最后的100%的一个界面  
  我想让这个JTextField随时刷新显示(或每加1%就刷新显示一次之类的也行),怎么办?  
  因为这个工作可能会处理很长时间。 问题点数:50、回复次数:13Top

1 楼Z_Beginner(探索中)回复于 2005-06-04 07:50:37 得分 5

通过线程控制。  
   
  public   void   run()  
  {  
        while(i<amount)  
        {  
              jtf.setText("共有"+amount+"户,目前处理第"(i+1)+"户,已完成"+((i+1)*100/amount)+"%");  
              try  
              {  
                    Thread.sleep(35);  
              }  
              catch(InterruptedException   e){}  
              i++;  
        }  
  }Top

2 楼mustdobetter(Java使一切皆有可能)回复于 2005-06-04 08:05:31 得分 1

路过Top

3 楼zhaoshuxian(aheadjava)回复于 2005-06-04 08:33:37 得分 1

不好意思.进来了.....Top

4 楼hzh_net(_风云_)回复于 2005-06-04 08:37:32 得分 2

通过线程控制。  
   
  public   void   run()  
  {  
        while(i<amount)  
        {  
              jtf.setText("共有"+amount+"户,目前处理第"(i+1)+"户,已完成"+((i+1)*100/amount)+"%");  
              try  
              {  
                    Thread.sleep(30);//30--the   length   of   time   to   sleep   in   milliseconds.    
   
              }  
              catch(InterruptedException   e){}  
              i++;  
        }  
  }  
   
   
  -----  
  呵呵  
   
  ^_^Top

5 楼nian86()回复于 2005-06-04 08:38:09 得分 1

二楼的狠!  
  我也想不出好办发Top

6 楼xinghe2004()回复于 2005-06-04 10:21:15 得分 1

学习!Top

7 楼believefym(feng)回复于 2005-06-04 11:02:23 得分 2

我认为,用不用线程要看楼主的目的  
  假如只是为了美化界面,可以考虑  
  假如涉及到性能问题,这个线程就没必要了,纯粹浪费时间Top

8 楼play100(坐天观井)回复于 2005-06-04 16:58:56 得分 3

for   (int   i   =   0   ;   i<amount   ;   i++){  
  SwingUtilities.invokeLater(new   Runnable()   {  
  public   void   run()   {  
        jtf.setText(...);  
  }  
  });  
  }Top

9 楼cyicecream(为了升仙(星)到处UP)回复于 2005-06-04 21:00:26 得分 3

updateUI();Top

10 楼comcy(故乡的云)(▲▲▲▲▲▲▲▲▲▲▲▲▲)回复于 2005-06-04 21:09:54 得分 0

都不好使啊,大哥们!  
  这个类本身我没有定义成线程类,我该怎么做?  
  怎么定义成线程类?Top

11 楼comcy(故乡的云)(▲▲▲▲▲▲▲▲▲▲▲▲▲)回复于 2005-06-04 21:16:35 得分 0

上面的方法我都试过了  
  还是显示的时候只显示最后的100%的一个界面  
  各位大哥帮帮忙吧,急啊Top

12 楼comcy(故乡的云)(▲▲▲▲▲▲▲▲▲▲▲▲▲)回复于 2005-06-05 14:29:34 得分 0

upupupupupupupupTop

13 楼gtlang78()回复于 2005-06-05 17:12:21 得分 31

import   java.awt.BorderLayout;  
  import   java.awt.event.ActionEvent;  
  import   java.awt.event.ActionListener;  
   
  import   javax.swing.JButton;  
  import   javax.swing.JFrame;  
  import   javax.swing.JTextField;  
  import   javax.swing.SwingUtilities;  
   
  public   class   RefreshTest   {  
          public   static   void   main(String[]   args)   {  
                  final   JTextField   tf   =   new   JTextField(40);  
                  JButton   btn   =   new   JButton("Start");  
                  btn.addActionListener(new   ActionListener()   {  
                          public   void   actionPerformed(ActionEvent   e)   {  
                                  new   Thread()   {  
                                          public   void   run()   {  
                                                  final   int   amount   =   100;  
                                                  for   (int   i   =   0;   i   <   amount;   i++)   {  
                                                          final   int   t   =   i;  
                                                          SwingUtilities.invokeLater(new   Runnable()   {  
                                                                  public   void   run()   {  
                                                                          tf.setText("共有"   +   amount   +   "户,目前处理第"   +   (t   +   1)  
                                                                                          +   "户,已完成"   +   ((t   +   1)   *   100   /   amount)   +   "%");  
                                                                  }  
                                                          });  
                                                          try   {  
                                                                  Thread.sleep(10);  
                                                          }   catch   (InterruptedException   e)   {  
                                                          }  
                                                  }  
                                          };  
                                  }.start();  
                          }  
                  });  
   
                  JFrame   f   =   new   JFrame();  
                  f.getContentPane().add(tf,   BorderLayout.CENTER);  
                  f.getContentPane().add(btn,   BorderLayout.SOUTH);  
                  f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
                  f.pack();  
                  f.setLocationRelativeTo(null);  
                  f.show();  
          }  
  }  
  Top

相关问题

  • VC如何改变显示器的刷新率?100分求教!
  • ListCtrl显示刷新问题
  • 如何获得当前显示模式的分辩率和刷新率?
  • 建议:显示分数的这页http://www.csdn.net/expert/sign.htm可以自动刷新!
  • 在delphi中如何修改显示器的分辩率与刷新频率?
  • 高分求救 NT下显示器调颜色,刷新率就死机
  • 用VC如何得到当前显示器的分辨率和刷新率?
  • ***[立即给分!]***关于DBGRID控件的刷新显示问题?如何使用。。。
  • 为什么图像加载进来以后刷新后不显示(10分)
  • Win98登陆画面显示分辨率和刷新频率问题

关键词

得分解答快速导航

  • 帖主:comcy
  • Z_Beginner
  • mustdobetter
  • zhaoshuxian
  • hzh_net
  • nian86
  • xinghe2004
  • believefym
  • play100
  • cyicecream
  • gtlang78

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo