对于使用Apache PDFBox合并PDF文件的简单Swing应用程序我使用JFileChooser
来选择一个或多个PDF文件并将它添加到JList
。 到目前为止没有问题。将文件添加到JList后清除JFileChooser选项
让我困扰的是,当我单击按钮再次添加另一个文件/文件时,先前的选择仍然存在于JFileChooser中,我不希望这样,选择应该最初为空。
我试过,但它既不工作,也不抛出异常:
pdfFileChooser.setSelectedFile(null);
下面是相关代码:
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);
}
}
}
}
如何从JFileChooser中取消选择所以没有文件/文件最初是否被选中?
+1错误可能是没有明确的方法来清除当前的选择。人们可能希望传递null会做到这一点,但API显然没有指定这种行为。没有提及在我能找到的任何地方清除当前选择。 –
@Jim同意,文档中没有任何建议如果您向'setSelectedFile'方法传递'null'将会发生什么 – MadProgrammer
不错,此作品,谢谢:) 这样做就足够了: 'File currentDirectory = fc.getCurrentDirectory(); //黑客提醒 fc.setSelectedFile(new File(“”)); fc.setCurrentDirectory(currentDirectory);' – devrys