迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Java >

Java 中的 JFileChooser 示例

作者:迹忆客 最近更新:2023/09/17 浏览次数:

JFileChooser 为我们提供了一个窗口或提示,我们可以使用它来选择文件或文件夹。它是 Swing 包的一部分。

我们将在以下部分中看到 JFileChooser 的三个示例。


使用 JFileChooser 打开文件并在 Java 输出中显示其名称和路径

在第一个示例中,我们创建了一个 JFileChooser 类对象。如果我们想在文件选择器提示打开时打开特定目录,我们可以将路径传递给 JFileChooser 的构造函数。

现在我们调用 showOpenDialog() 函数,该函数接受一个参数,该参数是文件选择器的 GUI 的父级;我们在其中传递 null,因为我们只想要提示。

根据用户输入,对 showOpenDialog() 的调用会返回一个附加到静态字段的 int

如果用户在对话框 showOpenDialog() 上单击确定,它会返回一个表示字段 APPROVE_OPTIONint,当它返回时,我们会在一个条件中检查它。

在条件语句中,我们使用 getSelectedFile() 函数获取我们从提示中选择的文件,该函数为我们提供 File 对象。现在我们可以获取文件的名称和路径。

import javax.swing.*;
import java.io.File;

public class JavaExample {

    public static void main(String[] args) {

        JFileChooser jFileChooser = new JFileChooser();

        int checkInput = jFileChooser.showOpenDialog(null);

        if (checkInput == JFileChooser.APPROVE_OPTION) {
            File openedFile = jFileChooser.getSelectedFile();

            System.out.println("File Name: " + openedFile.getName());
            System.out.println("File Location: " + openedFile.getAbsolutePath());
        }


    }

}

输出:

File Name: New Text Document.txt
File Location: C:\Users\User\Documents\New Text Document.txt

在 Java 中使用 JFileChooser 打开图像并将其显示的 JFrame 组件中

我们可以使用 JFileChooser 类选择和打开不同的文件,但我们必须手动处理这些文件。

在示例中,我们使用 JFileChooser 提示符选择并打开一个图像,然后在 JFrame 组件中显示该图像。

我们创建了一个 JFrame 和两个组件:JButtonJLabel。我们通过创建匿名类并覆盖 actionPerformed() 函数将 ActionListener 附加到 JButton

actionPerformed() 方法中,我们创建了 JFileChooser 类的对象。

对于此示例,我们只想选择图像并将文件选择器提示限制为仅选择图像文件,为此,我们需要创建一个过滤器。

首先,我们将 setAcceptAllFileFilterUsed() 设置为 false 以禁用选择所有文件的提示,然后我们创建 FileNameExtensionFilter 的对象。

FileNameExtensionFilter 的构造函数中,我们传递了两个参数:提示中显示的描述和要使用的扩展名,并不是说我们可以传递多个扩展名,因为第二个参数是一个变量。

接下来,我们调用 addChoosableFileFilter() 函数并将 FileNameExtensionFilter 对象作为其参数传递。

与前面的示例一样,我们调用 showOpenDialog() 函数,然后检查它是否返回表示字段 APPROVE_OPTION 的值。如果是这样,我们将执行条件的真正块。

我们调用 getSelectedFile() 方法并将其存储为 File 类引用以获取所选文件。

我们需要使用 ImageIO 类通过调用 read() 方法并传递 openedFile 的绝对路径来读取选定的图像文件。

ImageIO.read() 函数返回一个 Image 对象,我们将其用作 JLabel 组件的 setIcon() 方法的参数,它将图像设置为标签的图标。

我们将组件添加到 JFrame 并将其可见性设置为 true,

import javax.imageio.ImageIO;
import javax.swing.*;
import javax.swing.filechooser.FileNameExtensionFilter;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.IOException;

public class JavaExample {

    public static void main(String[] args) {

        JFrame jFrame = new JFrame("JFileChooser Example");

        JButton jButton = new JButton("Open an Image");
        jButton.setBounds(200, 20, 100, 30);

        JLabel jLabel = new JLabel("");
        jLabel.setBounds(10, 60, 400, 400);

        ImageIcon imageIcon = new ImageIcon();

        jButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                JFileChooser jFileChooser = new JFileChooser();
                jFileChooser.setAcceptAllFileFilterUsed(false);
                FileNameExtensionFilter fileNameExtensionFilter = new FileNameExtensionFilter("Image file", "jpg", "jpeg", "PNG");
                jFileChooser.addChoosableFileFilter(fileNameExtensionFilter);

                int checkInput = jFileChooser.showOpenDialog(null);

                if (checkInput == JFileChooser.APPROVE_OPTION) {
                    File openedFile = jFileChooser.getSelectedFile();

                    try {
                        Image image = ImageIO.read(openedFile.getAbsoluteFile());
                        imageIcon.setImage(image);
                        jLabel.setIcon(imageIcon);

                    } catch (IOException ioException) {
                        ioException.printStackTrace();
                    }

                }

            }
        });

        jFrame.add(jButton);
        jFrame.add(jLabel);

        jFrame.setSize(500, 500);
        jFrame.setLayout(null);
        jFrame.setVisible(true);

    }

}

输出:

带有 JButtonJFrame 窗口:

jfilechooser1

JFileChooser 提示:

jfilechooser2

带有 JButton 和所选图像的 JFrame 窗口:

jfilechooser3


在 Java 中使用 JFileChooser 打开文本文件并的 JFrame 组件中显示它

在本例中,我们打开一个文本文件。代替 JLabel 组件,我们使用 JtextArea 组件来显示所选文本文件中的文本。

actionPerformed() 方法中,我们创建 JFileChooser 对象并使用扩展名 txt 为文本文件设置过滤器。我们使用 getSelectedFile() 函数获取选定的文件。

为了从文件中读取文本,我们首先使用在 BufferedReader 的构造函数中传递的 FileReader,它返回一个 BufferedReader 对象。

我们使用带有此对象的 readLine() 方法获取每一行。我们创建一个字符串变量 string1 和一个 StringBuilder 对象 string2

我们使用 readLine() 方法并将每一行存储在 string1 中并检查该行是否为空;如果该行为空,则表示该行中没有内容。

我们在每一行添加 string2,并在循环中的每次添加后添加一个换行符。

现在我们将 string2 设置为 JTextArea 的文本并使用 close() 方法关闭 BufferedReader

import javax.swing.*;
import javax.swing.filechooser.FileNameExtensionFilter;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;

public class JavaExample {

    public static void main(String[] args) {

        JFrame jFrame = new JFrame("JFileChooser Example");

        JButton jButton = new JButton("Open a text file");
        jButton.setBounds(180, 20, 150, 30);

        JTextArea jTextArea = new JTextArea("");
        jTextArea.setBounds(10, 60, 480, 400);


        jButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                JFileChooser jFileChooser = new JFileChooser();
                jFileChooser.setAcceptAllFileFilterUsed(false);
                FileNameExtensionFilter fileNameExtensionFilter = new FileNameExtensionFilter("Text File", "txt");
                jFileChooser.addChoosableFileFilter(fileNameExtensionFilter);

                int checkInput = jFileChooser.showOpenDialog(null);

                if (checkInput == JFileChooser.APPROVE_OPTION) {
                    File openedFile = jFileChooser.getSelectedFile();

                    try {
                        FileReader fileReader = new FileReader(openedFile);
                        BufferedReader bufferedReader = new BufferedReader(fileReader);

                        String string1 = "";
                        StringBuilder string2 = new StringBuilder();

                        while ((string1 = bufferedReader.readLine()) != null) {
                            string2.append(string1).append("\n");
                        }

                        jTextArea.setText(string2.toString());
                        bufferedReader.close();


                    } catch (IOException fileNotFoundException) {
                        fileNotFoundException.printStackTrace();
                    }

                }

            }
        });

        jFrame.add(jButton);
        jFrame.add(jTextArea);

        jFrame.setSize(500, 500);
        jFrame.setLayout(null);
        jFrame.setVisible(true);

    }

}

输出:

带有 JButtonJFrame 窗口:

jfilechooser4

JFileChooser 提示:

jfilechooser5

带有 JButtonJTextAreaJFrame 窗口:

jfilechooser6

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

如何在 Java 中延迟几秒钟的时间

发布时间:2023/12/17 浏览次数:217 分类:Java

本篇文章主要介绍如何在 Java 中制造程序延迟。本教程介绍了如何在 Java 中制造程序延时,并列举了一些示例代码来了解它。

如何在 Java 中把 Hashmap 转换为 JSON 对象

发布时间:2023/12/17 浏览次数:187 分类:Java

它描述了允许我们将哈希图转换为简单的 JSON 对象的方法。本文介绍了在 Java 中把 Hashmap 转换为 JSON 对象的方法。我们将看到关于创建一个 hashmap,然后将其转换为 JSON 对象的详细例子。

如何在 Java 中按值排序 Map

发布时间:2023/12/17 浏览次数:171 分类:Java

本文介绍了如何在 Java 中按值对 Map 进行排序。本教程介绍了如何在 Java 中按值对 Map 进行排序,并列出了一些示例代码来理解它。

如何在 Java 中打印 HashMap

发布时间:2023/12/17 浏览次数:192 分类:Java

本帖介绍了如何在 Java 中打印 HashMap。本教程介绍了如何在 Java 中打印 HashMap 元素,还列举了一些示例代码来理解这个主题。

在 Java 中更新 Hashmap 的值

发布时间:2023/12/17 浏览次数:146 分类:Java

本文介绍了如何在 Java 中更新 HashMap 中的一个值。本文介绍了如何在 Java 中使用 HashMap 类中包含的两个方法-put() 和 replace() 更新 HashMap 中的值。

Java 中的 hashmap 和 map 之间的区别

发布时间:2023/12/17 浏览次数:79 分类:Java

本文介绍了 Java 中的 hashmap 和 map 接口之间的区别。本教程介绍了 Java 中 Map 和 HashMap 之间的主要区别。在 Java 中,Map 是用于以键值对存储数据的接口,

在 Java 中获取用户主目录

发布时间:2023/12/17 浏览次数:218 分类:Java

这篇文章向你展示了如何在 Java 中获取用户主目录。本教程介绍了如何在 Java 中获取用户主目录,并列出了一些示例代码以指导你完成该主题。

Java 中 size 和 length 的区别

发布时间:2023/12/17 浏览次数:179 分类:Java

这篇文章教你如何知道 Java 中大小和长度之间的区别。本教程介绍了 Java 中大小和长度之间的区别。我们还列出了一些示例代码以帮助你理解该主题。

Java 中的互斥锁

发布时间:2023/12/17 浏览次数:111 分类:Java

了解有关 Java 中互斥锁的一切,在计算机科学领域,互斥或互斥被称为并发控制的属性。每台计算机都使用称为线程的最小程序指令序列。有一次,计算机在一个线程上工作。为了更好地理解,

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便