Mac OS X中是否存在使用JFileChooser.showDialog(Component,String)设置标题的错误?

ags*_*ags 4 java macos swing jfilechooser

搜索不会解决此问题.

我正在使用简单的代码来显示带有自定义标题和接受按钮的JFileChooser对话框:

JFileChooser fc = new JFileChooser();
fc.showDialog(null,"MyText");
Run Code Online (Sandbox Code Playgroud)

在Windows 7上,这按预期工作:显示"保存"对话框,"接受"按钮对话框标题上的"保存"替换为"MyText" .

但是,在Mac OS X上,只更改了"接受"按钮文本 - 对话框标题为空白.我正在使用Java SE 7和MacOS 10.8.5.

通过在上面两者之间插入这一行:

fc.setDialogTitle("MyText");
Run Code Online (Sandbox Code Playgroud)

显示正确的标题.这是一个已知问题,和/或其他人是否可以重现此行为?

icz*_*cza 7

您在Windows上遇到的不是预期的行为(因为它没有记录),它只是一个实现副作用.

showDialog()用于显示定制对话框(例如不是开放也不保存对话框).它有一个参数来指定批准按钮的文本.如果没有使用该setDialogTitle()方法设置标题,则实施任意选择使用批准按钮的文本作为Windows操作系统上的标题,但是这在任何地方都没有记录,您不应指望这个工作.

如果您想要自定义标题,请使用setDialogTitle().如果您需要自定义批准按钮文本,请使用setApproveButtonText().显然showDialog()也需要批准按钮的文本,在这种情况下你不需要先调用setApproveButtonText().

如果需要"打开"对话框,请使用该showOpenDialog()方法.如果需要"保存"对话框,请使用showSaveDialog().仅showDialog()在需要自定义对话框时使用.

  • 并支持答案(+1),JavaDocs ... [`public int showDialog(Component parent,String approveButtonText)`](http://docs.oracle.com/javase/7/docs/api/javax/摆动/ JFileChooser.html#的ShowDialog(java.awt.Component中,%20java.lang.String)) (3认同)