Para una aplicación Swing simple para combinar archivos PDF con Apache PDFBox estoy usando un JFileChooser
para seleccionar uno o varios archivos PDF y agregarlos a un JList
. Sin problemas hasta el momento.Borrar la selección de JFileChooser después de agregar archivos a una JList
Lo que me molesta es que la selección anterior persiste en el JFileChooser cuando hago clic en el botón para agregar otro archivo/archivos de nuevo, no quiero esto, la selección debería estar inicialmente vacía.
He intentado esto, pero ni obras ni se emite una excepción:
pdfFileChooser.setSelectedFile(null);
Este es el código correspondiente:
pdfFileChooser.setAcceptAllFileFilterUsed(false);
pdfFileChooser.setMultiSelectionEnabled(true);
pdfFileChooser.setFileFilter(new FileFilter() {
@Override
public boolean accept(File arg0) {
return arg0.getName().endsWith(".pdf");
}
@Override
public String getDescription() {
return "*.pdf";
}
});
JButton btnAddFile = new JButton("Add file");
btnAddFile.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
if(pdfFileChooser.showOpenDialog(frame) == JFileChooser.APPROVE_OPTION) {
addFileToList(pdfFileChooser.getSelectedFiles());
pdfFileChooser.setSelectedFile(null);
}
}
});
private void addFileToList(File[] filesToAdd) {
if((filesToAdd != null) && (filesToAdd.length > 0)) {
DefaultListModel model = (DefaultListModel)listFiles.getModel();
for(File file : filesToAdd) {
if(!model.contains(file)) {
model.addElement(file);
}
}
}
}
¿Cómo puedo eliminar la selección de la JFileChooser así que no hay archivos/archivos es/son inicialmente seleccionados?
+1 El error puede ser que no hay una forma explícita de borrar las selecciones actuales. Uno podría esperar que pasar null lo haría, pero la API claramente no especifica ese comportamiento. No hay mención de borrar las selecciones actuales en cualquier lugar que pueda encontrar. –
@Jim estuvo de acuerdo, no hay nada en los documentos que sugiera lo que pasaría si pasa un 'nulo' al método' setSelectedFile' – MadProgrammer
Bueno, esto funciona, gracias :) Es suficiente para hacer esto: 'Archivo currentDirectory = fc.getCurrentDirectory(); // Hack alert fc.setSelectedFile (new File ("")); fc.setCurrentDirectory (currentDirectory); ' – devrys