WEB开发网      婵犵數濞€濞佳囧磹婵犳艾鐤炬い鎰堕檮閸嬬喐銇勯弽銊с€掗梻鍕閺岋箑螣娓氼垱笑闂佽姘﹂褔婀佸┑鐘诧工妤犲憡绂嶉崜褏纾奸弶鍫涘妼缁楁岸鏌熷畡鐗堝殗闁诡喒鏅犲畷褰掝敃閵堝棙顔忔繝鐢靛仦閸ㄥ爼骞愰幘顔肩;闁规崘绉ぐ鎺撳亹闁绘垶锕╁Λ鍕⒑閹肩偛濡奸悗娑掓櫇缁顓兼径妯绘櫇闂佹寧绻傞弻濠囨晝閸屾稓鍘甸柣搴㈢⊕閿氶柣蹇ョ稻缁绘繃绻濋崘銊т紝闂佽鍨伴崯鏉戠暦閻旂⒈鏁傞柛鈾€鏅欑槐妯衡攽閻愬樊鍤熷┑顔藉劤铻為柛鏇ㄥ墯閸欏繘鏌嶉崫鍕櫣缂佲偓婢跺绠鹃柟瀛樼箘閿涘秵顨ラ悙顏勭伈闁诡喖缍婂畷鎯邦槻婵℃彃顭烽弻娑㈠Ω閵夈儺鍔夌紓浣稿€哥粔褰掑极閹剧粯鏅搁柨鐕傛嫹 ---闂傚倷鐒︾€笛兠洪埡鍛闁跨噦鎷�
开发学院WEB开发Jsp 怎样在Java实例开发的过程中使用进度条 阅读

怎样在Java实例开发的过程中使用进度条

 2008-01-05 10:52:05 来源:WEB开发网 闂傚倷绶氬ḿ褍螞閹绢喖绠柨鐕傛嫹闂傚倷绀侀幉锟犲垂閻㈠灚宕查柟鎵閸庡秵銇勯幒鎴濃偓鐢稿磻閹炬枼妲堟繛鍡楃С濞岊亞绱撻崒姘扁枌闁瑰嚖鎷�婵犵數濮幏鍐川椤撴繄鎹曢梻渚€娼уú銈吤洪妸鈺佺劦妞ゆ帊鑳堕埊鏇㈡煏閸モ晛浠х紒杈╁仱閺佹捇鏁撻敓锟�闂傚倷绶氬ḿ褍螞閹绢喖绠柨鐕傛嫹  闂傚倷鑳舵灙缂佺粯顨呴埢宥夊即閵忕姵鐎梺缁樺姈椤愮厧鈽夊Ο閿嬬€婚梺褰掑亰閸撴稑鈻斿鑸碘拺闁告稑饪村▓鏃€绻涚仦鍌氬闁崇粯鎹囬獮瀣攽閹邦剚顔傛俊鐐€栧濠氬储瑜忛幉鎾晸閿燂拷
核心提示:在读取大型文件或者其它大批量数据输入操作时,希望能够通过一个进度条显示当前的进度,怎样在Java实例开发的过程中使用进度条,现在在java中非常轻易实现,仅仅需要几行代码即可,// 显示已读取的百分比,int c;while((c=pm.read()) != -1){// 处理代码}pm.close();}catch(

  在读取大型文件或者其它大批量数据输入操作时,希望能够通过一个进度条显示当前的进度,现在在java中非常轻易实现,仅仅需要几行代码即可。Java的swing包提供了PRogressMonitorInputStream类,该类提供了自动地弹出进度窗口和事件处理机制。
  
  使用这个类也非常方便,只需要把任何一个InputStream作为参数,构造一个新的ProgressMonitorInputStream类,其它不需要任何额外的代码,即可实现进度窗口的自动生成。ProgressMonitorInputStream类可以和其它InputStream一样使用。
  
  ProgressMonitorInputStream类继续层次
  
  [pre]java.lang.Object
  
  +--java.io.InputStream
  
  +--java.io.FilterInputStream
  
  +--javax.swing.ProgressMonitorInputStream[/pre]
  
  构造方法
  
  ProgressMonitorInputStream
  (Component parentComponent,
  Object message, InputStream in)
  parentComponent - 触发被监视操作的组件
  message - (假如弹出进度显示窗口),
  显示在进度显示窗口中的指示信息
  in - 需要监视的输入流
  
  操作方法
  
  除了在InputStream和FilterInputStream中继续的方法外,还增加了如下方法:
  
  ProgressMonitor getProgressMonitor()
  //得到当前对象使用的ProgressMonitor对象。
  int read()
  int read(byte[] b)
  int read(byte[] b, int off, int len)
  void reset()
  long skip(long n)
  //上面几个方法都是覆盖了FilterInputStream中的方法,
  因为需要更新进度指示。
  void close()
  //因为需要关闭进度监视对象和窗口,
  所以覆盖了FilterInputStream父类中的close方法。
  
  示例代码:
  
  import java.awt.FlowLayout;
  import java.awt.event.ActionEvent;
  import java.awt.event.ActionListener;
  import java.io.FileInputStream;
  import java.io.InputStream;
  
  import javax.swing.JButton;
  import javax.swing.JFrame;
  import javax.swing.ProgressMonitorInputStream;
  
  public class ProgressMonitorTest
  {
  public static void main(String[] args)
  {
  // 创建一个包含“Click me”的窗口
  final JFrame f =
  new JFrame("ProgressMonitor Sample");
  f.getContentPane().setLayout(new FlowLayout());
  JButton b = new JButton("Click me");
  f.getContentPane().add(b);
  f.pack();
  
  // 设置按钮的动作事件
  b.addActionListener(new ActionListener()
  {
  public void actionPerformed(ActionEvent e)
  {
  // 这儿使用了新的线程处理按钮的动作事件,
  因为我们需要
  //主窗口的线程响应用户。这样你可以多次点击该按钮,
  //会启动多个读取文件的线程。主窗口也保持响应。
  new Thread()
  {
  public void run()
  {
  try {
  // 打开文件输出流,
  
  把InputStream包装在ProgressMonitorInputStream中。
  //在当前目录中需要放置一个大文件,建议超过50M
  InputStream in = new FileInputStream("bigfile.dat");
  ProgressMonitorInputStream pm =
  new ProgressMonitorInputStream(f,"Reading a big file",in);
  // 读取文件,假如总耗时超过2秒,
  将会自动弹出一个进度监视窗口。
  //  显示已读取的百分比。
  int c;
  while((c=pm.read()) != -1)
  {
  // 处理代码
  }
  pm.close();
  }
  catch(Exception ex)
  {
  ex.printStackTrace();
  }
  }
  }.start();
  }});
  
  // 设置缺省的窗口关闭行为,并显示窗口。
  f.setDefaultCloSEOperation
  (JFrame.EXIT_ON_CLOSE);
  f.setVisible(true);
  }
  }

Tags:怎样 Java 实例

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接