Java 取消在JFileChooser中选择文件,而不关闭对话框
我正在尝试使用Java 取消在JFileChooser中选择文件,而不关闭对话框,java,swing,joptionpane,jfilechooser,save-as,Java,Swing,Joptionpane,Jfilechooser,Save As,我正在尝试使用JFileChooser实现“另存为”对话框。该对话框应该允许用户键入文件名并单击保存,此时将返回并创建新的文件对象 这是可行的,但当我尝试添加另一个对话时,我遇到了一个问题。具体来说,我想使用JOptionPane创建一个“文件已经存在”对话框,当用户试图创建一个与预先存在的文件同名的文件时(这是许多程序中的一个常见功能)发出警告。对话框提示“文件已存在。是否替换它?”(是/否)。如果用户选择“是”,则文件对象应正常返回。如果用户选择“否”,则JFileChooser应保持打开状
JFileChooser
实现“另存为”对话框。该对话框应该允许用户键入文件名并单击保存,此时将返回并创建新的文件对象
这是可行的,但当我尝试添加另一个对话时,我遇到了一个问题。具体来说,我想使用JOptionPane
创建一个“文件已经存在”对话框,当用户试图创建一个与预先存在的文件同名的文件时(这是许多程序中的一个常见功能)发出警告。对话框提示“文件已存在。是否替换它?”(是/否)
。如果用户选择“是”,则文件对象应正常返回。如果用户选择“否”,则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());
}
如果用户选择“否”(即对话框关闭时选择的文件为null
),则此操作将成功取消对文件的选择。然而,随后它也立即结束了对话
我希望在发生这种情况时,对话保持开放。有什么方法可以做到这一点吗?如果JFileChooser不想覆盖文件,您可以简单地重新打开它
对话框将具有与以前相同的目录,因此用户无需再次导航 重写approveSelection()
方法。比如:
JFileChooser chooser = new JFileChooser( new File(".") )
{
public void approveSelection()
{
if (getSelectedFile().exists())
{
System.out.println("Do You Want to Overwrite File?");
// Display JOptionPane here.
// if yes, super.approveSelection()
}
else
super.approveSelection();
}
};