迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > 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

上一篇:JavaFX 与 Swing

下一篇:没有了

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

本文地址:

相关文章

JavaFX 与 Swing

发布时间:2023/09/22 浏览次数:164 分类:Java

本文介绍了 JavaFX 和 Swing 之间的区别。JavaFX 是一个 Web 平台,可帮助开发人员为 Web、移动和桌面应用程序开发现代用户界面。

JavaFX 文本旋转

发布时间:2023/09/21 浏览次数:97 分类:Java

本介绍了如何在 JavaFX 中旋转文本。可以使用 JavaFX.scene.text.Text 类创建文本节点,并在 JavaFX 中使用 setRotate() 来旋转文本。本文介绍了如何在 JavaFX 中旋转文本。

JavaFX 区域与窗格

发布时间:2023/09/21 浏览次数:94 分类:Java

本文介绍了 JavaFX 中区域和窗格之间的区别。Region 和 Pane 用于将可调整大小的子节点调整到它们的首选大小,而不是重新定位它们。本文介绍了 JavaFX 中 Region 和 Pane 之间的区别。

JavaFX 媒体播放器

发布时间:2023/09/21 浏览次数:115 分类:Java

本文演示了 JavaFX 媒体播放器的正确使用,使用 JavaFX 播放媒体文件。在本文中,我们将学习如何使用 JavaFX 在 Java 中制作媒体播放器。为此,我们将使用内置的 JavaFX 并手动进行设置。

JavaFX 方形按钮

发布时间:2023/09/21 浏览次数:126 分类:Java

本文介绍如何在 JavaFX 中创建方形按钮。可以通过扩展 Java 中的 ToolBar 类来创建方形按钮。本文介绍了如何在 JavaFX 中创建方形按钮。

JavaFX setFill() 方法

发布时间:2023/09/21 浏览次数:187 分类:Java

本教程演示了如何在 JavaFX 中使用 setFill() 方法。setFill() 方法用于在 JavaFX 中填充形状和其他元素的颜色。本教程演示了在 JavaFX 中使用 setFill() 方法。

JavaFX FXML 加载异常的解决方法

发布时间:2023/09/21 浏览次数:192 分类:Java

本文展示了如何解决 JavaFX FXML 加载异常。这也突出了导致此异常的原因。本文介绍导致 JavaFX FXML 加载异常的原因并提供快速解决方案。导致 JavaFX FXML 加载异常的原因 获得 JavaFX FXML 加载异常的

Java 将文本复制到剪贴板

发布时间:2023/09/21 浏览次数:96 分类:Java

本文讨论将文本从 Java 应用程序复制到剪贴板的方法。本文讨论将文本从 Java 应用程序复制到剪贴板。Java 提供了几个元素来显示 Java 应用程序中的文本。

在 Java 中捕获多个异常

发布时间:2023/09/21 浏览次数:167 分类:Java

本教程介绍了可以在 Java 中捕获多个异常的方法。今天我们将看看我们可以在 Java 中使用和捕获多个异常的方法。Java 中的异常发生在运行时发生不需要的事件时。

扫一扫阅读全部技术教程

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

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便