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
窗口:
相关文章
如何在 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 中互斥锁的一切,在计算机科学领域,互斥或互斥被称为并发控制的属性。每台计算机都使用称为线程的最小程序指令序列。有一次,计算机在一个线程上工作。为了更好地理解,