首页 > 社交 > 科普中国

JavaGUI

常驻编辑 科普中国 2022-06-24 刻度   对话框   用户界面   组件   布局   按钮   选项   面板   图形   文本   窗口   文件



tIS拜客生活常识网

4.2、复杂组件

文件和颜色选择器

JFileChooser,文件选取器。JFileChooser为用户选择文件提供了一种简单的机制,包括打开文件和保存文件。
构造方法和常用方法如下:tIS拜客生活常识网

方法tIS拜客生活常识网

功能tIS拜客生活常识网

JFileChooser(String currentDirectoryPath)tIS拜客生活常识网

currentDirectoryPath: 打开文件选取器时默认显示的文件夹(默认为用户文件夹)tIS拜客生活常识网

JFileChooser(File currentDirectory)tIS拜客生活常识网

currentDirectory: 打开文件选取器时默认显示的文件夹(默认为用户文件夹)tIS拜客生活常识网

void setCurrentDirectory(File dir)tIS拜客生活常识网

设置默认显示的文件夹tIS拜客生活常识网

void setFileSelectionMode(int mode)tIS拜客生活常识网

设置文件选择模式,FILES_AND_DIRECTORIES: 文件和文件夹都可以选,其他的二选一tIS拜客生活常识网

void setMultiSelectionEnabled(boolean b)tIS拜客生活常识网

设置是否允许同时选择多个(默认为不允许)tIS拜客生活常识网

void addChoosableFileFilter(FileFilter filter)tIS拜客生活常识网

添加可供用户选择的文件过滤器tIS拜客生活常识网

void setFileFilter(FileFilter filter)tIS拜客生活常识网

设置默认使用的文件过滤器tIS拜客生活常识网

void setSelectedFile(File file)tIS拜客生活常识网

设置默认被选中的文件tIS拜客生活常识网

File[] getSelectedFiles()tIS拜客生活常识网

获取选择的文件(一般在用户选择完文件点击了确认或保存后通过该方法获取选中的文件)tIS拜客生活常识网

class FileSelectedUse {
    public FileSelectedUse() {
        JFrame jFrame = new JFrame();
        JPanel jPanel = new JPanel();

        /**
         * 显示 打开文件 或 保存文件 的对话框(线程将被阻塞, 直到选择框被关闭):showOpenDialog(Component parent), showSaveDialog(Component parent)
         *     参数:
         *         parent: 文件选取器对话框的父组件, 对话框将会尽量显示在靠近 parent 的中心; 如果传 null, 则显示在屏幕中心。
         *     返回值:
         *         JFileChooser.CANCEL_OPTION: 点击了取消或关闭
         *         JFileChooser.APPROVE_OPTION: 点击了确认或保存
         *         JFileChooser.ERROR_OPTION: 出现错误
         */
        final JTextArea jTextArea = new JTextArea(10, 30);
        jTextArea.setLineWrap(true);
        jPanel.add(jTextArea);

        JButton openBtn = new JButton("打开");
        openBtn.addActionListener(e -> showFileOpenDialog(jFrame, jTextArea));
        jPanel.add(openBtn);

        JButton saveBtn = new JButton("保存");
        saveBtn.addActionListener(e -> showFileSaveDialog(jFrame, jTextArea));
        jPanel.add(saveBtn);

        jFrame.setContentPane(jPanel);
        // 省略公共代码
    }

    /**
     * 打开文件
     * @param parent 组件
     * @param msgTextArea 文本域
     */
    private static void showFileOpenDialog(Component parent, JTextArea msgTextArea) {
        // 创建一个默认的文件选取器
        JFileChooser fileChooser = new JFileChooser();
        // 设置默认显示的文件夹为当前文件夹
        fileChooser.setCurrentDirectory(new File("."));
        // 设置文件选择的模式(只选文件、只选文件夹、文件和文件均可选)
        fileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
        // 设置是否允许多选
        fileChooser.setMultiSelectionEnabled(true);
        // 添加可用的文件过滤器(FileNameExtensionFilter 的第一个参数是描述, 后面是需要过滤的文件扩展名 可变参数)
        fileChooser.addChoosableFileFilter(new FileNameExtensionFilter("zip(*.zip, *.rar)", "zip", "rar"));
        // 设置默认使用的文件过滤器
        fileChooser.setFileFilter(new FileNameExtensionFilter("image(*.jpg, *.png, *.gif)", "jpg", "png", "gif"));
        // 打开文件选择框(线程将被阻塞, 直到选择框被关闭)
        int result = fileChooser.showOpenDialog(parent);
        if (result == JFileChooser.APPROVE_OPTION) {
            // 如果点击了"确定", 则获取选择的文件路径
            File file = fileChooser.getSelectedFile();
            // 如果允许选择多个文件, 则通过下面方法获取选择的所有文件
            msgTextArea.append("打开文件: " + file.getAbsolutePath() + "

");
        }
    }

    /**
     * 选择文件保存路径
     * @param parent 组件
     * @param msgTextArea 文本域
     */
    private static void showFileSaveDialog(Component parent, JTextArea msgTextArea) {
        // 创建一个默认的文件选取器
        JFileChooser fileChooser = new JFileChooser();
        // 设置打开文件选择框后默认输入的文件名
        fileChooser.setSelectedFile(new File("测试文件.zip"));
        // 打开文件选择框(线程将被阻塞, 直到选择框被关闭)
        int result = fileChooser.showSaveDialog(parent);
        if (result == JFileChooser.APPROVE_OPTION) {
            // 如果点击了"保存", 则获取选择的保存路径
            File file = fileChooser.getSelectedFile();
            msgTextArea.append("保存到文件: " + file.getAbsolutePath() + "

");
        }
    }
}
    

相关阅读:

  • 关于温度的知识
  • 又是一年“618”,生鲜电商静悄悄?
  • matplotlib
  • 家乡异地皆乐趣:浪琴Spirit
  • 崩溃的瞬间
  • 好物分享:适合上班族秋天佩戴的平价手表
  • 裁员在路上,谷歌告别好日子?
  • 欧米茄推出全新
  • 万宝龙1858系列两地时腕表“中国特别款”开箱短评「最
  • 看到这款表是“真的酸”
    • 网站地图 |
    • 声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。文章内容仅供参考,不做权威认证,如若验证其真实性,请咨询相关权威专业人士。