如何用Javafx做一个查看电脑桌面文件夹中的照片
时间: 2024-09-20 08:17:39 浏览: 48
在JavaFX中,我们可以利用`javafx.scene.control.TreeView`以及`javafx.application.Platform`来创建一个简单的文件浏览器,允许用户浏览计算机桌面的图片文件。以下是步骤概述:
1. 引入必要的库:首先,你需要添加`javafx.controls`和`javafx.fxml`库,如果还没有的话。
```java
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.TreeItem;
import javafx.scene.image.Image;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.stage.FileChooser;
import javafx.stage.Stage;
```
2. 定义一个`TreeItem`工厂函数,用于构建目录结构:
```java
private TreeItem<File> createDirectoryNode(File directory) {
TreeItem<File> dir = new TreeItem<>(directory);
dir.setGraphic(new ImageView(createImage(directory)));
return dir;
}
private Image createImage(File file) {
try {
return new Image(file.toURI().toString());
} catch (Exception e) {
return null;
}
}
```
3. 在`main`方法中初始化并展示文件浏览器:
```java
public class DesktopPhotoBrowser extends Application {
@Override
public void start(Stage primaryStage) {
File initialDir = new File(System.getProperty("user.home") + "/Desktop");
TreeItem<File> desktopRoot = createDirectoryNode(initialDir);
TreeView<File> treeView = new TreeView<>();
treeView.setRoot(desktopRoot);
treeView.getSelectionModel()
.selectedItemProperty()
.addListener((obs, oldSelection, newSelection) -> {
if (newSelection != null) {
showImage(newSelection.getValue());
}
});
StackPane root = new StackPane();
root.getChildren().add(treeView);
Scene scene = new Scene(root, 800, 600, Color.DARKGRAY);
primaryStage.setTitle("Desktop Photo Browser");
primaryStage.setScene(scene);
primaryStage.show();
// 初始化文件选择器
final FileChooser fileChooser = new FileChooser();
fileChooser.setTitle("Select a photo");
fileChooser.getExtensionFilters().addAll(
new FileChooser.ExtensionFilter("JPEG Images", "*.jpg", "*.jpeg"),
new FileChooser.ExtensionFilter("PNG Images", "*.png"));
fileChooser.setInitialDirectory(initialDir);
}
private void showImage(File selectedFile) {
// 显示图片
if (selectedFile.isFile() && isSupportedImage(selectedFile)) {
ImageView imageView = new ImageView(createImage(selectedFile));
imageView.setFitWidth(400);
imageView.setPreserveRatio(true);
} else {
System.out.println("Unsupported file format or not a regular file.");
}
}
// 添加检查图片类型的辅助方法
private boolean isSupportedImage(File file) {
String fileName = file.getName();
return fileName.endsWith(".jpg") || fileName.endsWith(".jpeg") || fileName.endsWith(".png");
}
// ...其他代码
public static void main(String[] args) {
launch(args);
}
}
```
运行这个程序后,你会看到一个包含你桌面文件夹内容的文件树。点击文件会显示其缩略图。你可以选择打开的照片文件。
阅读全文