java – 将文件添加到JList后清除JFileChooser选择
发布时间:2020-05-24 12:03:24 所属栏目:Java 来源:互联网
导读:对于用于将PDF与Apache PDFBox合并的简单Swing应用程序,我使用JFileChooser选择一个或多个PDF文件并将其添加到JList. 到目前为止没问题. 令我困扰的是,当我单击按钮再次添加另一个文件/文件时,之前的选择仍然存在于JFileChooser中,我不希望这样,选择应该最初
|
对于用于将PDF与Apache PDFBox合并的简单Swing应用程序,我使用JFileChooser选择一个或多个PDF文件并将其添加到JList.
令我困扰的是,当我单击按钮再次添加另一个文件/文件时,之前的选择仍然存在于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中删除选择,以便最初没有选择文件/文件? 解决方法这是,恕我直言,一个错误.(正如已经明确指出的那样,“bug”可能是一个强有力的词,因为API没有说明如果将null传递给selectedFile方法会发生什么.相反,建议它是一个缺失的功能可能更合理) 尝试这样的事…… JFileChooser fc = new JFileChooser();
fc.showOpenDialog(null);
File selected = fc.getSelectedFile();
System.out.println("You selected " + selected);
File currentDirectory = fc.getCurrentDirectory();
// Hack alert
fc.setSelectedFile(new File(""));
fc.setCurrentDirectory(currentDirectory);
fc.showOpenDialog(null);
selected = fc.getSelectedFile();
System.out.println("You selected " + selected);
基本上,所选文件的更改似乎取决于UI,并依赖于SELECTED_FILE_CHANGED_PROPERTY属性更改事件.似乎发生的是,当涉及到更改(特别是)所选文件文本字段时,它忽略了空引用. 我使用Metal和Windows外观测试了这个 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
