Javaのファイル選択ダイアログにオートコンプリート機能を追加する方法を探しています。JavaSwingJFileChooserはそれをサポートしていないようです。私が見つけた唯一の選択肢はgtkFileChooserです。他の選択肢が存在するかどうかを知りたいです。
3 に答える
1つの代替方法は、SWTのFileDialogを使用することです。これはネイティブオペレーティングシステムのファイルダイアログ(LinuxのGTKなど)を使用するため、ユーザーがOSから使用するのとまったく同じ動作を取得します。これには、Linux / GTKおよびMacでのオートコンプリートが含まれます(Windowsでもオートコンプリートが提供されているかどうかはわかりません)。
その目的のためだけにSWTを含める価値があるかどうかはまったくわかりませんが、この代替案について言及したいと思います。
自動機能を追加した場合は、テキストフィールドにアクセスする必要がありますが、通常の方法ではアクセスできません。
ある種のハックがあり、すべてのコンポーネントを検索してから、テキストフィールドのインスタンスを見つけてそれを返します。
これがコードです。
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
拡張クラスにバグがある場合は報告してください。ありがとう
DocumentListener
ファイルチューザーでファイルパスとファイル名を保持するTextFieldにを追加できる独自のFileChooserを実装するのはどうですか。で上記を実行できるかどうかわからないJFileChooser
。ただし、ファイルチューザーの動作を、追加されたオートコンプリート機能とともにデフォルトのJFileChooserと一致させたい場合は、ある程度のコードが必要になります。