gpt4 book ai didi

java - FileChooser.ExtensionFilter 不过滤.url 文件

转载 作者:行者123 更新时间:2023-11-30 11:03:10 26 4
gpt4 key购买 nike

我正在使用 FileChooser 选择一个文件,并且我已经向 FileChooser 添加了一个 ExtensionFilter,这样用户只能选择指定的文件类型。在这种情况下,我希望限制用户只能选择 .xml 文件。

问题是我的 ExtensionFilter 不仅允许用户选择 .xml 文件,还允许用户选择 .url(互联网快捷方式)文件。 ExtensionFilter 几乎完美地工作,因为没有显示除这两种文件类型之外的其他文件类型(据我所知;我只尝试过最常见的文件类型)。

这是我的扩展过滤器:

FileChooser.ExtensionFilter extensionFilter = new FileChooser.ExtensionFilter(
"XML Files (*.xml)", "*.xml");

我尝试将其更改为仅允许 .txt 文件,只是为了检查它是否可能以某种方式将 .xml 和 .url 组合在一起,但结果相同。然后 FileChooser 显示 .txt 和 .url。因此,.url 文件似乎以某种方式通过了过滤过程。

这可能是设计错误吗?

编辑:环境:Windows 8.1 Enterprise + Java 1.8.0_45

更新:这似乎是一个与我的环境有关的问题。除我之外的所有测试环境都未能重现该问题。我设法在另一台具有相同环境的计算机上重现了该问题。其他人能否在 Windows 8 环境中尝试此操作并确认问题?

无法重现错误的测试环境:

  • Ubuntu 14.10 与 GNOME 3
  • Mac 10.8.5 + Java 1.8.0_45
  • Windows 7 专业版 SP1 + Java 1.8.0_45

这是重现所述问题的 SSCCE:

import javafx.application.Application;
import javafx.stage.FileChooser;
import javafx.stage.Stage;

public class SSCCE extends Application {
private Stage primaryStage;

public void start(Stage primaryStage) {
this.primaryStage = primaryStage;
this.primaryStage.setTitle("SSCCE");

}

public SSCCE() {
FileChooser fileChooser = new FileChooser();

FileChooser.ExtensionFilter extensionFilter = new FileChooser.ExtensionFilter(
"XML Files (*.xml)", "*.xml");
fileChooser.getExtensionFilters().add(extensionFilter);

fileChooser.showOpenDialog(primaryStage);
}

public static void main(String[] args) {
launch(args);
}
}

最佳答案

我遇到了同样的问题(在 Windows 10 中)并想分享我的发现:

此错误已报告给 OpenJDK,答案是这是一个 Windows 问题,不会被修复。

“似乎 .url 文件类型的显示是 Windows 中的一个“已知问题”,并且没有一个干净或简单的解决方法来解决这个问题。”“鉴于这份报告的核心与未过滤的 .url 文件有关,并且鉴于这是 Windows 的“功能”,我将关闭它,因为不会修复。”来源:https://bugs.openjdk.java.net/browse/JDK-8161668

关于java - FileChooser.ExtensionFilter 不过滤.url 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30523785/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com