最新消息:历时半年,永住昨天下来了

Java文件选择框的使用

在Java中,有时间要使用文件选择框,之前不知道怎么用。调查了一下,其实不难。用JFileChooser可以很容易实现。在JFileChooser中,用setFileSelectionMode函数来设置选择文件还是选择文件夹;用addChoosableFileFilter来添加过滤器。

为了以后方便看,把测试代码也贴上来。

Java
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;

import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.filechooser.FileFilter;

public class TestFrame extends JFrame {
    private static final long serialVersionUID = 4773624068904490097L;

    private JTextField txtResult;
    private JButton btnFolderSelect;
    private JButton btnFileSelect;

    public TestFrame() {
        // 设置画面显示大小
        setSize(300, 200);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        // 选择结果显示
        txtResult = new JTextField();
        getContentPane().add(txtResult, BorderLayout.NORTH);
        // 文件夹选择按键
        btnFolderSelect = new JButton("Folder Select");
        getContentPane().add(btnFolderSelect, BorderLayout.CENTER);
        // 文件选择按键
        btnFileSelect = new JButton("File Select");
        getContentPane().add(btnFileSelect, BorderLayout.SOUTH);
        // 文件夹选择操作
        btnFolderSelect.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                txtResult.setText(selectFileOrFolder(false, txtResult.getText()));
            }
        });
        // 文件选择操作
        btnFileSelect.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                txtResult.setText(selectFileOrFolder(true, txtResult.getText()));
            }
        });
    }

    /**
     * 文件选择
     * @param isSelectFile true:文件选择 false:目录选择
     * @param defaultPath 默认目录
     * @return 选择的文件或目录路径
     */
    private String selectFileOrFolder(boolean isSelectFile, String defaultPath) {
        JFileChooser dc = new JFileChooser();
        dc.setFileSelectionMode(isSelectFile ? JFileChooser.FILES_ONLY : JFileChooser.DIRECTORIES_ONLY);
        if (isSelectFile) {
            // 文件选择、添加一个文本的文件的选择项。根据需要可以自己添加
            dc.addChoosableFileFilter(new FileFilter() {
                @Override
                public String getDescription() {
                    return "*.txt | 文本文件";
                }
                @Override
                public boolean accept(File f) {
                    return f.getPath().toLowerCase().endsWith(".txt");
                }
            });
        }
        dc.setCurrentDirectory(new File(defaultPath));
        int n = dc.showOpenDialog(this.getContentPane());
        if (n == JFileChooser.APPROVE_OPTION) {
            return dc.getSelectedFile().getPath();
        }
        return "";
    }

    public static void main(String[] argv) {
        TestFrame frame = new TestFrame();
        frame.setVisible(true);
    }
}

转载请注明:宇托的狗窝 » Java文件选择框的使用

发表我的评论
取消评论

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址