Java 中的 JFileChooser 示例
JFileChooser
为我们提供了一个窗口或提示,我们可以使用它来选择文件或文件夹。它是 Swing 包的一部分。
我们将在以下部分中看到 JFileChooser
的三个示例。
使用 JFileChooser
打开文件并在 Java 输出中显示其名称和路径
在第一个示例中,我们创建了一个 JFileChooser
类对象。如果我们想在文件选择器提示打开时打开特定目录,我们可以将路径传递给 JFileChooser
的构造函数。
现在我们调用 showOpenDialog()
函数,该函数接受一个参数,该参数是文件选择器的 GUI 的父级;我们在其中传递 null
,因为我们只想要提示。
根据用户输入,对 showOpenDialog()
的调用会返回一个附加到静态字段的 int
。
如果用户在对话框 showOpenDialog()
上单击确定,它会返回一个表示字段 APPROVE_OPTION
的 int
,当它返回时,我们会在一个条件中检查它。
在条件语句中,我们使用 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
和两个组件:JButton
和 JLabel
。我们通过创建匿名类并覆盖 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);
}
}
输出:
带有 JButton
的 JFrame
窗口:
JFileChooser
提示:
带有 JButton
和所选图像的 JFrame
窗口:
在 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);
}
}
输出:
带有 JButton
的 JFrame
窗口:
JFileChooser
提示:
带有 JButton
和 JTextArea
的 JFrame
窗口:
相关文章
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 中的异常发生在运行时发生不需要的事件时。