對於使用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