2

我正在寻找一种在 Java 文件选择器对话框中添加自动完成功能的方法。似乎 Java Swing JFileChooser 不支持。我发现的唯一替代方案是gtk FileChooser我很想知道是否存在任何其他替代方案。

4

3 回答 3

1

如果一个人添加了自动功能,那么他/她必须访问文本字段,但这在正常方式中是不可能的..

有一种 hack 搜索所有组件,然后找到 textfield 的实例并返回它。

这是代码..

private  JTextField dis(JFileChooser jf) {
    boolean hide =false;
    LinkedList<Component> queue = new LinkedList<Component>();
    queue.add(jf);
    JTextField jtf=new JTextField();
    while(queue.size() != 0) {
        Component[] c = ((Container) queue.removeFirst()).getComponents();   
        for(int i = 0; i < c.length; i++) {                        
            queue.add(c[i]);    

            if(c[i] instanceof JTextField) {
                jtf = (JTextField) c[i];
                jtf.setVisible(true);
                jtf.setEnabled(true);
                jtf.setText(" hello ");
                return jtf;
            }


    }           
}


return jtf;

}

这是扩展应用自动完成的 JFileChooser 的类的链接 http://commondatastorage.googleapis.com/holyvincent/FileChooser/VinFC.java

请报告扩展类中是否存在错误。谢谢

于 2011-03-25T17:32:11.977 回答
1

一种替代方法是使用SWTFileDialog - 它使用本机操作系统文件对话框(例如 Linux 上的 GTK),因此您可以获得与用户从他们的操作系统习惯的完全相同的行为。这包括 Linux/GTK 和 Mac 上的自动完成功能(我不知道,Windows 是否也提供该功能?)

我完全不确定,是否值得为此目的而包含 SWT,但我想提一下这个替代方案。

于 2011-02-13T14:34:52.207 回答
0

如何实现您自己的 FileChooser,您可以在其中添加一个DocumentListener文本字段,该文本字段在文件选择器中保存您的文件路径 + 文件名。不确定您是否可以使用JFileChooser. 如果您想让文件选择器的行为与默认的 JFileChooser 以及添加的自动完成功能相匹配,这将是一些代码量。

于 2011-02-13T12:41:50.373 回答