为JFileChooser设定扩展名过滤
来源:互联网 发布:windows api pdf 编辑:程序博客网 时间:2024/06/05 10:21
--------------------siwuxie095
工程名:TestFileChooser
包名:com.siwuxie095.filechooser
类名:TestExtension.java
工程结构目录如下:
代码:
package com.siwuxie095.filechooser;
import java.awt.EventQueue;
import java.awt.FlowLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.File;
import java.io.IOException;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.border.EmptyBorder;
import javax.swing.filechooser.FileFilter;
import javax.swing.filechooser.FileNameExtensionFilter;
import com.sun.java.swing.plaf.windows.WindowsLookAndFeel;
/**
* JFileChooser是 Java Swing框架中的文件选择器,
*在应用程序中经常会遇到打开文件和保存文件等操作,
*文件选择器 JFileChooser是专门应对这种情况而出现的
*
* @author siwux
*
*/
public class TestExtensionextends JFrame {
private JPanel contentPane;
//声明一个 JFileChooser 对象
JFileChooser chooser;
/**
* Launch the application.
*/
public staticvoid main(String[] args) {
EventQueue.invokeLater(new Runnable() {
publicvoid run() {
try {
TestExtension frame =new TestExtension();
frame.setVisible(true);
}catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public TestExtension() {
try {
UIManager.setLookAndFeel(new WindowsLookAndFeel());
}catch (UnsupportedLookAndFeelException e1) {
e1.printStackTrace();
}
//将 chooser 实例化
chooser=new JFileChooser();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100,100, 450,300);
contentPane =new JPanel();
contentPane.setBorder(new EmptyBorder(5,5, 5,5));
setContentPane(contentPane);
contentPane.setLayout(new FlowLayout(FlowLayout.CENTER,5, 5));
JButton btnOpen =new JButton("Open");
btnOpen.addMouseListener(new MouseAdapter() {
@Override
publicvoid mouseClicked(MouseEvent e) {
//在弹出对话框之前,创建文件类型的过滤器
FileNameExtensionFilter filter=
new FileNameExtensionFilter("仅能打开 *.txt *.jar", "txt","jar");
//为chooser应用该filter
chooser.setFileFilter(filter);
//设定当前可选择的文件类型,设定为能选择文件和文件夹
//如果没有设定,默认为 FILES_ONLY,即只能选择文件
chooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
//将chooser设定为可多选
//如果没有设定,默认为 false,即只能单选
chooser.setMultiSelectionEnabled(true);
/**
*弹出一个打开文件的对话框 showOpenDialog()
*需要指定一个父级窗体,或指定为 null
*返回值是 int类型,创建以接收返回值
*/
int value=chooser.showOpenDialog(TestExtension.this);
//如果返回 APPROVE_OPTION,说明有文件被成功返回,即成功打开文件
//也可以使用对象调用,即 chooser.APPROVE_OPTION
if (value==JFileChooser.APPROVE_OPTION) {
File file[]=chooser.getSelectedFiles();
for (int i =0; i < file.length; i++) {
System.out.println(file[i].getAbsolutePath());
}
}
}
});
btnOpen.setFocusable(false);
contentPane.add(btnOpen);
JButton btnSave =new JButton("Save");
btnSave.addMouseListener(new MouseAdapter() {
@Override
publicvoid mouseClicked(MouseEvent e) {
//在弹出对话框之前,创建文件类型的过滤器
FileNameExtensionFilter filter1,filter2;
//前面是描述,后面是扩展名
filter1=new FileNameExtensionFilter(".avi","avi");
filter2=new FileNameExtensionFilter(".png","png");
//为chooser应用filter
chooser.setFileFilter(filter1);
chooser.setFileFilter(filter2);
int valuex=chooser.showSaveDialog(TestExtension.this);
/**
*如果返回 APPROVE_OPTION,说明有文件被成功返回,即成功保存文件
*这里实际上是将一个不存在的文件包装成了一个假设存在的文件,然后将之返回
*但该文件并没有真实的被创建,仅仅是创建了一个文件对象,并可设定路径
*需要使用 createNewFile()创建文件
*/
if (valuex==chooser.APPROVE_OPTION) {
try {
FileFilter filterx=chooser.getFileFilter();
//获取扩展名的描述,当做扩展名加给文件
String ext=filterx.getDescription();
File filex=chooser.getSelectedFile();
File newFile=null;
//如果没有扩展名就自动加上,如果有就不加
if (filex.getAbsolutePath().toUpperCase().endsWith(ext.toUpperCase())) {
newFile=filex;
}else {
newFile=new File(filex.getAbsolutePath()+ext);
}
if (!newFile.exists()) {
newFile.createNewFile();
System.out.println(newFile.getAbsolutePath());
}
}catch (IOException e1) {
e1.printStackTrace();
}
}
}
});
btnSave.setFocusable(false);
contentPane.add(btnSave);
}
}
将窗体JFrame 的 LookAndFeel 设定为 Windows
将根面板contentPane 的布局改为 Flow Layout,在其中添加两个 JButton
将两个JButton 的 focusable 属性设为false,并将其文本(text)分别改为:
Open 和 Save,再分别 Rename 为:btnOpen 和 btnSave
为两个 JButton 添加 mouseClicked 事件,点击 按钮 弹出对话框
运行程序:
【made by siwuxie095】
- 为JFileChooser设定扩展名过滤
- JFileChooser文件过滤
- java JFileChooser 文件过滤
- JFileChooser 文件类别 过滤
- JFileChooser文件过滤的实现
- JFileChooser文件过滤的实现
- JFileChooser文件过滤的实现
- 扩展名文件过滤
- JFileChooser
- JFileChooser
- JFileChooser
- 过滤上传文件的扩展名
- 为JFileChooser添加选择文件验证功能
- 为生活设定目标
- 为textarea设定长度
- 为组件设定UI
- 为 JFileChooser 添加选择文件有效验证功能
- 用CMfcShellTree和CMFCShellListCtrl实现资源管理器并过滤扩展名
- 面试-一道经典的sql语句题
- android自定义View&自定义ViewGroup(下)
- cooseek使用总结
- LeetCode 485. Max Consecutive Ones
- The C++ Programming Language 读书笔记(三)
- 为JFileChooser设定扩展名过滤
- Java ---自定义标签
- thymeleaf模板整合shiro标签
- 新手第一步
- 儿童信仰问答 翻译:煦译自: First Catechism--Biblical Truth for God's Children --Published by Great Commission Pu
- java IO 系统
- hud题目分类
- MFC 控件背景色
- 深度学习 13. 能力提升, 一步一步的介绍如何自己构建网络和训练,利用MatConvNet(二),思路整理