- 浏览: 247823 次
- 性别:
- 来自: 成都
文章分类
最新评论
-
caleb_520:
aidecanlan88 写道我检查l了,没有空格,为什么还是 ...
关于Struts2中的struts.devMode -
aidecanlan88:
我检查l了,没有空格,为什么还是报错,为什么配置开发模式没反应 ...
关于Struts2中的struts.devMode -
luofengxin2012:
绘制JButton圆角效果 -
一个代码:
谢谢啊
利用iframe实现文件上传 -
妍然一笑2010:
...
JTabbedPane的事件监听
今天写一个具有进度条的文件拷贝小程序。也就是大家平常经常看见拷贝文件时候的进度条。当然此程序是用Java实现的。好了闲话少说,马上给出具体的程序代码和截图。
1、首先创建一个CopyFrame类。这类是文件拷贝的窗口主界面
2、创建ContentPanel类,此类主要放置按钮、文本框等基本组件。
大家注意:此ContentPanel实现了一个线程,主要是完进度条的滚动效果。
3、创建ProgressBarPanel类,该类继承一个JPanel面板,主要存放进度条组件,同时实现了一个自定义的监听器CopyListener
4、创建自定义一个监听器CopyListener
5、创建自定义拷贝文件事件
下面为了让大家能够看到上面程序的效果。我给出程序运行的效果图
1、首先创建一个CopyFrame类。这类是文件拷贝的窗口主界面
package javait.org.filecopy; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.Toolkit; import javax.swing.JFrame; public class CopyFrame extends JFrame { private ContentPanel contentPanel; private ProgressBarPanel progressBarPanel; public CopyFrame() { super("文件拷贝小程序"); init(); } private void init() { this.setSize(350,250); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setResizable(false); contentPanel = new ContentPanel(); progressBarPanel = new ProgressBarPanel(); contentPanel.setProgressBarPanel(progressBarPanel); Toolkit kit = Toolkit.getDefaultToolkit(); Dimension screen = kit.getScreenSize(); Dimension frame = this.getSize(); if (screen.width < frame.width) { frame.width = screen.width; } if (screen.height < frame.height) { frame.height = screen.height; } int locationWidth = (screen.width - frame.width) / 2; int locationHeight = (screen.height - frame.height) / 2; this.setLocation(locationWidth, locationHeight); this.getContentPane().add(contentPanel); this.getContentPane().add(progressBarPanel, BorderLayout.SOUTH); this.setVisible(true); } public static void main(String[] args) { new CopyFrame(); } }
2、创建ContentPanel类,此类主要放置按钮、文本框等基本组件。
package javait.org.filecopy; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import javax.swing.JButton; import javax.swing.JFileChooser; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JTextField; public class ContentPanel extends JPanel implements ActionListener, Runnable { private JButton srcButton; private JButton targetButton; private JButton copyButton; private JTextField srcTextField; private JTextField targetTextField; private ProgressBarPanel progressBarPanel; private Thread thread; private FileInputStream fis; private FileOutputStream fos; String fileName = ""; //文件的名字 public void setProgressBarPanel(ProgressBarPanel progressBarPanel) { this.progressBarPanel = progressBarPanel; } public ContentPanel() { srcButton = new JButton("源文件"); targetButton = new JButton("目标文件"); copyButton = new JButton("拷贝"); srcTextField = new JTextField(30); targetTextField = new JTextField(30); this.setLayout(null); //设置布局 this.add(srcTextField); srcTextField.setBounds(55, 30, 140, 30); this.add(srcButton); srcButton.setBounds(195, 30, 80, 30); this.add(targetTextField); targetTextField.setBounds(55, 63, 140, 30); this.add(targetButton); targetButton.setBounds(195, 63, 80, 30); this.add(copyButton); copyButton.setBounds(195, 96, 80, 30); copyButton.addActionListener(this); srcButton.addActionListener(this); targetButton.addActionListener(this); } public void actionPerformed(ActionEvent arg0) { // TODO Auto-generated method stub Object o = arg0.getSource(); if (o == copyButton) { String src = srcTextField.getText(); String target = targetTextField.getText(); if ("".equals(src)) { JOptionPane.showMessageDialog(null, "请选择要被拷贝的文件,谢谢!"); return; } if ("".equals(target)) { JOptionPane.showMessageDialog(null, "请选择目标文件的地址,谢谢!"); return; } File srcFile = new File(src); System.out.println(target+fileName); File targetFile = new File(target+fileName); try { fis = new FileInputStream(srcFile); fos = new FileOutputStream(targetFile); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } thread = new Thread(this); thread.start(); } if (o == srcButton) { //点击源文件按钮 JFileChooser fileChooser = new JFileChooser(); fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY); //设置文件选择模式只能打开文件 int result = fileChooser.showOpenDialog(this); if (result == 0) { File file = fileChooser.getSelectedFile(); String path = file.getAbsolutePath(); srcTextField.setText(path); srcTextField.setEditable(false); //设置文本框不可编辑 fileName = file.getName(); } } if (o == targetButton) { //点击目标地址按钮 JFileChooser fileChooser = new JFileChooser(); fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); int result = fileChooser.showOpenDialog(this); if (result == 0) { File file = fileChooser.getSelectedFile(); String path = file.getAbsolutePath(); targetTextField.setText(path); targetTextField.setEditable(false); } } } public void run() { // TODO Auto-generated method stub if (progressBarPanel != null) { try { byte[] b = new byte[1024]; int size = fis.available(); size = size - (size % 1024) + 1024; float per = (float) (100 / (size / 1024.0)); int i = 0; CopyEvent e = new CopyEvent(); while (true) { int len = fis.read(b); if (len == -1) break; fos.write(b, 0, len); e.setValue((int)(per * i)); progressBarPanel.addEvent(e); i++; } fis.close(); fos.close(); } catch (IOException e) { e.printStackTrace(); } } } }
大家注意:此ContentPanel实现了一个线程,主要是完进度条的滚动效果。
3、创建ProgressBarPanel类,该类继承一个JPanel面板,主要存放进度条组件,同时实现了一个自定义的监听器CopyListener
package javait.org.filecopy; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JProgressBar; public class ProgressBarPanel extends JPanel implements CopyListener { private JProgressBar bar; private JLabel label; public ProgressBarPanel() { bar = new JProgressBar(1, 100); bar.setStringPainted(true); bar.setValue(0); label = new JLabel("拷贝进度:"); this.add(label); this.add(bar); } public void addEvent(CopyEvent e) { //在计算或者获取进度的拷贝文件进度值 // TODO Auto-generated method stub /*if (e.getValue() == 100) { bar.setValue(100); } bar.setValue(e.getValue());*/ if ((e.getValue() + 1) == 100) { bar.setValue(100); } bar.setValue(e.getValue() + 1); //设置进度条的百分比 } }
4、创建自定义一个监听器CopyListener
package javait.org.filecopy; public interface CopyListener { public void addEvent(CopyEvent e); }
5、创建自定义拷贝文件事件
package javait.org.filecopy; public class CopyEvent { int value; public int getValue() { return value; } public void setValue(int value) { this.value = value; } }
下面为了让大家能够看到上面程序的效果。我给出程序运行的效果图
发表评论
-
JavaIT学习室分享JTable高清视频下载
2011-11-30 09:14 2794版权:JavaIT学习室_在线Java学习网站 在学习Jav ... -
如何防止SQL语句注入
2011-09-08 16:50 2046为了给大家将SQL注入的 ... -
绘制JButton圆角效果
2011-05-10 23:14 9744在网上看见一篇非常好的技术文章,此文章是将JButton的四角 ... -
将JButton设置为透明
2011-05-10 22:49 10102今天简单的在网上查看了关于将JButton设置为透明的相关技术 ... -
3D效果的饼图
2011-05-09 21:18 1387今天给大家一个由JFreeChart组件实现的3D效果的饼图, ... -
简单JDialog对话模式
2011-04-24 21:20 8481JDialog(对话框) (1)对话框主要摆放各种控件(按钮 ... -
简单的冒泡排序
2011-04-22 17:30 1029import java.util.Random; //随机生成 ... -
Java中finalize方法使用
2011-04-18 21:56 1518今天来简单地介绍一下Java编程中的finalize方法的使用 ... -
利用Java语言打印具有"*"号的等边三角形
2011-04-11 20:54 2113利用Java语言打印具有"*"号的等边三角 ... -
JTabbedPane的事件监听
2010-04-14 09:08 10217当用户选择JTabbedPane中的任何一个选项卡的时候,可以 ... -
JTextField实现实时动态监听
2010-04-13 21:11 11862今天讲一讲关于实现JTextField实时动态监听的功能。想必 ... -
JFrame中加载图片
2010-04-13 10:59 3743为一个JFrame窗口中加载一个背景图,有两种方法 (1)生成 ... -
JTable操作之一
2010-04-04 22:51 2838今天写一篇关于JTable有关的文章,包括:为JTable单元 ... -
Netbeans下的插件
2009-12-20 23:04 1032如要想要在Netbeans下面使用UML,需要下载关于UML的 ... -
利用Java和JavaScript实现1~100之间的质(素)数
2009-06-13 00:51 2265首先,利用Java实现1~100之间的质(素)数 (1)创建一 ... -
写一个程序将英文中的26个大写字母,放入到char[]里面
2009-06-13 00:45 1945写一个程序将英文中的26个大写字母,放入到char[]里面 ... -
关于Java日期格式化及其使用例子
2009-06-11 22:43 2298package com.gxa.jdk5.example1 ...
相关推荐
一个带界面的java小程序,可实现对所选任何类型的文件进行拷贝,并对此复制过程有进度条显示。代码风格良好,适合初学者借鉴。
VC 复制文件的小程序,,方便大家学习进度条
1.1版本解决了1.0版本的一个bug,使用1.0缓存区过小,可能导致界面假死(实际上没有失去响应,可以点击按钮,原因是界面更新太快... 下载完成你可以处理诸如文件拷贝或者安装程序等各种操作,欢迎大家提出意见。
线程池:进行多文件、大文件拷贝。 内核链表:用于记录用户进入的路径、检索文件夹下内容、记录选中文件、即将拷贝的文件等操作。 MakeFile 项目管理 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的...
然后将在装有SDK的机器上配置过的security.config拷贝到客户机的.net framework的配置文件夹(%system%\Microsoft.NET\Framework\v2.0.50727\CONFIG)下,写了一个小程序可以直接实现这个功能但是这样会破坏客户机上...
它通常用于安装程序、文件拷贝、磁盘格式等操作时的工作进度提示。 二、CProgress控件的使用方法 CProgress控件的使用方法主要有两步:创建CProgress控件对象和设置CProgress控件的属性。 1. 创建CProgress控件...
将从另外的电脑上拷贝的132k同名的文件粘贴到原文件夹里后,重启机器,没出现进度条,直接出现的提示是:“我们对给你造成的不便非常抱歉,但windows没有成功启动可能是由于最近的硬件或软件更改造成的”,并反复...
3,免费版本不能使用“拷贝”重复文件和“导出”重复文件的功能。注册后的付费版本将具有这个功能。 对于试用版本的说明:为了帮助我们更好地发展后续更新版本,请您在试用本软件感觉满意后,对软件进行注册,才...
本程序为静默安装,安装时没有安装界面,只有拷贝文件进度条。安装完成后程序会自动结束,只要没有提示程序遇到错误,即说明安装成功。 安装完成后,大家可以自己验证是否安装成功,打开 “C:\Windows\System32\...
自行准备一个重装的ISO/GHO镜像,(微软官网或MSDN 下载),将系统镜像文件拷贝到U盘里 。 本软件涉及对可移动磁盘的读写操作,部分杀毒软件和安全类软件会导致制作失败,运行程序前请关闭相关软件! 2、插入U盘后,...
§免安装,拷贝到当前目录或者Windows的System目录即可调用,删除就是卸载,没有残留文件或者注册表垃圾。 §编程接口开放、友善,充分考虑软件开发者的切身需要,把软件开发者的编程工作量降至最低。 §支持各大...
实例70 拷贝、删除和移动文件 实例71 读写INI文件 实例72 读写大块资料(二进制)文件 实例73 文件变更通知 第8章 数据库 实例74 格式化数字 实例75 中文大写数字 实例76 存取...
70·拷贝,删除和移动文件 71·读写INI文件 72·读写大块资料(二进制) 73·文件变更通知 第八章 74·格式化数字 75·中文大写数字 76·存取图象字段 77·ADO控制access数据库 78·SQL语句中设置时段检索条件 79·...
基于JAVA的UDP服务器模型源代码,内含UDP服务器端模型和UDP客户端模型两个小程序,向JAVA初学者演示UDP C/S结构的原理。 简单聊天软件CS模式 2个目标文件 一个简单的CS模式的聊天软件,用socket实现,比较简单。 ...
20.15 执行客户端的可执行程序 20.16 自动调用OutLook发送邮件 20.17 弹出窗口选择颜色 20.18 弹出框式邮件发送 20.19 把网站作为用户的Active桌面 20.20 判断是否安装了flash插件 第21章 流行技术:DOM和userData的...
20.15 执行客户端的可执行程序 20.16 自动调用OutLook发送邮件 20.17 弹出窗口选择颜色 20.18 弹出框式邮件发送 20.19 把网站作为用户的Active桌面 20.20 判断是否安装了flash插件 第21章 流行技术:DOM和userData的...
内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...
本程序采用PHP+mysql编写:模板全部使用文件形式保存,对用户设计模板、网站升级转移均提供很大的便利,健壮的模板标签为站长 DIY 自己的网站提供了强有力的支持。 高效率标签缓存机制:允许对类同的标签进行缓存,...