我正在寻找一种在Java文件选择器对话框中添加自动完成功能的方法。似乎Java Swing JFileChooser不支持它。我找到的唯一选择是gtk FileChooser我很乐意是否存在其他替代方案。
答案 0 :(得分:1)
一种替代方法是使用SWT的FileDialog - 这使用本机操作系统文件对话框(例如Linux上的GTK),因此您可以获得与用户习惯完全相同的行为从他们的操作系统这包括Linux / GTK和Mac上的自动完成功能(我不知道,如果Windows也提供了这一功能吗?)
我根本不确定,是否值得为此目的包含SWT,但我想提及这个替代方案。
答案 1 :(得分: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
请报告扩展类中是否存在错误。 感谢
答案 2 :(得分:0)
如何实现自己的FileChooser,你可以在文件选择器中保存文件路径+文件名的TextField中添加DocumentListener
。不确定您是否可以使用JFileChooser
执行上述操作。如果您希望获得文件选择器的行为以匹配默认的JFileChooser以及添加的自动完成功能,那么将会有大量代码。