现在的位置: 首页 > 综合 > 正文

myeclipse10 swing/matisse 实现文件上传(非网络环境)

2014年03月14日 ⁄ 综合 ⁄ 共 1727字 ⁄ 字号 评论关闭

很久没有Coding了,一直在忙些乱七八糟的事情。由于项目需求的变化,之前的一些基于JavaWeb的项目现在需要转换为桌面软件,而关于Java Swing 编程方面,我之前也是一片空白,只好现学现用了。 昨天通过半天的学习,实现了文件提交,包括界面和功能。由于是非网络环境下运行,所以不需要http协议之类,文件的上传仅是文件的读写操作。借助Myeclipse10中的 swing/matisse,能够较为迅速地实现此功能。

1、搭建界面。选择swing controls中相应的控件,搭建如下图所示的界面(下面两个黄色的框是用于显示状态报告的两个无text属性值的jLabel)

2、选择文件窗口及文件类型过滤

基本原理:点击选择按钮后,弹出一个showOpenDialog窗口,在这里面选择文件,确定后把所选文件的路径添加到jTextField中。

具体代码示例:

private void jButton1MouseClicked(java.awt.event.MouseEvent evt)
 {
		JFileChooser fd = new JFileChooser();  //创建一个jFileChooser对象,用于打开一个文件选择窗口		
		FileNameExtensionFilter filter = new FileNameExtensionFilter("owl file", "owl"); //根据需要,创建一个文件类型过滤器
		fd.addChoosableFileFilter(filter);  //将文件类型过滤器添加到窗口中
		fd.setCurrentDirectory(new File("e:/"));  // 设置默认打开位置
		int operator = fd.showOpenDialog(null); //显示窗口
		if (operator == 1) // 如果用户在文件选择窗口中点击了取消按钮
			; // 什么也不做,窗口会自动关闭,这一步必须要用 否则程序会报错
		else
			jTextField1.setText(fd.getSelectedFile().getAbsolutePath().toString()); // 如果用户选择了文件后点击了确定(或打开)按钮,则将所选文件的物理路径得到到jTextField中
	}

3、文件的提交

如上所述,本文讲的文件的上传,本质是在本地将文件进行复制,代码如下:

private void jButton3MouseClicked(java.awt.event.MouseEvent evt) 
{               
   if (jTextField1.getText().isEmpty())
			jLabel1.setText("请选择本体文件.");
		else if (jTextField2.getText().isEmpty())
			jLabel2.setText("请选择文档文件.");
		else {
			jLabel1.setText("正在提交,请稍候...");
			//复制本体文件
			File f = new File(jTextField1.getText());
			FileInputStream fis;
			FileOutputStream fos;
			byte[] buffer = new byte[1024];
			int len = 0;
			try {
				fos = new FileOutputStream("d:/" + f.getName());
				fis = new FileInputStream(f);
				while ((len = fis.read(buffer)) > 0) {
					fos.write(buffer, 0, len);
				}
				fos.flush();
				fos.close();
			} catch (Exception e) {
				//e.printStackTrace();
				jLabel1.setText("本体文件上传失败。");
			}
			jLabel1.setText("<html>本体文件上传成功.</html>");
}

4、关闭窗口,退出程序

用户如果想退出程序,则既可点击窗口右上的关闭图标,也可点击界面中的取消按钮。

private void jButton4MouseClicked(java.awt.event.MouseEvent evt)
 {
		// 点击取消按钮退出系统
		this.dispose();
}

抱歉!评论已关闭.