swing的JFileChooser组件
JFileChooser的功能与AWT中的FileDialog基本相似,也是用于生成"打开文件"、"保存文件 "对话框。与FileDialog不同的是,JFileChooser无须依赖于本地平台的GUI,它由100%纯Java实现,在所有平台上具有完全相同的行为,并可以在所有平台上具有相同的外观风格
JFileChooser使用步骤如下
1、创建JFileChooser对象: JFileChooser chooser = new JFileChooser("D:\huanf2");//指定默认打开的本地磁盘路径
2、调用JFileChooser的一系列可选方法,进行初始化 (1)setSelectedFile(File file)/setSelectedFiles(File[] selectedFiles):作用是设定默认选中的文件 (2)setMultiSelectionEnabled(boolean b):作用是设置是否允许多选,默认是单选 (3)setFileSelectionMode(int mode):作用是设置可以选择内容,例如文件、文件夹等,默认只能选择文件
3、打开文件对话框 (1)showOpenDialog(Component parent):打开文件加载对话框,并指定父组件 (2)showSaveDialog(Component parent):打开文件保存对话框,并指定父组件
4、获取用户选择的结果 (1)File getSelectedFile():获取用户选择的一个文件 (2)File[] getSelectedFiles():获取用户选择的多个文件
swing的JFileChooser组件_练习
x
package ch30;
import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
public class a_9_0swing_基本组件_JFileChooser {
//创建窗口对象
JFrame jf = new JFrame("测试JFileChooser");
//创建最上方的菜单条
JMenuBar jmb = new JMenuBar();
//创建最左上角的菜单
JMenu jMenu = new JMenu("文件");
//当右键"文件"时,就会弹出这个菜单项
JMenuItem open = new JMenuItem(new AbstractAction("打开"){
public void actionPerformed(ActionEvent e) {//点击事件
//显示一个文件选择器
JFileChooser fileChooser = new JFileChooser(".");//直接写小数点的话打开的路径就是当前路径,即此项目的路径D:\\huanf2
//打开文件对话框,并指定父组件
fileChooser.showOpenDialog(jf);//用户没选择文件时,代码就会一直阻塞在这里
//获取用户选择的文件
File file = fileChooser.getSelectedFile();
try {
image = ImageIO.read(file);//是下面声明的变量
//在画布上重绘图片
drawArea.repaint();//是下面创建的对象
} catch (IOException ex) {
ex.printStackTrace();
}
}
});
//当右键"文件"时,就会弹出这个菜单项
JMenuItem save = new JMenuItem(new AbstractAction("另存为"){
public void actionPerformed(ActionEvent e) {//显示一个文件选择器
//显示一个文件选择器
JFileChooser fileChooser = new JFileChooser(".");//直接写小数点的话打开的路径就是当前路径,即此项目的路径D:\\huanf2
//fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
fileChooser.showSaveDialog(jf);
//获取用户选择的保存文件的路径
File file = fileChooser.getSelectedFile();
try {
//保存文件,第一个参数是下面定义的image变量,第二个参数是图片格式,第三参数是路径
ImageIO.write(image,"jpg",file);
} catch (Exception ex) {
ex.printStackTrace();
}
}
});
//用来记录用户选择的图片
BufferedImage image;
//swing提供的组件,都使用了图像缓冲区技术,即先把图像上的数据绘在内存里面,绘好了之后再把图像一次性绘到组件上
//显示图片,即把用户选择的文件显示在JPanel容器里面
private class MyCanvas extends JPanel{
public void paint(Graphics g) {//需要重写paint方法
//把图片绘制到组件上即可,从(0,0)点开始绘制
g.drawImage(image,0,0,null);
}
}
//创建画布
MyCanvas drawArea = new MyCanvas();
public void init(){
//设置图片的显示区域的大小
drawArea.setPreferredSize(new Dimension(740,500));
//把绘图区域放到窗口的中间区域,不写参数就默认放到中间区域
jf.add(drawArea);
//菜单项放到jMenu里面
jMenu.add(open);
jMenu.add(save);
//把jMenu放到菜单条里面
jmb.add(jMenu);
//把菜单条放到窗口里面
jf.setJMenuBar(jmb);
//设置窗口的最佳大小,设置窗口可见,设置点击叉号就退出程序
jf.pack();
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new a_9_0swing_基本组件_JFileChooser().init();
}
}