您的位置:首页 > 汽车 > 新车 > 乐陵疫情最新数据消息_2023山东疫情严重吗现在_黑帽seo技术有哪些_磁力猫引擎

乐陵疫情最新数据消息_2023山东疫情严重吗现在_黑帽seo技术有哪些_磁力猫引擎

2025/1/7 14:59:09 来源:https://blog.csdn.net/weixin_39996520/article/details/144001329  浏览:    关键词:乐陵疫情最新数据消息_2023山东疫情严重吗现在_黑帽seo技术有哪些_磁力猫引擎
乐陵疫情最新数据消息_2023山东疫情严重吗现在_黑帽seo技术有哪些_磁力猫引擎

1. 文件选择与文件夹选择基础

1.1 使用 FileChooser 实现文件选择

FileChooser 是 JavaFX 提供的类,允许用户通过系统文件选择对话框选择文件。以下是一个简单的文件选择示例:

代码示例:

import javafx.application.Application;
import javafx.stage.FileChooser;
import javafx.stage.Stage;import java.io.File;public class FileChooserExample extends Application {@Overridepublic void start(Stage primaryStage) {FileChooser fileChooser = new FileChooser();// 设置初始目录fileChooser.setInitialDirectory(new File(System.getProperty("user.home")));// 添加文件过滤器fileChooser.getExtensionFilters().add(new FileChooser.ExtensionFilter("Text Files", "*.txt"));fileChooser.getExtensionFilters().add(new FileChooser.ExtensionFilter("All Files", "*.*"));// 打开文件选择对话框File selectedFile = fileChooser.showOpenDialog(primaryStage);if (selectedFile != null) {System.out.println("Selected file: " + selectedFile.getAbsolutePath());} else {System.out.println("No file selected");}}public static void main(String[] args) {launch(args);}
}

说明:

  • setInitialDirectory:指定对话框打开时的默认目录。
  • getExtensionFilters:设置文件过滤器,便于用户选择特定类型文件。
1.2 使用 DirectoryChooser 实现文件夹选择

DirectoryChooser 类允许用户通过系统文件选择对话框选择目录。以下是一个简单的文件夹选择示例:

代码示例:

import javafx.application.Application;
import javafx.stage.DirectoryChooser;
import javafx.stage.Stage;import java.io.File;public class DirectoryChooserExample extends Application {@Overridepublic void start(Stage primaryStage) {DirectoryChooser directoryChooser = new DirectoryChooser();// 设置初始目录directoryChooser.setInitialDirectory(new File(System.getProperty("user.home")));// 打开文件夹选择对话框File selectedDirectory = directoryChooser.showDialog(primaryStage);if (selectedDirectory != null) {System.out.println("Selected directory: " + selectedDirectory.getAbsolutePath());} else {System.out.println("No directory selected");}}public static void main(String[] args) {launch(args);}
}

2. 记录上次选择的路径

为了提升用户体验,可以记录上次选择的路径,用户再次使用时默认选择该路径。

实现方法:

使用 Preferences 类存储上次选择的路径。以下是完整实现:

代码示例:

import javafx.application.Application;
import javafx.stage.FileChooser;
import javafx.stage.Stage;import java.io.File;
import java.util.prefs.Preferences;public class FileChooserWithMemory extends Application {private static final String LAST_PATH_KEY = "lastPath";@Overridepublic void start(Stage primaryStage) {Preferences prefs = Preferences.userNodeForPackage(FileChooserWithMemory.class);FileChooser fileChooser = new FileChooser();// 获取上次选择的路径String lastPath = prefs.get(LAST_PATH_KEY, System.getProperty("user.home"));fileChooser.setInitialDirectory(new File(lastPath));File selectedFile = fileChooser.showOpenDialog(primaryStage);if (selectedFile != null) {System.out.println("Selected file: " + selectedFile.getAbsolutePath());// 保存当前选择的路径prefs.put(LAST_PATH_KEY, selectedFile.getParent());} else {System.out.println("No file selected");}}public static void main(String[] args) {launch(args);}
}

3. 解决权限报错问题

运行 JavaFX 应用时,可能会遇到以下警告:

WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0x80000002. Windows RegCreateKeyEx(...) returned error code 5.
原因:

Preferences 类在 Windows 上使用注册表存储数据。如果程序以非管理员权限运行,可能会因为权限不足而报错。

解决方案:
  1. 切换到文件存储: 使用 Preferences 的文件存储方式替代注册表。
  2. 运行为管理员: 在 Windows 系统中,以管理员身份运行程序。

以下是通过文件存储方式解决问题的代码:

代码示例:

import java.util.prefs.Preferences;
import java.util.prefs.BackingStoreException;public class FileBasedPreferences {public static void main(String[] args) {// 设置 Preferences 的根节点System.setProperty("java.util.prefs.userRoot", "./prefs");Preferences prefs = Preferences.userRoot().node("myApp");try {// 保存数据prefs.put("key", "value");// 读取数据String value = prefs.get("key", "default");System.out.println("Stored value: " + value);// 刷新到磁盘prefs.flush();} catch (BackingStoreException e) {e.printStackTrace();}}
}

说明:

  • System.setProperty("java.util.prefs.userRoot", "./prefs") 指定使用文件存储。
  • 确保程序有写入文件的权限。

4. 常见问题和解决方式

4.1 文件类型过滤器无效

问题原因: 文件选择器对文件类型的过滤仅适用于显示时,用户仍然可以通过手动输入选择其他类型文件。

解决方法: 在用户选择文件后,手动检查文件扩展名:

if (!selectedFile.getName().endsWith(".txt")) {System.out.println("Invalid file type. Please select a .txt file.");
}
4.2 路径不存在时崩溃

问题原因: 如果指定的初始路径不存在,可能导致 IllegalArgumentException

解决方法: 在设置初始目录前,检查路径是否存在:

File initialDir = new File(lastPath);
if (!initialDir.exists()) {initialDir = new File(System.getProperty("user.home"));
}
fileChooser.setInitialDirectory(initialDir);

5. 总结

本文详细介绍了如何使用 JavaFX 实现文件和文件夹选择功能,包括以下内容:

  1. 基础的 FileChooserDirectoryChooser 用法。
  2. 使用 Preferences 类记录上次选择路径。
  3. 解决 Windows 系统中权限报错的方案。
  4. 常见问题及其解决方法。

通过这些技巧,开发者可以构建更可靠、更用户友好的 JavaFX 应用。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com