【发布时间】:2011-06-26 10:19:02
【问题描述】:
我正在寻找一种在 Java 文件选择器对话框中添加自动完成功能的方法。似乎 Java Swing JFileChooser 不支持。我找到的唯一选择是 gtk FileChooser 我很想知道是否存在其他选择。
【问题讨论】:
标签: java swing user-interface autocomplete filechooser
我正在寻找一种在 Java 文件选择器对话框中添加自动完成功能的方法。似乎 Java Swing JFileChooser 不支持。我找到的唯一选择是 gtk FileChooser 我很想知道是否存在其他选择。
【问题讨论】:
标签: java swing user-interface autocomplete filechooser
如何实现您自己的 FileChooser,您可以在其中将DocumentListener 添加到在文件选择器中保存您的文件路径 + 文件名的 TextField。不确定您是否可以使用JFileChooser 执行上述操作。如果您想让文件选择器的行为与默认的 JFileChooser 以及添加的自动完成功能相匹配,这将是一些代码量。
【讨论】:
另一种方法是使用SWT 的FileDialog - 这使用本机操作系统文件对话框(例如 Linux 上的 GTK),因此您可以得到与用户习惯从他们的操作系统完全相同的行为。这包括 Linux/GTK 和 Mac 上的自动完成功能(我不知道 Windows 是否也提供该功能?)
我完全不确定是否值得为此目的包含 SWT,但我想提一下这个替代方案。
【讨论】:
如果一个人添加了自动功能,那么他/她必须访问文本字段,但这在正常方式中是不可能的..
存在一种 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
如果扩展类中存在错误,请报告。 谢谢
【讨论】: