我正在寻找一种在 Java 文件选择器对话框中添加自动完成功能的方法。似乎 Java Swing JFileChooser 不支持。我发现的唯一替代方案是gtk FileChooser我很想知道是否存在任何其他替代方案。
问问题
1397 次
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
一种替代方法是使用SWT的FileDialog - 它使用本机操作系统文件对话框(例如 Linux 上的 GTK),因此您可以获得与用户从他们的操作系统习惯的完全相同的行为。这包括 Linux/GTK 和 Mac 上的自动完成功能(我不知道,Windows 是否也提供该功能?)
我完全不确定,是否值得为此目的而包含 SWT,但我想提一下这个替代方案。
于 2011-02-13T14:34:52.207 回答
0
如何实现您自己的 FileChooser,您可以在其中添加一个DocumentListener
文本字段,该文本字段在文件选择器中保存您的文件路径 + 文件名。不确定您是否可以使用JFileChooser
. 如果您想让文件选择器的行为与默认的 JFileChooser 以及添加的自动完成功能相匹配,这将是一些代码量。
于 2011-02-13T12:41:50.373 回答