• 使用JFileChooser打开文件


    -----------------siwuxie095

       

       

       

       

       

       

       

       

    工程名:TestFileChooser

    包名:com.siwuxie095.filechooser

    类名:TestOpen.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 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 com.sun.java.swing.plaf.windows.WindowsLookAndFeel;

       

    /**

    * JFileChooser Java Swing 框架中的文件选择器,

    * 在应用程序中经常会遇到打开文件和保存文件等操作,

    * 文件选择器 JFileChooser 是专门应对这种情况而出现的

    *

    * @author siwux

    *

    */

       

    public class TestOpen extends JFrame {

       

    private JPanel contentPane;

     

    //声明一个 JFileChooser 对象

    private JFileChooser chooser;

       

    /**

    * Launch the application.

    */

    public static void main(String[] args) {

    EventQueue.invokeLater(new Runnable() {

    public void run() {

    try {

    TestOpen frame = new TestOpen();

    frame.setVisible(true);

    } catch (Exception e) {

    e.printStackTrace();

    }

    }

    });

    }

       

    /**

    * Create the frame.

    */

    public TestOpen() {

     

    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 btnOpenFile = new JButton("Open File");

    btnOpenFile.setFocusable(false);

    btnOpenFile.addMouseListener(new MouseAdapter() {

    @Override

    public void mouseClicked(MouseEvent e) {

    /**

    * 弹出一个打开文件的对话框 showOpenDialog()

    * 需要指定一个 父级窗体,或指定为 null

    * 返回值是 int 类型,创建以接收返回值

    */

    int value=chooser.showOpenDialog(TestOpen.this);

     

    chooser.setMultiSelectionEnabled(true);

     

    //如果返回 APPROVE_OPTION,说明有文件被成功返回,即 成功打开文件

    //也可以使用类调用,即 JFileChooser.APPROVE_OPTION

    if (value==chooser.APPROVE_OPTION) {

    // //创建一个文件对象,接收返回值

    // //getSelectedFile()只能返回选中文件中的第一个文件

    // File file=chooser.getSelectedFile();

    // System.out.println(file.getAbsolutePath());

     

     

    //getSelectedFiles() 返回所有选中的文件

    File filex[]=chooser.getSelectedFiles();

    for (int i = 0; i < filex.length; i++) {

    System.out.println(filex[i].getAbsolutePath());

    }

    }

    }

    });

    contentPane.add(btnOpenFile);

     

    JButton btnOpenDir = new JButton("Open Dir");

    btnOpenDir.setFocusable(false);

    btnOpenDir.addMouseListener(new MouseAdapter() {

    @Override

    public void mouseClicked(MouseEvent e) {

    //设定当前可选择的文件类型,设定为 DIRECTORIES_ONLY,即只能选择文件夹

    //如果没有设定,默认为 FILES_ONLY,即只能选择文件

    chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);

     

    //chooser 设定为 可多选

    //如果没有设定,默认为 false,即只能单选

    chooser.setMultiSelectionEnabled(true);

     

    int value=chooser.showOpenDialog(TestOpen.this);

     

    if (value==chooser.APPROVE_OPTION) {

    // //创建一个文件对象,接收返回值

    // //getSelectedFile()只能返回选中文件夹中的第一个文件夹

    // File dir=chooser.getSelectedFile();

    // System.out.println(dir.getAbsolutePath());

     

     

    //getSelectedFiles() 返回所有选中的文件夹

    File dirx[]=chooser.getSelectedFiles();

    for (int i = 0; i < dirx.length; i++) {

    System.out.println(dirx[i].getAbsolutePath());

    }

    }

    }

    });

    contentPane.add(btnOpenDir);

    }

       

    }

       

       

       

    将窗体 JFrame 的 LookAndFeel 设定为 Windows

       

       

    将根面板 contentPane 的布局改为 Flow Layout,在其中添加两个 JButton

       

       

    将两个 JButton 的 focusable 属性设为 false,并将其文本(text)分别改为:

    Open File 和 Open Dir,再分别 Rename 为:btnOpenFile 和 btnOpenDir

       

       

    为两个 JButton 添加 mouseClicked 事件,点击 按钮 弹出对话框

       

       

       

    运行程序:

       

       

       

       

       

       

       

       

       

       

    【made by siwuxie095】

  • 相关阅读:
    Xcode And iOS9新特性
    AutoLayout
    本地化
    Map
    iOS多线程编程
    第三方抽屉效果
    iPad编程
    CoreData / MagicalRecord
    js清除单选框所选的值
    js获取背景颜色
  • 原文地址:https://www.cnblogs.com/siwuxie095/p/6677696.html
Copyright © 2020-2023  润新知