在指定目录启动 JFileChooser 并仅显示特定类型的文件

2024-01-05

我有一个使用 JFileChooser 的程序。简而言之,完整的程序是一个 GUI,允许用户操作 PNG 和 JPG。我想让 JFileChooser 立即打开图片目录(Windows)。当用户打开 JFileChooser 时,它将直接打开图片库 C:\Users\(USER)\Pictures

此外,最好只显示特定类型的文件(PNG 和 JPG)。许多程序似乎都能做到这一点;只允许选择特定文件。 JFileChooser 允许这样的事情吗?目前,我正在使用一种非常不可靠的绕行方法来拒绝非 PNG/JPG。

下面指的是GUI的“浏览”按钮,用户可以在其中选择要编辑的图片并将其显示在屏幕上。

    try {
       int val = filec.showOpenDialog(GridCreator.this);
       if(val==JFileChooser.APPROVE_OPTION) {
          File unfiltered_picture = filec.getSelectedFile();
          //get the extension of the file
          extension=unfiltered_picture.getPath();
          int index=extension.indexOf(".");
          extension=extension.substring(index+1, extension.length());
          //if the file is not jpg, png, or jpeg, reject it and send a message to the user.
          if(!extension.matches("[jJ][pP][gG]") && !extension.matches("[pP][nN][gG]") && !extension.matches("[jJ][pP][eE][gG]")) {
             JOptionPane.showMessageDialog(null,
                                           "cannot load file. File must be of type png, jpeg, or jpg. \n Your file is of type " + extension,
                                            "Error: improper file",
                                            JOptionPane.OK_OPTION);
           //if the file is of the proper type, display it to the user on the img JLabel.
           } else {
              finalImage = ImageIO.read(unfiltered_picture);
              ImageIcon imgIcon = new ImageIcon();
              imgIcon.setImage(finalImage);
              img.setIcon(imgIcon);
              img.invalidate();
              h_divide.setValue(0);
              v_divide.setValue(0);
           }
       }
   } catch(IOException exception) {
        exception.printStackTrace();
   }

谢谢。


你需要构建你的JFileChooser与您想要启动的目录,然后传递FileFilter在设置可见之前进入它。

    final JFileChooser fileChooser = new JFileChooser(new File("File to start in"));
    fileChooser.setFileFilter(new FileFilter() {
        @Override
        public boolean accept(File f) {
            if (f.isDirectory()) {
                return true;
            }
            final String name = f.getName();
            return name.endsWith(".png") || name.endsWith(".jpg");
        }

        @Override
        public String getDescription() {
            return "*.png,*.jpg";
        }
    });
    fileChooser.showOpenDialog(GridCreator.this);

此示例过滤以“.png”或“.jpg”结尾的文件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在指定目录启动 JFileChooser 并仅显示特定类型的文件 的相关文章

  • “此 GPIO 引脚已存在:”第二次出现 GPIO 1 异常

    我正在 Raspberry pi 和 java 上工作 通过使用 pi4j 使 LED 闪烁 一切都已清除并且工作正常 LED 按照代码闪烁 但是当我第二次运行时 它会导致以下错误 我已经搜索了很多有很多相同的问题没有明确的答案如何解决 任
  • 为什么这个基于java配置的Spring应用程序不能正常工作

    我最近开始了一个使用 Spring 框架的项目 目标是在没有 XML 配置文件 只有 Java 代码的情况下开发它 目前 我将以下文件添加到我的项目中 WebAppConfig java EnableWebMvc ComponentScan
  • Spring Security 中 Web 忽略和 Http 允许之间的区别?

    这两种方法有什么区别 Override protected void configure HttpSecurity http throws Exception http authorizeRequests antMatchers api p
  • 何时在java中使用get/set方法[重复]

    这个问题在这里已经有答案了 我想知道何时在我的类中使用 get 和 set 方法 getName setName 以及何时简单classVariable name 反而 classVariable getName 这是使用 set 和 ge
  • Java 7 中的 Beans Binding 将被什么取代?

    我在某处读到 我忘记了链接 Beans Binding 将不会成为 Java 7 的一部分 有人知道什么会取代它吗 另外 当前版本的 Java 中是否有 Bean 绑定的替代方案 我建议JGoodies 绑定 https binding d
  • GAE 上奇怪的 500 错误

    我今天开始在我的应用程序上收到此错误 根本不记得更改任何内容 每当我在本地尝试时它都工作正常 但部署后我会收到此错误 EXCEPTION java lang ClassNotFoundException se myApp server My
  • 在 Java 中对多语言环境字符串进行排序

    我正在尝试按字符串字段 国家 地区 对对象列表进行排序 每个国家 地区都使用其母语 阿根廷 澳大利亚 奥地利 例如 我想要做的是让 出现在 A 国家之后 因为字母 对应于拉丁语 B 我正在尝试使用默认的 Collat er 但非拉丁名称仍然
  • Java 应用程序可以检测到调试器已连接吗?

    我知道 jvm 启动选项可以让 jvm 等待附加调试器 这不是我在这里的意思 是否有可能从 Java 代码中也检测调试器的附件 以便我可以例如编写一个正在执行某些操作的 脚本 然后在某个时刻让我的应用程序等待调试器 不会 这些选项是 JVM
  • 使用 GIN 注入 Class

    有没有办法注入类类型Class
  • 从 Java 中的泛型类型推断泛型类型(编译时错误)

    我有一个带有以下泛型类型签名的静态函数T public static
  • RecyclerView onItemClickListener 不工作

    我正在研究回收视图并尝试对 recyclerview 的每个项目使用点击侦听器界面 这是我的活动课程 public class LegacyHomeActivity extends ActivityBaseDrawer private Li
  • Android-如何在指定时间后台下载数据

    我提前很抱歉没有发布任何代码 主要是因为我一生都无法弄清楚我需要如何做我需要做的事情 基本上 在一天中的指定时间间隔 例如下午 5 点 我希望我的应用程序从我的服务器下载一些数据并将其存储在设备上 这是为了减少每次运行应用程序时下载数据对我
  • 使用 TestRestTemplate 和 MockRestServiceServer 时,解析异常而不是实体列表不起作用

    我有一个简单的控制器 CODE https github com joergi tryouts blob main kotlin mockrestserver src main kotlin io joergi kotlinmockrest
  • Java:字符串连接和变量替换的最佳实践[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 在 Java 中连接字符串和添加变量值的方法有太多 我应该如何选择一个 优点 缺点 最佳用例等 MessageFormat forma
  • 使用电子邮件、用户名和密码进行 Firebase 身份验证

    我想知道是否可以使用电子邮件和用户 ID 密码登录 我有一个项目 我希望用户添加一个唯一的号码 实际上是我们公司提供的工作识别号码 以便能够签名参与该计划的人员将继续留在公司就业 即使电子邮件和密码正确但用户 ID 错误 我也需要 fire
  • 多少次函数调用会导致堆栈溢出

    你好 Android Java 开发者 当一个函数调用一个函数并且该函数调用另一个函数等等时 有多少次调用 堆栈长度 会让我陷入堆栈溢出 有一般经验法则吗 我问的原因是因为我现在对于我的 5 人纸牌游戏来说哪个更有效 设计明智 解决方案一
  • 使 @Schedule 在集群环境中仅运行一次

    我有两个 tomee 实例集群 每个都有一个方法注释如下 Schedule dayOfWeek public void runMeDaily 我只想每天运行一次这个方法 每天不两次 每个实例一次 我可以使用此处描述的标志仅在一个WebLog
  • 使用 JavaFX 和 Maven 将模块描述符添加到库中[重复]

    这个问题在这里已经有答案了 我需要使用反思 https github com ronmamo reflections在一个带有 JavaFX 的 Maven 项目中 我想使用jlink捆绑一个最小的 JRE 问题是我运行时出现以下错误mvn
  • 使用 Maven 将值附加到文件中

    我想在文件末尾附加一个值 但我无法确定要使用哪个插件 例子 我要附加的值 myValue file value1 value2 myValue 追加后 我知道我可以使用 antrun plugin 来做到这一点 但是可以使用 Maven 插
  • JVM 调试端口 7779 正在使用

    我正在使用 RAD 8 当我在调试模式下启动服务器时 它会显示一条错误消息 指出JVM debug port 7779 is in use 我多次遇到这个问题 因为我知道 RAD 使用了这个端口 所以我不得不停止这个过程窗口任务管理器 gt

随机推荐

  • 我可以使用简单的 html 来创建单行大小的 QTextEdit 吗?

    我需要显示简单的状态行以及包含以下样式的文本 color bold italic QTextEdit可以渲染简单的 HTML 但它也强制扩展到多行 添加红色背景以强调尺寸QTextEdit 所需的大小是一个文本行的大小 我该如何实现这一目标
  • “未指定 SMTP 主机。” - 但它是指定的?

    我在这里有点困惑 我收到以下错误 未指定 SMTP 主机 即使我的代码看起来是正确的 从我所看到的 我可以通过包含控制器内部的所有详细信息来手动完成此操作 例如 SmtpClient smtpClient new SmtpClient sm
  • 在哪里可以找到所有英国_完整_邮政编码的列表,包括街道名称及其精确坐标?

    在哪里可以找到英国所有的名单full邮政编码 包括街道名称及其精确坐标 它们不应该像 AB1 AB23 等 而是 AB1 2AA AB23 5ZZ 等 最好是免费的 Thanks 您现在可以从地形测量局免费获取邮政编码数据https www
  • 使用绑定时如何使子 NSManagedObjectContext 保持最新状态

    我有一个NSManagedObjectContext设置为有一个NSPrivateQueueConcurrencyType我在我的应用程序中大部分时间都在使用它 除此之外 我还创建了一个子 MOCNSMainQueueConcurrency
  • 用于多个项目的 QML 中继器,无需包装项目

    我想要创建一个看起来像这样的视图 为了简洁起见 我省略了一个专栏 text headr text item1 item2 text item3 item4 item5 item6 并一直尝试使用 GridLayout 来做到这一点 问题是我
  • Rails 4 - simple_form 和从 url 预填充字段

    我正在使用 simple form 我想在表单中预先填充几个字段 在表单的链接中 我将几个值传递给 URL 中的参数 当我尝试将值传递给整数或关联字段时 就会出现麻烦 无论哪种情况 该字段都不会预先填充 下面的示例 前两个字段填充得很好 但
  • std::pow 给出小数指数的错误近似值

    这就是我想要做的事情 double x 1 1402 double pow 1 3 std pow x pow 1 结果是 0 但我期望 0 4465 方程是 1 x 3 1 1402 find x 1 3 是 0 这是整数除法 Try d
  • 当 Ionic 2 中的值发生变化时检索本地存储值

    我正在使用 ionic 2 框架 并且尝试使用本地存储来存储网络状态 this local new Storage LocalStorage this local set status this status 有两个值 强 和 弱 可以动态
  • Nginx 和 FastCGI 下载 PHP 文件而不是处理它们

    我在 Windows 7 64 位 PHP 5 4 12 和 Nginx 1 5 8 上运行 我已经阅读了许多有关设置和解决此问题的教程 即当从本地主机请求 PHP 文件时 它将其作为文件下载 而不是显示 PHP 页面 下面是我的 ngin
  • 按日期顺序全局搜索文件?

    我的 python 脚本中有这行代码 它在特定目录中的所有文件中搜索 cycle log for searchedfile in glob glob cycle log 这工作得很好 但是当我将脚本运行到网络位置时 它不会按顺序搜索它们 而
  • 水晶报表自定义纸张尺寸?

    我需要水晶报告中的自定义纸张尺寸 例如宽度 5 英寸和高度 7 英寸 是否可以 IIRC 您在打印机上设置自定义纸张尺寸 然后当您在设计时在报告中设置打印机时 Crystal 会拉出自定义尺寸
  • 通过 Kafka 报告 (prometheus) 指标

    我正在寻找一种将 Prometheus 与应用程序解耦的方法 通过在中间放置 Kafka 来实现如下目标 Application metrics gt Kafka gt Prometheus 为了解决这个问题我有两个问题 是否有任何 Jav
  • Firestore社交网络数据结构

    如何构建社交网络数据库结构 例如twitter我们可以在我们的时间线中关注用户并获取他们的所有推文 我已经检查过了Firestore 如何构建 feed 和 follow 系统 https stackoverflow com questio
  • 检查序言列表元素的关系

    可以说我有关系 Happy james Happy harry unhappy Tom unhappy Ben unhappy Dick 然后是人员名单 Ben James Harry Tom Dick 如何迭代列表并检查每个列表元素的布尔
  • Jetpack Compose 记住的实际功能是什么?它在幕后是如何工作的?

    查看 Codelab 的基本教程 其中有一个片段可以在单击时增加按钮上的计数器 Composable fun MyScreenContent names List
  • 手动调用 MVC 3 客户端验证以进行 ajax 帖子

    我正在创建一个 MVC 3 Web 应用程序 我想在实体类上使用数据注释 然后在回发到服务器之前使用不显眼的客户端验证 这在发常规帖子时效果很好 如果任何字段无效 我会收到验证和验证摘要 但是 我想通过ajax和json回发信息 我如何首先
  • 如何在Scala中编写极限函数?

    在想知道我的第一个 Scala 应用程序中的某些错误后 我发现我的 limit 函数根本不起作用 所以这是我的第一次尝试 def limit x Double min Double max Double if x lt min min if
  • 使用 XLIFF 改进 Android 字符串资源

    我见过一些使用 XLIFF 标签来包装变量的 Google 应用程序和代码示例 我看到这样做有一些很大的优势 特别是对于替换非描述性格式参数 例如 1 s 不幸的是 XLIFF 似乎并没有很好地集成到 ADT 中 以以下字符串资源为例
  • 通过 Python Socket 向 Maya 发送多行命令

    我想知道有没有办法通过python套接字和Maya自己的 commandPort 命令向maya发送多行命令 我使用下面的代码将代码发送到 Maya message 值是命令 import socket HOST 192 168 1 122
  • 在指定目录启动 JFileChooser 并仅显示特定类型的文件

    我有一个使用 JFileChooser 的程序 简而言之 完整的程序是一个 GUI 允许用户操作 PNG 和 JPG 我想让 JFileChooser 立即打开图片目录 Windows 当用户打开 JFileChooser 时 它将直接打开