Java 中的 JFileChooser 示例
-
使用
JFileChooser
打开文件并在 Java 输出中显示其名称和路径 -
在 Java 中使用
JFileChooser
打开图像并将其显示的JFrame
组件中 -
在 Java 中使用
JFileChooser
打开文本文件并的JFrame
组件中显示它
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
窗口:
Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
LinkedIn相关文章 - Java Swing
- Java 清除文本字段
- 使用 Java Swing 创建画布
- Java Swing 日期
- 在 Java Swing 中更改 JLabel 文本
- 在 Swing 中将 JLabel 居中
- 在 Java 中使用 setFont