java取消在JFileChooser中选择文件而不关闭对话框
我正在尝试使用JFileChooser
实现“另存为”对话。该对话框应该允许用户键入文件名并单击保存,此时将返回并创建新的File
对象
这是可行的,但当我尝试添加另一个对话时,我遇到了一个问题。具体地说,我想创建一个“文件已经存在”对话框,使用JOptionPane
来警告用户,如果他们试图创建一个与预先存在的文件同名的文件(这是许多程序中的常见功能)。对话提示"File <filename> already exists. Would you like to replace it?" (Yes/No)
。如果用户选择“是”,则文件对象应正常返回。如果用户选择“否”,则JFileChooser
应保持打开状态,并等待选择/创建另一个文件
问题是我找不到取消选择的方法(如果用户选择“否”)并保持对话框打开。我有密码:
public void saveAs()
{
if (editors.getTabCount() == 0)
{
return;
}
final JFileChooser chooser = new JFileChooser();
chooser.setMultiSelectionEnabled(false);
chooser.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent arg0)
{
File f = chooser.getSelectedFile();
if (f.exists())
{
int r = JOptionPane.showConfirmDialog(
chooser,
"File \"" + f.getName() +
"\" already exists.\nWould you like to replace it?",
"",
JOptionPane.YES_NO_OPTION);
//if the user does not want to overwrite
if (r == JOptionPane.NO_OPTION)
{
//cancel the selection of the current file
chooser.setSelectedFile(null);
}
}
}
});
chooser.showSaveDialog(this);
System.out.println(chooser.getSelectedFile());
}
如果用户选择“否”(即对话框关闭时选择的文件为^{
我希望在发生这种情况时,对话保持开放。有没有办法做到这一点
# 1 楼答案
重写
approveSelection()
方法。比如:# 2 楼答案
如果JFileChooser不想覆盖文件,你可以简单地重新打开它
对话框的目录将与之前相同,因此用户无需再次导航