这个代码不是我自己的。来源:java swing–jfilechooser示例
JFileChooser jfc = new JFileChooser(
FileSystemView.getFileSystemView().getHomeDirectory());
请解释一下这行代码。我知道这是方法链,但是 FileSystem
对象是否正确?
所以 JFileChooser
对象正在获取 FileSystemView
以两个链式方法作为参数的对象?
是 getFileSystemView()
方法调用 getHomeDirectory()
方法? FileChooser1
```
package com.mkyong.jfileChooser;
import java.io.File;
import javax.swing.JFileChooser;
import javax.swing.filechooser.FileSystemView;
public class FileChooser1 {
public static void main(String[] args) {
JFileChooser jfc = new JFileChooser(
FileSystemView.getFileSystemView().getHomeDirectory());//<--p
int returnValue = jfc.showOpenDialog(null);
// int returnValue = jfc.showSaveDialog(null);
if (returnValue == JFileChooser.APPROVE_OPTION) {
File selectedFile = jfc.getSelectedFile();
System.out.println(selectedFile.getAbsolutePath());
}
}
}
1条答案
按热度按时间quhf5bfb1#
jfilechooser类定义了多种类型的构造函数(构造函数重载)。其中一个构造函数方法是jfilechooser(file),它以文件对象值作为参数。
在您的代码中,jfilechooser示例是用一个表示homedirectory的文件对象示例作为参数创建的。
filesystemview是一个带有getfilesystemview静态方法的类,用于返回filesystemview的示例(因此称为工厂方法,类似于生产某些产品的工厂)。filesystemview类型对象中有一个名为gethomedirectory()的方法,该方法将返回作为homedirectory抽象的文件对象。总结以下代码行:
您正在使用构造函数类型jfilechooser(file)示例化jfilechooser的示例,而不是显式传递文件值,而是调用filesystemview方法返回将作为参数传递给jfilechooser构造函数的值。
同样的代码可以写如下