`
lg_asus
  • 浏览: 190823 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

JFileChooser

阅读更多
import java.awt.*;
import java.awt.event.*;

import javax.swing.*;
import javax.swing.event.*;
import java.io.*;
import javax.swing.filechooser.*;
import javax.swing.filechooser.FileFilter;

public class JFileChooserDemo1 implements ActionListener{
	JFrame jf = null;
	JLabel label = null;
	JFileChooser fileChooser = null;
	JButton openButton,saveButton ;
	JTextArea theArea = null;
	
	public JFileChooserDemo1(){
		jf = new JFrame("JFileChooserDemo1");
		theArea = new JTextArea();
		label = new JLabel("請選擇文件");
		Container contentPane = jf.getContentPane();
		openButton = new JButton("open file");
		saveButton = new JButton("save file");
		openButton.addActionListener(this);
		saveButton.addActionListener(this);
		Box vBox = Box.createHorizontalBox();
		vBox.add(openButton);
		vBox.add(Box.createGlue());
		vBox.add(saveButton);
//		JPanel panel = new JPanel();
		contentPane.add(vBox, BorderLayout.SOUTH);
		contentPane.add(label,BorderLayout.NORTH);
		contentPane.add(theArea,BorderLayout.CENTER);
//		將openButton設置為默認按鈕,按回車即可響應
		jf.getRootPane().setDefaultButton(openButton);
		jf.setSize(300,300);
		jf.setVisible(true);
		jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
	
	public static void main(String...args){
		new JFileChooserDemo1();
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		File file = null;
		int result ;
		System.out.println(e.getActionCommand());
		
		if(e.getSource()==openButton){
			fileChooser = new JFileChooser(".");
			/*fileChooser.setDialogTitle("選取文件");
			fileChooser.setApproveButtonText("打開");*/
			try{
				UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
				System.out.println("Windows L&F");
			}catch(Exception ne){
				System.out.println("L&F error");
			}
	//		設置文件的選擇目錄
			fileChooser.addChoosableFileFilter(new JAVAFileFilter("java"));
			fileChooser.addChoosableFileFilter(new JAVAFileFilter("class"));
			fileChooser.setAcceptAllFileFilterUsed(false);
			
	//		設置文件的顯示視圖
			fileChooser.setFileView(new MyFileView());
			result = fileChooser.showOpenDialog(jf);
			if(result==JFileChooser.APPROVE_OPTION){
				file = fileChooser.getSelectedFile();
				label.setText("你選擇了:"+file.getName());
			}else if(result==JFileChooser.CANCEL_OPTION){
				label.setText("你沒有選擇任何文檔");
				label.setForeground(Color.red);
			}
			FileInputStream fis = null;
			if(file!=null){
				try{
					fis = new FileInputStream(file);
					
				}catch(FileNotFoundException fnde){
					label.setText("文件未找到");
					return ;
				}
				int readbyte;
				try{
					while((readbyte=fis.read())!=-1){
						theArea.append(String.valueOf((char)readbyte));
					}
				}catch(IOException ioe){
					label.setText("文件讀取發生錯誤");
				}
				finally{
					try{
						if(fis!=null){
							fis.close();
						}
					}catch(IOException ioe){
						
					}
				}
			}
		}
		if(e.getSource()==saveButton){
			fileChooser = new JFileChooser(".");
			try{
				UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
				System.out.println("Windows L&F");
			}catch(Exception ne){
				System.out.println("L&F error");
			}
			result = fileChooser.showSaveDialog(jf);
			file = null;
			String fileName;
			if(result==JFileChooser.APPROVE_OPTION){
				file = fileChooser.getSelectedFile();
				label.setText("你選擇的存儲文件名稱為:"+file.getName());
			}else if(result==JFileChooser.CANCEL_OPTION){
				label.setText("你沒有選擇文件存儲名稱");
			}
			FileOutputStream fos = null;
			if(file!=null){
				try{
					fos = new FileOutputStream(file);
				}catch(FileNotFoundException fnde){
					label.setText("File Not Found");
					return ;
				}
				String content = theArea.getText();
				try{
					fos.write(content.getBytes());
				}catch(IOException ioe){
					label.setText("文件寫入錯誤");
				}finally{
					try{
						if(fos!=null){
							fos.close();
						}
					}catch(IOException ioe){
						
					}
				}
			}
		}
	}
	
	class JAVAFileFilter extends FileFilter{
		String ext;
		public JAVAFileFilter(String ext){
			this.ext = ext;
		}
		
		@Override
		public boolean accept(File file){
			if(file.isDirectory()){
				return true;
			}
			String fileName = file.getName();
			int index = fileName.lastIndexOf('.');
			if(index>0 && index<fileName.length()-1){
				String extension = fileName.substring(index+1).toLowerCase();
				if(extension.equals(ext)){
					return true;
				}
			}
			return false;
		}
		@Override
		public String getDescription(){
			if(ext.equals("java")){
				return "JAVA Source File(*.java)";
			}
			if(ext.equals("class")){
				return "JAVA Class File(*.class)";
			}
			return "";
		}
	}
	
	class MyFileView extends FileView{
	/*	@Override
		public String getName(File file){
//			java look and feel 功能會處理掉這個項目,一般而言使用jf.getName()當返回值
			return null;
		}
		@Override
		public String getDescription(File file){
//			java look and feel 功能會處理掉這個項目,一般而言使用jf.getName()當返回值
			return null;
		}
		@Override
		public String getTypeDescription(File file){
			String extension = getExtensionName(file);
			if(extension.equals("java")){
				return "JAVA Source File";
			}
			if(extension.equals("class")){
				return "JAVA Class File";
			}
			return "";
		}*/
		@Override
		public Icon getIcon(File file){
			String extension = getExtensionName(file);
				if(extension.equals("java")){
					return new ImageIcon(".\\Icons\\home.jpg");
				}
				if(extension.equals("class")){
					return new ImageIcon(".\\Icons\\refresh.jpg");
				}
				return null;
		}
		/*@Override
		public Boolean isTraversable(File file){
//			java look and feel 功能會處理掉這個項目,一般而言使用jf.getName()當返回值
			return null;
		}*/
		
		public String getExtensionName(File file){
			String extension = "";
			String fileName = file.getName();
			int index = fileName.lastIndexOf('.');
			if(index>0 && index<fileName.length()-1){
				extension = fileName.substring(index+1).toLowerCase();
			}
			return extension;
		}
		
	}
}


參考:深入淺出Java Swing程序設計
分享到:
评论

相关推荐

    Java的JFileChooser类的使用详解

    Java的JFileChooser类的使用详解 JFileChooser是一个Java类,提供了一个文件对话框,用于选择文件或文件夹。它可以通过API打开一个模态对话框,或直接实例化并加入到其他组件。 直接使用JFileChooser打开对话框 ...

    Java文件选择对话框JFileChooser使用详解

    Java中的`JFileChooser`是Swing库提供的一种用于在用户界面中实现文件选择功能的组件。它允许用户从本地文件系统中打开、保存或者选择文件,对于任何涉及到用户需要交互选择文件的应用程序,如文件加密器,都是必不...

    Java中文件选择器JFileChooser.showSaveDialog实现默认文件名的解决方案

    "Java中文件选择器JFileChooser.showSaveDialog实现默认文件名的解决方案" 在 Java 中,文件选择器 JFileChooser 是一个常用的组件,用于选择打开文件或保存文件。然而,在使用 JFileChooser 的时候,我们经常会...

    java程序设计 TCP文件传输程序 JFileChooser实现文件选择 可以设置路径

    这个过程涉及到的Java类和接口包括`Socket`、`ServerSocket`、`InputStream`、`OutputStream`、`BufferedInputStream`、`BufferedOutputStream`以及`JFileChooser`。理解这些核心组件的工作原理和使用方法是Java网络...

    JFileChooser 运用

    选择路径保存文件,运用JFileChooser组件生成、

    使用JFileChooser选择文件目录

    Swing中使用JFileChooser选择文件目录

    JFileChooser使用详解

    《JFileChooser使用详解》 在Java编程环境中,`JFileChooser`是Swing库中的一个关键组件,用于实现文件选择对话框。它允许用户在本地文件系统中浏览并选择文件或目录,广泛应用于需要用户交互选取文件的应用场景。...

    使用JFileChooser控件下载文件

    JFileChooser下载文件到本地,可选择文件保存路径,可以上传文件,保存文件chooser.showSaveDialog()函数,打开文件chooser.showOpenDialog()函数

    JFileChooser源代码

    这是JDK里的JFileChooser类解压出的源代码

    JFileChooser类修改

    JFileChooser类简单的修改!其他的地方还没研究明白!希望大家一起研究下!

    Java Swing组件文件选择器JFileChooser简单用法示例

    Java Swing组件文件选择器JFileChooser简单用法示例 Java Swing组件文件选择器JFileChooser是Java Swing中一个功能强大且灵活的文件选择器组件,可以用来选择文件或文件夹。下面我们将通过一个简单的示例来介绍...

    JFileChooser使用详解.pdf

    JFileChooser是Java Swing组件库中的一个类,用于创建图形化的文件选择对话框。它提供了一个简单而强大的方式让用户选择文件或目录。本文将对JFileChooser的使用进行详解。 首先,创建一个JFileChooser对象是使用...

    java swing-JFileChooser的使用

    JFileChooser是Swing库提供的一个用于选择文件和目录的组件。它允许用户浏览文件系统并选择所需的文件或目录。

    Java Swing组件JFileChooser用法实例分析

    Java Swing组件JFileChooser用法实例分析 Java Swing组件JFileChooser是Swing中经常用到的一个控件,主要用于文件选择和文件管理。下面将结合实例形式分析JFileChooser文件选择器的功能、使用方法及相关注意事项。 ...

    实例化JFileChooser对象报空指针异常问题的解决办法

    在Java编程中,`JFileChooser` 是Swing库中用于实现文件选择对话框的一个组件,允许用户从文件系统中选择文件或目录。然而,有时在实例化`JFileChooser`对象时,开发者可能会遇到一个常见的错误——空指针异常...

    java文件对话框

    在Java中,我们通常使用`JFileChooser`类来实现文件打开和保存的功能。 首先,让我们详细了解`JFileChooser`类。它是Java AWT和Swing库的一部分,位于`javax.swing`包中。`JFileChooser`提供了两种主要操作:打开...

    基于 java swing 开发的资源管理器

    1. JFileChooser:这是用来打开文件选择对话框的组件,用户可以从中选择一个或多个文件或目录。在资源管理器中,它可能被用作打开或保存文件的入口。 2. JTree:这个组件可以展示文件系统的目录结构。每个节点代表...

    java_IO记事本

    JFileChooser jfc1 = new JFileChooser(); jfc1.setDialogTitle("选择文件"); jfc1.showOpenDialog(null); ``` 2. **获取文件路径**:通过`JFileChooser`的`getSelectedFile()`方法获得用户选择的文件,并调用...

    JFileChooser实现对选定文件夹内图片自动播放和暂停播放实例代码

    JFileChooser实现对选定文件夹内图片自动播放和暂停播放实例代码 JFileChooser是Java Swing中一个功能强大的文件选择器组件,它可以让用户选择文件或文件夹,并提供了一些有用的方法来处理文件操作。在本例中,我们...

Global site tag (gtag.js) - Google Analytics