Java JFileChooser文件名

Java JFileChooser文件名,java,swing,jfilechooser,Java,Swing,Jfilechooser,我对JFileChooser有问题。我将其嵌入到自定义对话框中,自定义对话框有自己的“确定”和“取消”按钮,并且该对话框不可更改 因此,我将JFileChooser.setControlButtonsAreShown设置为false,以隐藏按钮。单击自定义对话框的“确定”按钮,我调用JFileChooser.getSelectedFile以获取所选文件 但有一个问题。如果我在文件列表中选择一个目录或文件,或者单击“主页”或“桌面”等特殊按钮,那么一切都可以正常工作。因此,我在选择器中选择一个文件

我对
JFileChooser
有问题。我将其嵌入到自定义对话框中,自定义对话框有自己的“确定”和“取消”按钮,并且该对话框不可更改

因此,我将
JFileChooser.setControlButtonsAreShown
设置为
false
,以隐藏按钮。单击自定义对话框的“确定”按钮,我调用
JFileChooser.getSelectedFile
以获取所选文件

但有一个问题。如果我在文件列表中选择一个目录或文件,或者单击“主页”或“桌面”等特殊按钮,那么一切都可以正常工作。因此,我在选择器中选择一个文件(该选择器使用文件名更新文件名字段)

但是现在,如果我通过单击文件名文本字段并编辑文件名来更改文件名,那么当我随后调用
JFileChooser.getSelectedFile
时,我会得到原始文件的名称,而不是反映我键入的新文件名的修改后的文件对象

因此,我怀疑单击
JFileChooser
的Approve按钮会导致返回的文件对象被更新。我的怀疑还基于这样一个事实:如果我监听类型为
SELECTED\u FILE\u CHANGED\u PROPERTY
的PropertyChangeEvent,则仅在使用选择器或特殊按钮时调用,而不是在发生textfield end编辑时调用

有人知道这个问题的解决办法吗?我还尝试了
JFileChooser.approveSelection
,但没有明显效果


谢谢。

请编辑您的问题,以包含一个显示您描述的问题的对话框。您是否尝试将对话框类型设置为
保存\u对话框
?我认为它将允许考虑修改的文件名。更改对话框类型似乎不会改变这一点。但是,按“批准”/“打开”/“保存”按钮确实会修改返回的文件。“修复”此问题的一种方法是检索与JFileChooser关联的FileChooserUI,然后尝试检索“批准”按钮并在其上使用“doClick()”(在检索所选文件之前),或者直接请求在文本字段中输入的文件名(使用getFileName(),该文件名可在
BasicFileChooserUI
上获得)。也许有人会有更好的解决办法。嗨,纪尧姆,是的,如果我能doClick(),我也有同样的想法。甚至查看了FileChooserUI,但没有看到它是抽象的和子类化的doh!!但是,BasicFileChooserUI.getApproveButton()返回null。但是getFileName会返回更新后的值,因此很容易获取SelectedFile并替换文件名部分。谢谢你的帮助help@JohnSmith他想打电话来获取选择器的实际
FileChooserUI
。还是你真的这么做了?