标签: jfilechooser

如何使用JFileChooser保存文件?

我的应用程序中有一个名为"另存为"的方法,它将我的应用程序的图像保存到文件中.我使用JFileChooser让用户选择他们想要的位置来保存文件.问题是除非用户明确键入文件格式,否则它将保存没有扩展名的文件.如何在"文件类型"下拉菜单中使用jpg,png等格式.

并且,如何从"文件类型"下拉菜单中获取用于保存图像文件的扩展名.

 ImageIO.write(image,extension,file);
Run Code Online (Sandbox Code Playgroud)

java swing bufferedimage jfilechooser filefilter

13
推荐指数
1
解决办法
5万
查看次数

如何将java中的文件选择器限制为特定文件

private void openMenuActionPerformed(java.awt.event.ActionEvent evt) {

    DBmanager db = new DBmanager();
    if (!db.getCurrentUser().equals("Admin")) {
        JOptionPane.showMessageDialog(this, "You are Not Allowed to Run Applications");
        JFileChooser fileChooser = new JFileChooser();
        fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
        fileChooser.addChoosableFileFilter(new FileNameExtensionFilter("PDF Documents", "pdf"));
        fileChooser.addChoosableFileFilter(new FileNameExtensionFilter("MS Office Documents", "docx", "xlsx", "pptx"));
        fileChooser.addChoosableFileFilter(new FileNameExtensionFilter("Images", "jpg", "png", "gif", "bmp"));
        fileChooser.setAcceptAllFileFilterUsed(false);
        int returnVal = fileChooser.showOpenDialog(this);

        if (returnVal == JFileChooser.APPROVE_OPTION) {
            File file = fileChooser.getSelectedFile();

            if (Desktop.isDesktopSupported()) {
                try {
                    Desktop.getDesktop().open(file);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    } else if (db.getCurrentUser().equals("Admin")) {
        JFileChooser fileChooser …
Run Code Online (Sandbox Code Playgroud)

java swing jfilechooser

13
推荐指数
1
解决办法
3万
查看次数

FileFilter for JFileChooser

我想限制一个JFileChooser只选择mp3文件.但是,以下代码允许所有文件类型:

FileFilter filter = new FileNameExtensionFilter("MP3 File","mp3");
fileChooser.addChoosableFileFilter(filter);
fileChooser.showOpenDialog(frame);
File file = fileChooser.getSelectedFile();
Run Code Online (Sandbox Code Playgroud)

java swing jfilechooser filefilter

13
推荐指数
3
解决办法
5万
查看次数

在JFileChooser中将选定的文件调整为FileFilter

我正在用java编写一个图编辑器.此应用程序可以选择导出到各种标准图像格式,如.jpg,.png等.当用户单击文件 - >导出时,您将获得JFileChooser其中包含FileFilters 的数量.jpg,.png等等.

现在这是我的问题:

有没有办法将默认值的扩展调整到所选的文件过滤器?例如,如果文档名为"lolcat",则在选择png过滤器时,默认选项应为"lolcat.png",当用户选择jpg文件过滤器时,默认值应自动更改为"lolcat.jpg".

这可能吗?我该怎么做?

编辑:基于下面的答案,我写了一些代码.但它还没有完全奏效.我添加了一个propertyChangeListenerFILE_FILTER_CHANGED_PROPERTY,但似乎在这个方法getSelectedFile()返回null.这是代码.

package nl.helixsoft;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.io.File;
import java.util.ArrayList;
import java.util.List;

import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.filechooser.FileFilter;

public class JFileChooserTest {
    public class SimpleFileFilter extends FileFilter {
        private String desc;
        private List<String> extensions;
        private boolean showDirectories;

        /**
         * @param name example: "Data files"
         * @param glob example: "*.txt|*.csv"
         */
        public SimpleFileFilter …
Run Code Online (Sandbox Code Playgroud)

java swing jfilechooser

11
推荐指数
4
解决办法
2万
查看次数

如何在"详细信息"视图中启动JFileChooser?

我希望我的JFileChooser能够从详细信息视图开始,而不是从它开始的"列表"视图开始.你是如何做到的?

java windows swing jfilechooser

11
推荐指数
1
解决办法
4553
查看次数

如何在JFileChooser中导航到网络主机?

问题

我有一个JFileChooser,我需要以编程方式将其currentDirectory设置为包含多个SMB共享的网络主机(例如\\blah).从技术上讲,这不是一个"目录",而是一个表示可用共享列表的shell文件夹.

  • JFileChooser在导航到特定共享(例如\\blah\someShare)时没有问题,但是无法处理主机"目录"本身(例如\\blah).

  • 用户可以通过"网络"shell文件夹,或通过查找特定共享并导航到其父目录,导航到JFileChooser内的此类"目录".调试显示引擎盖下此目录表示为a Win32ShellFolder2.到目前为止,我以编程方式设置currentDirectory的所有尝试都失败了.

  • new File("\\\\blah") 可以创建,但从Java的角度来看实际上并不存在.

解决方案尝试失败

  • chooser.setCurrentDirectory(new File("\\\\blah"));

    失败,因为JFileChooser检查给定目录是否存在,并new File("\\\\blah").exists()返回false.

  • File dir = new File("\\\\blah").getCanonicalFile();

    失败,但有异常:

      java.io.IOException: Invalid argument
      at java.io.WinNTFileSystem.canonicalize0(Native Method)
      at java.io.WinNTFileSystem.canonicalize(WinNTFileSystem.java:428)
      at java.io.File.getCanonicalPath(File.java:618)
      at java.io.File.getCanonicalFile(File.java:643)
    
    Run Code Online (Sandbox Code Playgroud)
  • File dir = ShellFolder.getShellFolder(new File("\\\\blah"));

    失败,但有异常:

      java.io.FileNotFoundException
      at sun.awt.shell.ShellFolder.getShellFolder(ShellFolder.java:247)
    
    Run Code Online (Sandbox Code Playgroud)
  • File dir = new Win32ShellFolderManager2().createShellFolder(new File("\\\\blah"));

    失败,但有异常:

      java.io.FileNotFoundException: File \\blah not found
      at sun.awt.shell.Win32ShellFolderManager2.createShellFolder(Win32ShellFolderManager2.java:80)
      at sun.awt.shell.Win32ShellFolderManager2.createShellFolder(Win32ShellFolderManager2.java:64)
    
    Run Code Online (Sandbox Code Playgroud)
  • Path dir = Paths.get("\\\\blah");

    失败,但有异常:

    java.nio.file.InvalidPathException: UNC path is missing sharename: \\blah
    at …
    Run Code Online (Sandbox Code Playgroud)

java windows filesystems smb jfilechooser

11
推荐指数
2
解决办法
1566
查看次数

如何使用预定义的大小打开JFileChooser

chooser = new JFileChooser();
chooser.setSize(300, 200);
if (chooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) {
.......
}
Run Code Online (Sandbox Code Playgroud)

这不起作用.始终以默认大小打开.

java size swing jfilechooser fileopendialog

10
推荐指数
1
解决办法
4774
查看次数

取消文件打开对话框后的InterruptedException - 1.6.0_26

以下代码的输出是:

java.vendor     Sun Microsystems Inc.
java.version    1.6.0_26
java.runtime.version    1.6.0_26-b03
sun.arch.data.model     32
os.name     Windows XP
os.version  5.1
os.arch     x86
Input selection cancelled by user.
Exception while removing reference: java.lang.InterruptedException
java.lang.InterruptedException
    at java.lang.Object.wait(Native Method)
    at java.lang.ref.ReferenceQueue.remove(Unknown Source)
    at java.lang.ref.ReferenceQueue.remove(Unknown Source)
    at sun.java2d.Disposer.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Run Code Online (Sandbox Code Playgroud)

以下代码显示了我的计算机上的异常.

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class GUI extends JPanel implements ActionListener {

    private final String newline = System.getProperty("line.separator");
    JButton openButton;
    JTextArea log;
    JFileChooser fc;

    public GUI() {
        super(new BorderLayout());

        log = new JTextArea(20,40); …
Run Code Online (Sandbox Code Playgroud)

java swing jfilechooser interrupted-exception

10
推荐指数
1
解决办法
5090
查看次数

使用JFileChooser添加多个文件

我正在寻找一个允许您附加计算机文件的应用程序.例如,当JFileChooser打开时,您可以选择多个文件,当您单击"添加"时,它会将其添加到窗口中,然后您可以根据需要对这些文件执行不同的操作.与在电子邮件中附加文件类似.我要展示的所有代码都是JFileChooser,因为我想在进一步研究之前我应该​​学会如何做到这一点.

提前致谢

import javax.swing.JFileChooser;
import java.io.File;

public class Locket {

public static void main(String[] args) 
{
    JFileChooser chooser = new JFileChooser();
    File f = new File("Desktop");
    chooser.setCurrentDirectory(f);

    chooser.showOpenDialog(null);

}
Run Code Online (Sandbox Code Playgroud)

}

java jfilechooser

10
推荐指数
2
解决办法
1万
查看次数

在Linux上替代JFileChooser?

我不喜欢Linux中这种丑陋的FileChooser布局.

在此输入图像描述

这种布局被任何其他程序使用,并且更加美观.

截图

这个布局是用Java吗?如果是这样,怎么样?

java linux swing jfilechooser

9
推荐指数
1
解决办法
2663
查看次数