Я ищу способ добавить функцию автозаполнения в диалоговое окно выбора файлов Java. Кажется, Java Swing JFileChooser этого не поддерживает. Единственная альтернатива, которую я нашел, это gtk FileChooser Я хотел бы знать, существуют ли какие-либо другие альтернативы.
Автозаполнение в средстве выбора файлов Java
Ответы (3)
если у кого-то есть автоматическая функциональность, тогда он / она должен получить доступ к текстовому полю, но это невозможно обычными способами.
Там был своего рода хак, который ищет все компоненты, а затем находит экземпляр текстового поля и возвращает его.
вот код..
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
Пожалуйста, сообщайте, если есть ошибки в расширенном классе. Спасибо
Одним из вариантов может быть использование SWT FileDialog - при этом используется собственный диалог файлов операционной системы (например, GTK в Linux), поэтому вы получаете точно такое же поведение, к которому пользователи привыкли в своей ОС. Это включает в себя автозаполнение на Linux/GTK и Mac (я не знаю, предоставляет ли это тоже Windows?)
Я вообще не уверен, стоит ли включать SWT только для этой цели, но я хотел упомянуть об этой альтернативе.
Как насчет реализации собственного FileChooser, где вы сможете добавить DocumentListener
в TextField, который содержит ваш путь к файлу + имя файла в средстве выбора файлов. Не уверен, что вы можете сделать то же самое с JFileChooser
. Это будет НЕКОТОРОЕ количество кода, если вы хотите, чтобы поведение вашего средства выбора файлов соответствовало JFileChooser по умолчанию вместе с добавленной функцией автозаполнения.