首页 > 编程语言 >Java Swing容器:文件对话框

Java Swing容器:文件对话框

时间:2024-03-29 16:04:18浏览次数:20  
标签:文件 Java File 对话框 fileChooser Swing new JFileChooser

       文件对话框是专门用于对文件或目录进行浏览和选择的对话框。可以使用JFileChooser类创建文件对话框,其主要构造方法如下:

  • JFileChooser():根据用户默认目录创建文件对话框。
  • JFileChooser(File currentDirectory):根据File型参数所指定的目录创建文件对话框。
  • JFileChooser(String currentDirectoryPath):根据String型参数指定的目录创建文件对话框。

       刚创建的文件对话框是不可见的,可以调用以下几种方法将其显示出来:

  • int showOpenDialog(Component parent):显示一个打开文件对话框。
  • int showSaveDialog(Component parent):显示一个保存文件对话框。
  • int showDialog(Component parent, String appoveButtonText):显示一个自定义对话框,其中,对话框的标题和按钮的文本由参数appoveButtonText来指定。

       在上述方法中,参数parent指定文件对话框的父组件,其决定了文件对话框的显示位置,如果该参数为null,则文件对话框会显示在屏幕的正中。这些方法的返回值是一个整数,这个整数表示用户的选择操作,其可以取如下几种值:

        JFileChooser.APPROVE_OPTION:用户点击了打开或确定按钮,

        JFileChooser.CANCEL_OPTION:用户点击了取消按钮或关闭了对话框,

        JFileChooser.ERROR_OPTION:发生错误或对话框关闭。

       可以通过setFileSelectionMode(int mode)方法设置文件的选择方式,其中,参数mode的取值和含义如下:

        JFileChooser.FILES_ONLY:只能选择文件,

        JFileChooser.DIRECTORIES_ONLY:只能选择目录,

        JFileChooser.FILE_AND_DIRECTORIES:文件和目录都能选择(默认情况)。

       可以用setFileFilter(FileFilter filter)方法设置默认可选择的文件类型,其中,FileFilter是一个接口,它是File的过滤器,在实际应用中,可以使用该接口的实现类FileNameExtensionFilter的对象作为方法的参数。例如,下面代码设置可选文件的后缀名为doc、docx和txt。

JFileChooser fileChooser=new JFileChooser();

FileNameExtensionFilter filter = new FileNameExtensionFilter(

"files(*.doc,*.docx,*.txt)", "doc", "docx","txt");

fileChooser.setFileFilter(filter);

       当用户打开文件对话框后,默认情况,文件只能进行单选,可以通过getSelectedFile()方法获得用户所选择的文件。可以通过方法setMultiSelectionEnabled(boolean b)设置文件是否允许多选,如果b的值为true,则文件可以进行多选,这时可以使用getSelectedFiles()方法获得用户选择的所有文件。

【例1】文件对话框的使用。

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.File;
import java.io.FileFilter;
import javax.swing.filechooser.FileNameExtensionFilter;
public class JFileChooserDemo extends JFrame {
	JFileChooser fileChooser;
	JButton openButton=new JButton("打开文件");
	JButton saveButton=new JButton("保存文件");
	JButton saveAsButton=new JButton("另存为");
	JTextField textField=new JTextField(20);
	JTextArea textArea=new JTextArea();
	public JFileChooserDemo() {
		JFrame frame=this;
		setTitle("文件对话框示例");
		setSize(400, 300);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setLocationRelativeTo(null);
		Container contentPane=this.getContentPane();
		JPanel panel1=new JPanel();
		panel1.add(new JLabel("保存文件名:"));panel1.add(textField);
		JPanel panel2=new JPanel();
		panel2.add(openButton);
		panel2.add(saveButton);
		panel2.add(saveAsButton);
		contentPane.add(panel1,BorderLayout.NORTH);
		contentPane.add(new JScrollPane(textArea),BorderLayout.CENTER);
		contentPane.add(panel2,BorderLayout.SOUTH);
		//"打开文件"按钮注册动作事件监听器
		openButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				fileChooser=new JFileChooser();
				fileChooser.setMultiSelectionEnabled(true);//允许文件多选
				int select=fileChooser.showOpenDialog(frame);//显示打开文件对话框
				if(select==JFileChooser.APPROVE_OPTION) {
					File[] files=fileChooser.getSelectedFiles();//获取被选择的所有文件
					for(File file:files) {
						//将所选择的文件信息添加到文本区中
						textArea.append("打开文件:"+file.getAbsolutePath()+"\n");
					}
				}
			}
		});
		//"保存文件"按钮注册动作事件监听
		saveButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				fileChooser=new JFileChooser();	
				//设置被选择的文件
				fileChooser.setSelectedFile(new File(textField.getText()));
				int select=fileChooser.showSaveDialog(frame);
				if(select==JFileChooser.APPROVE_OPTION) {
					File file=fileChooser.getSelectedFile();//获取被选择的文件
					File directory=fileChooser.getCurrentDirectory();//获取当前目录
					String fileName=file.getName();
					String directoryName=directory.getAbsolutePath();
					textArea.append("保存文件:"+directoryName+"\\"+fileName+"\n");
				}
			}
		});
		//"另存为"按钮注册动作事件监听器
		saveAsButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				fileChooser=new JFileChooser();
				//设置默认可选文件类型
				FileNameExtensionFilter filter = new FileNameExtensionFilter(
						"files(*.doc,*.docx,*.txt)", "doc", "docx","txt");
				fileChooser.setFileFilter(filter);
				//设置被选择的文件
				fileChooser.setSelectedFile(new File(textField.getText()));
				int select=fileChooser.showDialog(frame,"另存为");
				if(select==JFileChooser.APPROVE_OPTION) {
					File file=fileChooser.getSelectedFile();//获取被选择的文件
					File directory=fileChooser.getCurrentDirectory();//获取当前目录
					String fileName=file.getName();
					String directoryName=directory.getAbsolutePath();
					textArea.append("文件另存在:"+directoryName+"\\"+fileName+"\n");
				}
			}
		});
		this.setVisible(true);
	}
	public static void main(String[] args) {
		JFileChooserDemo frame=new JFileChooserDemo();
	}
}

       执行上述程序,运行结果如图1(a)所示。当用户点击打开文件按钮后,则会弹出如图1(b)所示的打开文件对话框,用户在该对话框中可以选择多个文件,点击打开按钮后,这些文件的绝对路径被添加到本文区中,如图1(c)所示。当用户在窗口上方的文本框中输入被保存的文件名,点击保存文件按钮后,则会弹出如图1(d)所示的保存文件对话框,点击另存为按钮后,则会弹出如图1(e)所示的自定义文件对话框,用户在对话框中点击打开/另存为按钮后,被保存文件的绝对路径添加到文本区中,如图1(f)所示。

(a)

(b)

(c)

(d)

(e)

(f)

图1. 文件对话框示例

标签:文件,Java,File,对话框,fileChooser,Swing,new,JFileChooser
From: https://blog.csdn.net/hitmengfanchao/article/details/137115617

相关文章

  • JavaScript快速入门笔记之七(String:字符串类型、RegExp:正则表达式)
    JavaScript快速入门笔记之七(String:字符串类型、RegExp:正则表达式)String:字符串类型什么是字符串?底层本质:一串字符组成的只读字符数组包装类型:临时封装原始类型数据,并提供对数据操作方法的对象——类型名和原始类型名相同!StringNumberBoolean何时使用:不必手动创建!......
  • Java Swing组件:表格
           表格(JTable)是将数据以二维的形式展示给用户,它包括行和列,每一行表示一个对象,例如一个学生,每一列表示对象的一种属性,例如学生的学号、姓名等。表格组件是采用MVC(ModelViewController)模式进行设计,按照MVC的设计理念,JTable类属于视图,对应的数据模型是TableModel接......
  • Java企业电子招投标系统源代码,支持二次开发,采用Spring cloud框架
    在数字化采购领域,企业需要一个高效、透明和规范的管理系统。通过采用SpringCloud、SpringBoot2、Mybatis等先进技术,我们打造了全过程数字化采购管理平台。该平台具备内外协同的能力,通过待办消息、招标公告、中标公告和信息发布等功能模块,实现了对供应商的集中管理和风险控制......
  • JAVA版鸿鹄云商B2B2C:解析多商家入驻直播带货商城系统的实现与应用
     一、技术选型java开发语言:java是一种跨平台的编程语言,适用于大型企业级应用开发。使用java开发直播商城可以保证系统的稳定性和可扩展性。springboot框架:springboot是一个快速构建spring应用的框架,简化了开发过程,减少了配置文件,提供了强大的自动化配置功能。使用springb......
  • 如何在Java中读取超过内存大小的文件
    读取文件内容,然后进行处理,在Java中我们通常利用Files类中的方法,将可以文件内容加载到内存,并流顺利地进行处理。但是,在一些场景下,我们需要处理的文件可能比我们机器所拥有的内存要大。此时,我们则需要采用另一种策略:部分读取它,并具有其他结构来仅编译所需的数据。接下来,我们就来......
  • 【附源码】JAVA计算机毕业设计在线考研刷题系统(springboot+mysql+开题+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着信息技术的飞速发展,计算机在教育领域的应用日益广泛。特别是在线教育平台,以其便捷性、灵活性和资源共享性受到了广大师生的青睐。近年来,考研热潮......
  • 【附源码】JAVA计算机毕业设计在线考试系统的设计与实现(springboot+mysql+开题+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着信息技术的迅猛发展和互联网的普及,传统的教育模式正面临着深刻的变革。在线考试系统作为教育信息化进程中的重要一环,正逐渐取代传统的纸质考试方......
  • JAVA学习-网络编程.使用代理服务器
           代理服务器在网络编程中扮演着重要的角色,它可以作为中间层来处理网络请求和响应,提供更高级的功能。Java网络编程提供了多种方式来使用代理服务器,包括使用'Proxy'类和使用'ProxySelector'类。下面是关于使用代理服务器的概述以及与其他比较和高级应用的说明:1.......
  • 【附源码】JAVA计算机毕业设计在线考试答题系统(springboot+mysql+开题+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着互联网技术的迅猛发展,教育信息化已成为现代教育发展的重要趋势。在线考试答题系统作为教育信息化的重要组成部分,能够打破传统考试的时间和空间限......
  • 【附源码】JAVA计算机毕业设计在线考试(springboot+mysql+开题+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着互联网技术的飞速发展,传统的教育模式正在经历深刻的变革。在线教育以其灵活、便捷的特性受到了广大师生的青睐。在线考试作为在线教育的重要组成......