Estou com um problema… Tenho arquivos no meu Servidor… Os quais serão abertos através do JFileChooser…
Porém, o JFileChooser não deve possibilitar a navegação entre diretórios… Restringindo o usuario a abrir apenas os arquivos de extenção que estão no filtro, e que pertençam exclusivamente ao diretório já aberto por default…
Porém não estou encontrando nada parecido… Pelo menos pra eu ter uma noção… Então alguém tem alguma idéia?
Tipo, como eu desabilitaria os botões de atalho para o desktop, meus documentos, subir um diretorio…
Quanto a navegação é “complicado” acho que apenas com uma regra de poder ler “apenas” o diretorio que você abre o JFileChooser. ( Isso em *unix é perfeitamente possivel )
Quanto aos arquivos acho que usando um Filter no FileChooser resolve, ou não ?
Cara o unico jeito que eu achei de fazer isso foi assim :
Eu defini um diretorio inicial que o usuario nao vai poder mudar.
Ai eu adiciono um PropertyChangeListener e quando o evento for DIRECTORY_CHANGE_PROPERTY eu “seto” o diretorio corrente pro diretorio inicial.
Meio pedreiro, mas funcionou
public void showFileChooser() {
final File initialdir = new File(".");
final JFileChooser fc = new JFileChooser(initialdir);
fc.addPropertyChangeListener(new java.beans.PropertyChangeListener() {
public void propertyChange(java.beans.PropertyChangeEvent e) {
if (e.getPropertyName().equals(JFileChooser.DIRECTORY_CHANGED_PROPERTY)) {
fc.setCurrentDirectory(initialdir);
}
}
});
fc.setFileSelectionMode(JFileChooser.FILES_ONLY);
javax.swing.filechooser.FileFilter filter = new javax.swing.filechooser.FileFilter() {
public boolean accept(java.io.File file) {
if (file.isDirectory()) {
return true;
} else {
if(file.getName().endsWith(".txt")) {
return true;
}
}
return false;
}
public String getDescription() {
return "Text File (*.txt)";
}
};
fc.setFileFilter(filter);
if ( fc.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) {
String filename = fc.getSelectedFile().getPath();
log.info("Opening : " + filename);
openAndLoadFile(filename);
}
}
Agora estou tentando aplica-la ao componente de atalhos de navegação =p (Desktop, Meus Documentos e etc).
Mas foi muito boa msm =D
Se alguem souber como capturar a barra de atalhos da esquerda do JFileChooser dê sua dica pra nós
Interessante é que esta barra de atalhos não pertence ao layout BorderLayout do componente… Se tiramos o componente localizado no WEST, é retornado NullPointerException (ou seja, nenhum Component), e se tiramos o componente do CENTER some apenas a tela de navegação de Files…