【问题标题】:Autocomplete in a Java File ChooserJava 文件选择器中的自动完成
【发布时间】:2011-06-26 10:19:02
【问题描述】:

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

【问题讨论】:

    标签: java swing user-interface autocomplete filechooser


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

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

        存在一种 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

        如果扩展类中存在错误,请报告。 谢谢

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-12-05
          • 2014-11-19
          • 2016-11-22
          • 2011-11-06
          • 2012-09-25
          相关资源
          最近更新 更多