标签: jfilechooser

从Directories Only JFileChooser返回的路径的一部分有时是重复的

在我的应用程序中,我希望用户能够选择一个目录来存储内容.我有一个文本字段,我用它来显示他们选择的目录.如果他们只是点击一个目录(不要浏览它),一切都很好.但是,如果他们双击目录并查看其中,则目录名称是重复的.

防爆.他们在主目录中,单击文件夹桌面...返回的路径是〜/ Desktop.另一方面,如果它们在主目录中,双击文件夹Desktop,现在在Desktop文件夹中,返回的路径是〜/ Desktop/Destkop.

这是我正在做的事情:

JFileChooser chooser = new JFileChooser();
chooser.setMultiSelectionEnabled(false);
chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
int returnVal = chooser.showOpenDialog(this);

if (returnVal == JFileChooser.APPROVE_OPTION) {
    File f = chooser.getSelectedFile();
    loadField.setText(f.getPath());
}
Run Code Online (Sandbox Code Playgroud)

我也试过做类似的事情,chooser.getCurrentDirectory()但这也不起作用.

编辑:使用Mac OS X,Java 1.6

java swing jfilechooser

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

改变JFileChooser行为:阻止在文件路径JTextField中输入"choose"

向Swing Pros致以问候,这是一个很好的(我希望)问题.

以下是我看到的任务要求和可能的解决方案.我想有人有这样的铁杆经验来分享一些关于这个的想法.

这不需要编码或类似的东西,我只需要一般性建议,关于我需要使用驻留在sun.swing和/或javax.swing.plaf包中的私有符号的事实,哪种方法更可靠.

任务是修改/改变JFileChooser行为(实际上只是一点点).

  1. 当用户在文件名JTextField中按Enter键,并且该字段包含dir的路径时,不要"选择"目录,而是切换到它.是的,对话框配置为接受目录,但我们只需要接受"打开"按钮的点击,并且(可能)双击文件列表表.

  2. 通过在文件名文本字段中输入,阻止用户选择数据超过1GB的目录/文件

以下是一些常规解决方案选项:

一个.聆听JFileChooser提供的基于属性的更改(事后触发哪个AFAICS,并且不会提供我们需要的控制程度).

湾 修改javax.swing.plaf.basic.BasicFileChooserUI(通过refrection,打破私有级封装)并修改引用

private Action approveSelectionAction = new ApproveSelectionAction();
Run Code Online (Sandbox Code Playgroud)

这样我们的自定义操作就会对1和2进行额外检查.这种方法与plaf包链接,如果在此UI类下面的某个类中以某种方式覆盖此操作,则可能会失败.

C.遍历JFileChooser组件层次结构,找到JTextField(显然应该只在组件树中出现一次),使用我们的自定义检查装饰挂在JTextField上的所有动作侦听器.我的调试会话显示这个JTextField是生活在sun.swing.FilePane中的JTextField的一些匿名子类.这种方法似乎更友好,但是对于某些操作系统来说,这个文本字段可能不存在,或者其他一些JTextField也存在于层次结构中.

好吧,似乎公共JFileChooser API不足以实现这种行为,而其他两个选项要么是深度魔术还是不可移植(长期),要么两者兼而有之.

所以,问题是:你会选择哪种方法?为什么?

java swing jfilechooser look-and-feel

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

JFileChooser选择空文件

我正在使用JFileChooser作为JTable单元的编辑器.我希望用户使用JFileChooser选择一个有效的文件,然后当他们按Enter键时,文件路径将保存到单元格中.如果他们想要清除细胞,则会出现问题.所以我希望他们清除JFileChooser,然后用空字符串设置单元格(或者为null,无论哪个).

我的问题是,如果您没有选择文件,则无法按"批准"按钮.在我的代码中,"空!" 永远不会打印.有没有办法在没有选择文件时允许选择批准按钮?这是我尝试过的:

JFileChooser component = new JFileChooser(){
        public void approveSelection(){
            File f = getSelectedFile();
            if(f==null){
                System.out.println("empty!");
                return;
            }else{
                if(!f.exists()){
                    System.out.println("does not exist!");
                }else{
                    super.approveSelection();
                }

            }
        }
    };
Run Code Online (Sandbox Code Playgroud)

java swing jfilechooser

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

如何在JFileChooser中禁止编辑目录名?

要在JFileChooser中浏览目录,用户可以使用双击.问题是,如果他们点击不够快,文件选择器认为他们想要编辑目录名称,这是非常烦人的.有没有办法禁用目录名称编辑?

java user-interface swing jfilechooser

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

禁止在JFileChooser中重命名文件?

在JFileChooser中对文件单击两次(而不是双击)时,可以重命名所选文件.如何禁用此功能?我试过了

UIManager.put("FileChooser.readOnly", Boolean.TRUE);
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

java jfilechooser

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

在Ubuntu 12.04(GTK)下改进JFileChooser

JFileChooser在Ubuntu 12.04下有问题.我使用此代码来设置外观: javax.swing.UIManager.setLookAndFeel(javax.swing.UIManager.getSystemLookAndFeelClassName());

它看起来像这样.使用起来非常不舒服,看起来非常难看:

http://www9.picfront.org/token/9sRH/2012/05/15/2062476.jpg

我希望它看起来像这样:

http://www4.picfront.org/token/1lpa/2012/05/15/2062477.jpg

使用这篇文章中的提示,我尝试使用FileDialog而不是FileChooser.但是FileDialog当我在LOAD模式下启动并点击"打开"按钮时会引发异常.我创建对话框的方式:

FileDialog fd = new FileDialog(frame, "Test", FileDialog.LOAD);
fd.setVisible(true);
Run Code Online (Sandbox Code Playgroud)

例外情况:

Exception in thread "Thread-0" java.lang.NullPointerException
at sun.awt.X11.GtkFileDialogPeer.setFileInternal(GtkFileDialogPeer.java:79)
at sun.awt.X11.GtkFileDialogPeer.run(Native Method)
at sun.awt.X11.GtkFileDialogPeer.showNativeDialog(GtkFileDialogPeer.java:172)
at sun.awt.X11.GtkFileDialogPeer.access$000(GtkFileDialogPeer.java:39)
at sun.awt.X11.GtkFileDialogPeer$1.run(GtkFileDialogPeer.java:114)
Run Code Online (Sandbox Code Playgroud)

我在Ubuntu Linux 12.04下使用Oracle JDK7和Gnome 3(如果这有帮助的话).

有没有人知道我怎么能改善外观JFileChooser或者FileDialog工作?

java ubuntu swing jfilechooser filedialog

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

隐藏JFileChooser中的"可选文件过滤器"小部件

如何在JFileChooser中隐藏"可选文件过滤器小部件"?通过"可选文件过滤器小部件",我的意思是下面的面板包含单词"文件格式".

在此输入图像描述

文档中有很多关于如何修改窗口小部件中显示的特定过滤器的信息,但我无法弄清楚如何完全隐藏它.

我正在使用JFileChooser来选择目录,因此小部件是不必要的.

有任何想法吗?

编辑

最后,我采用了Andrew Thompson的建议并设置过滤器选择器以显示文本"仅限目录".如果它可以帮助任何人,我使用以下代码:

        fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
        fc.setFileFilter( new FileFilter(){

            @Override
            public boolean accept(File f) {
                return f.isDirectory();
            }

            @Override
            public String getDescription() {
                return "Directories only";
            }

        });
Run Code Online (Sandbox Code Playgroud)

java swing jfilechooser

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

本地化JFileChooser"所有文件"字符串

我正在使用JFileChooser开发一个Java应用程序,用户可以切换语言.

Locale.setDefault( Locale.ENGLISH );
JFileChooser chooser = new JFileChooser();
chooser.showOpenDialog( null );

Locale.setDefault( Locale.CHINA );
JFileChooser.setDefaultLocale( Locale.CHINA );
JFileChooser chinese_chooser = new JFileChooser();
chinese_chooser.showOpenDialog( null );
Run Code Online (Sandbox Code Playgroud)

除了下拉框中的"所有文件"字符串外,要显示的第二个文件选择器是中文.如果我注释掉代码的第一部分,则文件选择器会正确显示所有已翻译的字符串.

这是java中的错误还是我需要在其他地方设置区域设置?

如何才能使翻译文件选择器正确显示?

java swing locale jfilechooser

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

从java程序中打开任何文件

在java中打开文件似乎有点棘手 - 为.txt文件必须与扫描仪或BufferedReader类对象一起使用File对象 - 图像IO,必须使用一个ImageIcon类 - 如果一个是从字面上打开从java开始.txt文件(类似于双击应用程序),这段代码似乎有效:

import java.io.*;

public class LiterallyOpenFile {
    public static void main(String[] args) throws IOException {
        Runtime rt = Runtime.getRuntime();
        Process p = rt.exec("notepad Text.txt");
    }
}
Run Code Online (Sandbox Code Playgroud)

我还不能肯定,但我认为其他文件类型/名称可以在EXEC后括号被取代 - 反正,我计划在JFileChooser打开某些文件,当用户点击一个文件打开(用户点击时在文件上,可以使用getSelectedFile()方法获取文件的路径.虽然我更具体地希望能够在java程序中打开Arduino IDE中的Arduino文件,比如模拟双击......也许是这样的?

import java.io.*;

public class LiterallyOpenFile {
    public static void main(String[] args) throws IOException {
        Runtime rt = Runtime.getRuntime();
        Process p = rt.exec("Arduino C:\\Arduino\\fibonacci_light\\fibonacci_light.ino");
    }
}
Run Code Online (Sandbox Code Playgroud)

正确方向的一点将不胜感激.

java jfilechooser file

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

JFileChooser没有显示

我有一个关于JFileChooser的问题很长一段时间了,现在还没有找到帮助......问题是文件窗口没有显示出来.我试图找到这个问题的原因,我测试了以下内容:

public class Test {
   public static void main (String[] args) {   
   load();     
   }
   public static void load () {
      String folder = System.getProperty("user.dir");
      JFileChooser fc = new JFileChooser(folder);
      int resultat = fc.showOpenDialog(null);  
   }
}
Run Code Online (Sandbox Code Playgroud)

运行此代码时,我会看到要显示的窗口.

但是,当我尝试这个:

public class Test {
    public static void main (String[] args) {   
    String input = JOptionPane.showInputDialog(null, "Make your choice!\n" +
                                                     "1. load file");      
    load();   

    }
}
Run Code Online (Sandbox Code Playgroud)

然而,窗口没有显示,编程仍在运行...我不知道可能导致此问题的原因

java swing jfilechooser

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