Я пытаюсь выбрать файл с некоторым расширением, например, "* .jpg" с нижним кодом.
FileDialog dialog = new FileDialog(owner, "Select Files");
dialog.setMode(FileDialog.LOAD);
dialog.setDirectory(System.getProperty("user.home"));
dialog.setLocationRelativeTo(null);
dialog.setMultipleMode(true);
dialog.setVisible(true);
dialog.setFilenameFilter(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
return name.endsWith(".jpg");
}
});
ИЛИ
FileDialog dialog = new FileDialog(owner, "Select Files");
dialog.setMode(FileDialog.LOAD);
dialog.setDirectory(System.getProperty("user.home"));
dialog.setLocationRelativeTo(null);
dialog.setMultipleMode(true);
dialog.setVisible(true);
dialog.setFile("*.jpg");
В этом коде FileDialog распечатывает обычно, но файлфильтр не применяется.Я нашел ошибку этого кода, но я не могу это исправить.Потому что ошибка произошла в FileDialog.
Вы можете увидеть под кодом в java.awt.FileDialog.
public void setFile(String file) {
this.file = (file != null && file.equals("")) ? null : file;
FileDialogPeer peer = (FileDialogPeer)this.peer;
if (peer != null) {
peer.setFile(this.file);
}
}
....
public synchronized void setFilenameFilter(FilenameFilter filter) {
this.filter = filter;
FileDialogPeer peer = (FileDialogPeer)this.peer;
if (peer != null) {
peer.setFilenameFilter(filter);
}
}
Когда я отлаживаю этот код, peer равен нулю.из-за этого setFile и setFilternameFilter не работают.Этот узел является полем компонента, и я не могу найти код инициализации.Также я нахожу этот метод в javadoc
Toolkit.createFileDialog(FileDialog target)
Но я не могу понять, как использовать этот метод.В моем проекте я не могу использовать JFileChooser.Как я могу применить фильтр файлов в этой ситуации?